看看我的这个程序哪错了?

来源:百度知道 编辑:UC知道 时间:2024/06/25 05:06:38
#include "stdio.h"
void main()
{ int a,b,c,sum;float x;
b=0,sum=0,c=0;
printf("请输入10个整数\n");
while (c<=10)
{scanf ("%d",&a);
if(a>0) b++;
sum=sum+a;
c++;}
x=sum/10;
printf("正数有%d个,10个数的平均值是%7.2f\n",b,x);
}

改正后为:
----------
#include "stdio.h"
void main()
{ int a,b,c,sum;float x;
b=0,sum=0,c=0;
printf("请输入10个整数\n");
while (c<10)
{scanf ("%d",&a);
if(a>0) b++;
sum=sum+a;
c++;}
x=(float)sum/10;
printf("正数有%d个,10个数的平均值是%7.2f\n",b,x);
}
----------
有两处改动:
第一处是把第六行的c<=10改为c<10,因为输入第1个数之后,c从0变为1,输入第2个数之后,c从1变为2,……输入第10个数之后,c从9变为10,此时满足c<=10,所以程序继续要求输入,结果一共输入11个数字。改为c<10就正确了。

第二处是在倒数第三行的sum前加上(float),因为sum是整数,C语言里两个整数相除结果仍为整数,加上(float)后,(float)sum成为一个整体,这个整体的值和sum一样,但是该整体是浮点数,C语言里浮点数除以整数结果是浮点数,因此加上(float)才正确。

while (c<=10)这个循环多了一次0-9是十次 <=10就多了
x=sum/10;sum和10都是int 类型计算结果也是int类型 有用强制类型转换x=(float)sum/10; 就行了