当前位置: 代码迷 >> C语言 >> [求助]怎么不能循环?
  详细解决方案

[求助]怎么不能循环?

热度:79   发布时间:2005-10-26 07:52:00.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();
}  
搜索更多相关的解决方案: 100  include  person  

----------------解决方案--------------------------------------------------------
循环条件有问题, 如果输入的是个大于0的数 就成死循环了
而且 好象浮点数不能比较大小吧!
----------------解决方案--------------------------------------------------------
循环条件没有问题,但是scanf("%f",&p[m]); 取地址符号掉了。p是数组p[0]的地址,但p[m]是一个元素,是数值,不是地址,scanf()的用法是scanf("数据类型",地址); 好像有很多人不大清楚。
----------------解决方案--------------------------------------------------------
#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个数据的大小吧,那你输入的时候就错了;
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;
----------------解决方案--------------------------------------------------------
语法错误
----------------解决方案--------------------------------------------------------
以下是引用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]是为了保证有足够的空间,防止溢出,并没说一定要用完啊。
----------------解决方案--------------------------------------------------------
确实是scanf语句出了问题!
另外楼上的高手说得很有道理,但是通过在数组中输入0来作为循环终止条件的方法不太好
----------------解决方案--------------------------------------------------------
  相关解决方案