我的程序错在哪

来源:百度知道 编辑:UC知道 时间:2024/06/18 04:53:41
编写一个程序,用户随便输入任意的非0的数字,等到输入“0”的时候,输出”输入的数字个数、总和以及平均数
main()
{int i,a,s=0;
while(a!=48)
{scanf("%d",&a); i++;
s=s+a;}
printf("%d,%d,%d",i,s,s/i);}

有两个问题,首先i没有初始化,需要先讲i赋值为0;
然后while(a!=48)
中你是按%d整形输入的所以应为while(a!=0)
[如果按字符形输入是while(a!=48)]
正确程序如下
#include<stdio.h>
int main()
{
int i=0,a,s=0;
while(a!=0)
{scanf("%d",&a);
i++;
s=s+a;}
printf("%d,%d,%d",i,s,s/i);
return 0;
}
答案输出,闪一下程序就关闭了
为了方便看到答案
可以在scanf("%d",&a); 和
printf("%d,%d,%d",i,s,s/i);
后面加getchar();
另外这个程序将0也计算上了.因为输入在while后面
如果不需要计算0;可以输出前将i-1.

下面是我改的:
main()
{int i=0,a,s=0;
while(a!=0)
{scanf("%d",&a); i++;
s=s+a;}
printf("%d,%d,%d",i,s,s/i);}

(1)i没有初始化
(2)结束标志是0不是48

while里面应该是a!=0吧

可能楼主是看了ASCII吧,0在ASCII中的十进制是48,但应该注意的是,0是字符格式,即char,而楼主已定义了a为int,所以要将a!=48改为a!=0就可以了。如果要用char格式,就要进行格式转换,比较麻烦
我看这样改吧:
main()
{int i=1,a,s=0,flag=1;//flag为判断循环结束标志
while(flag==1)
{scanf("%d",&a);i++;s=s+a;