标题:[求助]怎么不能循环?
只看楼主
xiehongyou
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2004-8-29
 问题点数:0 回复次数:7 
[求助]怎么不能循环?
#include "stdio.h"
#include "conio.h"
main()
{
int b=0,j=0,q=0,m=0;
float p[100],sum=0;
scanf("%f",p[m]);
while(p[m]>0)
    {sum=sum+p[m];
     if(p[m]>=100) b++;
      else if(p[m]>=90) j++;
        else q++;
     m++;
     scanf("%f",p[m]);
   }
printf("zongfeng=%f   pingfen=%f    person=%d",sum,sum/m,m);
getch();
 }  
搜索更多相关主题的帖子: 100 include person 
2005-10-26 07:52
wenyong
Rank: 1
等 级:新手上路
帖 子:251
专家分:0
注 册:2005-8-9
得分:0 
循环条件有问题, 如果输入的是个大于0的数 就成死循环了
而且 好象浮点数不能比较大小吧!

2005-10-26 08:45
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
得分:0 
循环条件没有问题,但是scanf("%f",&p[m]); 取地址符号掉了。p是数组p[0]的地址,但p[m]是一个元素,是数值,不是地址,scanf()的用法是scanf("数据类型",地址); 好像有很多人不大清楚。

我的征途是星辰大海
2005-10-26 13:08
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
得分:0 
#include "stdio.h" #include "conio.h" main() { int b=0,j=0,q=0,m=0; float p[100],sum=0; scanf("%f",&p[m]); while(p[m]>0) {sum=sum+p[m]; if(p[m]>=100) b++; else if(p[m]>=90) j++; else q++; m++; scanf("%f",&p[m]); } printf("zongfeng=%f pingfen=%f person=%d",sum,sum/m,m); getch(); } 我已经调试过了,没问题。

我的征途是星辰大海
2005-10-26 13:11
woshiyfk
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2005-3-2
得分:0 
好象是要判断100个数据的大小吧,那你输入的时候就错了;
for(m=0;m<100;m++)
  scanf("%d",&p[m]);

如果是用p[m]的大小当循环判断的话   就象下面这样定义p[m]有101个元素  第101个的值为0就能跳出循环了。
for(m=0;m<100;m++)
  scanf("%d",&p[m]);
    p[101]=0;

2005-10-27 09:34
jsbjzy
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-10-27
得分:0 
语法错误
2005-10-27 14:54
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
得分:0 
以下是引用woshiyfk在2005-10-27 9:34:06的发言: 好象是要判断100个数据的大小吧,那你输入的时候就错了; for(m=0;m<100;m++) scanf("%d",&p[m]); 如果是用p[m]的大小当循环判断的话 就象下面这样定义p[m]有101个元素 第101个的值为0就能跳出循环了。 for(m=0;m<100;m++) scanf("%d",&p[m]); p[101]=0;
语法没有错误,不信你上机试试 #include "stdio.h" #include "conio.h" main() { int b=0,j=0,q=0,m=0; float p[100],sum=0; scanf("%f",&p[m]); while(p[m]>0) {sum=sum+p[m]; if(p[m]>=100) b++; else if(p[m]>=90) j++; else q++; m++; scanf("%f",&p[m]); } printf("zongfeng=%f pingfen=%f person=%d",sum,sum/m,m); getch(); } 蓝色部分的语句保证了数据的循环依次输入,并在不合条件时跳出循环。在这里比用for循环好,如果用for语句,就会有不合要求的数据。还有,如果我只想输入15个数据呢?p[100]是为了保证有足够的空间,防止溢出,并没说一定要用完啊。

我的征途是星辰大海
2005-10-27 19:17
failure
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-10-27
得分:0 
确实是scanf语句出了问题!
另外楼上的高手说得很有道理,但是通过在数组中输入0来作为循环终止条件的方法不太好
2005-10-27 20:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-31420-1-1.html




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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.071638 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved