我看了六个钟头代码就是看不出错误!运行出错.高手帮忙解答!
int main(){
int counter;
int grade;
int total;
float average;
total=0;
counter=1;
printf ("enter grade, -1 to end:");
scanf ("%d",&grade);
while ( grade != -1){
total=total+grade;
counter=counter+1;
printf ("enter grade, -1 to end:");
scanf("%d",&grade);
}
if (counter != 0){
average=( float ) total / counter;
printf("class average is %.2f\n",average);
}
else {
printf("cuowu\n");
}
getch();
return 0;
}
问题出在比如你输入 -1 然后回车 居然不会显示 "cuowu" 请教
----------------解决方案--------------------------------------------------------
counter=1;
......
if (counter != 0){
counter永远不可能等于0
----------------解决方案--------------------------------------------------------
不够明确!
那如何让他显示? ----------------解决方案--------------------------------------------------------
回复 2# 的帖子
版主.不够明确呢.那如何让他显示出 "cuowu"
----------------解决方案--------------------------------------------------------
counter=1;
你在最开始就已经将counter的值设为1了
所以那个判断一直为真,当然没错误了
----------------解决方案--------------------------------------------------------
if(counter==1)
printf("错了吧,小子");
----------------解决方案--------------------------------------------------------
counter=0
----------------解决方案--------------------------------------------------------
维生素C
counter=1;if (counter != 0)
你已经设置了1了!!!
就不用判断了!!!
----------------解决方案--------------------------------------------------------
C~~~
用指针看看可不可以解决问题!!! ----------------解决方案--------------------------------------------------------
回复 1# 的帖子:发现几个问题啊!
1.你要的是average,为什么还要来个 if 呢? 直接 average=( float ) total / counter,就可以啦,它就像当年日本鬼子无条件投降一样的!2.你的代码有冗余的。比如,while里面不要再写个 printf ("enter grade, -1 to end:");
scanf("%d",&grade);提示一下,有while之前那个scanf就可以输入所有的grade。都保存在内存缓冲区,遇到while时,在一个一个的取出来。
3.你应该正在学C++,请注意区分它和C的语法风格,还是有区别的!C中,一般来讲main()是void类型,而C++里面才是int,当然要语句return = 0了,它表示程序正常结束!
PS:误解和说错之处,请多包涵!
----------------解决方案--------------------------------------------------------