永发信息网

C语言 帮忙检查程序错在哪,怎么改?谢谢

答案:3  悬赏:20  手机版
解决时间 2021-03-02 10:51
C语言 帮忙检查程序错在哪,怎么改?谢谢
最佳答案
数组的名字本身就是地址,所以不用加。单个变量需要加取地址。
scanf("%d",a[i]);
如有疑问请您追问,满意的话记得采纳哦~~~追问还是不行,编译行但运行不行追答兄弟,我知道了,对不起,刚刚告诉你错了。数组名确实不加取地址符,但是你这个是数组中的某一个,所以你的没错。
你的问题出现在输入,我看你输入是用逗号分隔,你改用空格或回车进行分隔就行了。


追问不行一样的结果追答#include 

int main(void) {
int i,n=0,sum=0,a[50];float average,variance=0;
for(i=0;i<50;i++)
{
scanf("%d",&a[i]);
if(a[i]<0||a[i]>100) break;
else { sum+=a[i];n++; }
}
average=sum/n;
for(i=0;i variance+=(a[i]-average)*(a[i]-average);
printf("%5f,%5f,%d",average,variance,n);
return 0;
}

你看我这个运行成功了啊
追问奇怪你的我的怎么不行 都一样追答我把你的代码原样复制到我的编译器里,用空格做分隔符输入,结果输出正常,所以你的代码没问题。你能给我发一下你用空格做分隔符的运行过程吗?

追问好
好像可以了我在试试谢谢你,为什么,不行呢用","不行空格行追答如果scanf的格式控制没有逗号,则逗号不作为分隔符。
如果scanf的格式控制没有空格,则空格和回车作为分隔符能终止scanf。追问
格式控制是什么不懂不知道为什么之前运进行,现在都行了之前都不行好奇怪啊我老师讲scanf""就原样输入就行空格不影响追答格式控制就是括号里引号里的东西,比如
%d就是格式控制。

你这个逗号为什么比前面那个逗号空格大?看起来像是中文符号呢。


追问是中文(简体)追答事实证明,逗号也可以,与空格一样,是你的逗号有问题,英文逗号才行。

追问
这是英文吗追答你按ctrl+空格或ctrl+shift把下面调整成什么都没有就行了。
没有输入法的时候就是英文输入。
这样格式控制的时候:printf("%5f")代表输出至少5位,如果不够5位,前面加空格。
这样格式控制的时候:printf("%.5f")代表输出小数点后5位,如果不够5位,补充0或随机数(不同编译器不一样)追问懂了,谢谢追答事实证明,不能用逗号做分隔符,否则逗号就会被当做不是0至100的数,执行break了,不信你试试多输入几个数
全部回答
你把代码复制粘贴出来下,这样也方便帮你修改呀。追问帮我看看追答你把代码复制粘贴出来啊,光看图我没法修改啊,我跟你说还不如直接在你的代码里指出哪里出错了,然后帮你修改啊。追问发了追答没有啊,怎么回事??追问有一个已送达,再发,不知道为什么发不出去#include
int main()
{
int i,n=0,sum=0,a[50];float average,variance=0;
for(i=0;i<50;i++)
{scanf("%d",&a[i]);
if(a[i]<0||a[i]>100) break;
else {sum+=a[i];n++;
}
}
average=sum/n;
for(i=0;i variance+=(a[i]-average)*(a[i]-average);
printf("%5f,%5f,%d",average,variance,n);
return 0;
}追答#include 
int main()
{
int i,n=0,sum=0,a[50];
float average,variance=0;
for(i=0;i<50;i++)
{
scanf("%d",&a[i]);
if(a[i]<0 || a[i]>100)
{
// break;  //这里你输入错误的话,应该是要结束程序的吧,break只是退出for循环,会继续往下执行
printf("Input Error! ");
return -1; //直接退出程序
}
else
{
sum+=a[i];
i++; //这里应该是i++,而不是n++
}
}
//下面的部分没什么问题
}追问直接退出程序 怎么还能计算方差追答输入错误的情况下,直接退出程序啊追问是if(里)错误退程序 但退方差怎么办要同时计算方差和平均数追答#include 
int main()
{
int i,n=0,sum=0,a[50];
float average,variance=0;
for(i=0;i<50;i++)
{
scanf("%d",&a[i]);
if(a[i]<0 || a[i]>100)
break;  //输入结束
else
{
sum+=a[i];
n++;
}
}
average=(1.0*sum)/n;
for(i=0;i   variance+=(a[i]-average)*(a[i]-average);
printf("%5f,%5f,%d",average,variance,n);
return 0;
}
现在应该是没问题了的。
追问我的和你的都一样啊追答我的运行结果是:
10 10 -1
10.000000,0.000000,2
跟你的不一样哦追问%5f是输出小数点后5位追答不是的,如果要输出小数点后5位,应该写成这样:
%.5f追问%5f为什么是输入小数点后6位 那%5f代表什么意思呢追答%5f表示输出域宽为5,右对齐,如果实际长度大于5,就按实际长度的输出出来,如果不足5,则用空格补齐。
#include
int main()
{
int i;
float n=0;
float sum=0,a[50];
float ave=0,var=0;
for(i=0;i<50;i++)
{ scanf("%f",&a[i]);
if(a[i]>=0 && a[i]<= 100)
{
sum=sum+a[i];
n++;
}
else
break;
}
ave = sum/n;
for(i=0;i {
var=var + (a[i]-ave)*(a[i]-ave);
}
printf("%f %f",ave,var);
return 0;
}
你整型都改成浮点型即可追问n是学生成绩个数用int也可行吧追答不行,因为你的n参与了除法运算,如果设置成int型会将结果强制转换成int型,小数部分会丢失。
当然你也可以把n设置成int型,但是要在运算中将n强制转换成浮点型,就是将n写为(float)n即可追问如果average(int)=sum(int)/n(float)ave值是f还是int值是小数还是整数
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
南洋长胜酒店在什么地方啊,我要过去处理事情
大写字母说成big a对吗?
车险第三者20万多少钱
手机扫码租杭州公共自行车怎样操作
福建漳浦恒龙汽车运输有限公司地址有知道的么
羊杂需要加什么才能洗白净
裂魂双气息 剑宗裂魂双气息怎么打
【游标卡尺读数练习】...下几种图示的练习:其
临夏风光作文100字
林允儿为什么抢wuli雪莉的镜头,那次雪莉戴了
ktv里闪烁的灯光叫啥
今天是2017年5月7号,请问减掉305天是几月几
万福门业在哪里啊,我有事要去这个地方
没的拼音是什么
拱土灶,拱鸡需要什么程序啊?怎么拱?下什么
推荐资讯
古代玉匣记出自那一年
股权转让怎么办理? 15分
如何预估新功能上线后带来的数据变化?
怎样计算椭圆形油罐的容积
求韩剧 上流社会 高清网盘资源~~
人站在体重秤上测量体重,静止时测出体重为P
环升白铁通风工程部(分部)在什么地方啊,我要
立可瘦拨筋减肥我想知道这个在什么地方
在哪里可以买到优形鸡胸肉?
东海外国语学校六年级考试成绩
60长,35宽,鱼缸能养几条鱼鹦鹉鱼类的热带鱼
怎么让coolpad手机显示它的电量百分比
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?