| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 575 人关注过本帖
标题:北大PUK1003题
取消只看楼主 加入收藏
z8869113
Rank: 2
等 级:论坛游民
帖 子:44
专家分:14
注 册:2010-12-14
结帖率:75%
收藏
已结贴  问题点数:30 回复次数:2 
北大PUK1003题
这里先附上网址http://
以下是我的程序:
#include<stdio.h>
int main()
{
    int i,j=1;
    float a[5],n=2,s=0.5;        /*这里定义数组来存放输入的值*/
    for(i=0;i<5;i++)
        scanf("%f",&a[i]);
    for(i=0;i<5;i++)
    {
        if(a[i]<0.01||a[i]>5.20)    /*如果该数超出范围就直接换行*/
            printf("\n");
        else
    for(;a[i]>s;)        /*其他情况如果比s大就继续*/
    {
        n++;
        s+=(1/n);            /*s拿来累加*/
        j++;        /*这是计算片数的*/
        if(a[i]<=s)        /*当再加上一个数,a【i】被超过,就输出*/
        printf("%d card(s)\n",j);
        if(a[i]>=0.01&&a[i]<=0.5)
            printf("%d card(s)\n",j);
    }
    }
    return 0;
}
这样的话如果我输入1.2.3.4.5.没问题。
但是输入5.4.3.2.1的话就只能输出5的值。
我觉得就是s和j没还原。然后我改了一小小的地方
#include<stdio.h>
int main()
{
    int i,j=1;
    float a[5],n=2,s=0.5;        /*这里定义数组来存放输入的值*/
    for(i=0;i<5;i++)
        scanf("%f",&a[i]);
    for(i=0;i<5;i++,s=0.5,j=1)
    {
        if(a[i]<0.01||a[i]>5.20)    /*如果该数超出范围就直接换行*/
            printf("\n");
        else
    for(;a[i]>s;)        /*其他情况如果比s大就继续*/
    {
        n++;
        s+=(1/n);            /*s拿来累加*/
        j++;        /*这是计算片数的*/
        if(a[i]<=s)        /*当再加上一个数,a【i】被超过,就输出*/
        printf("%d card(s)\n",j);
        if(a[i]>=0.01&&a[i]<=0.5)
            printf("%d card(s)\n",j);
    }
    }
    return 0;
}
结果输入1.2.3.4.5就出现了我不知道的情况。。。求高人解救~~~半夜了,都被这个搞死了
2011-04-24 01:20
z8869113
Rank: 2
等 级:论坛游民
帖 子:44
专家分:14
注 册:2010-12-14
收藏
得分:0 
回复 2楼 『点点滴滴』
谢谢~我忘了给n回值了,下面if还放错了

[ 本帖最后由 z8869113 于 2011-4-24 18:20 编辑 ]
2011-04-24 18:12
z8869113
Rank: 2
等 级:论坛游民
帖 子:44
专家分:14
注 册:2010-12-14
收藏
得分:0 
回复 3楼 voidx
代码很简单,有点看不懂。。。虽然不符合要求,但是很有用。谢谢了
2011-04-24 18:28
快速回复:北大PUK1003题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016290 second(s), 8 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved