关于C语言的数组问题?

#include<stdio.h>intmain(){intx;scanf("%d",&x);doublesum=0;intcnt=0;intnumber[100];wh... #include <stdio.h>
int main(){
int x;
scanf("%d",&x);
double sum =0;
int cnt =0;
int number[100];

while(x!=-1){
number[cnt] = x;
cnt = cnt+1;
sum = sum +x;
scanf("%d",&x);
}
double average;
average = sum/cnt;
if (cnt >0){
printf("您输入的数的平均数是%.1f",average);
int i;
for(i=0;i<cnt;i++){
if(number[i]>average){
printf("%d ",number[i]);
}
}
}
return 0;
}
输入:1 2 3
结果:平均数是2.03
问题:我的有效值设置的是%.1f,为什么最后的结果精度是两位数了?且为什么结果会是2.03,那个03是怎么出来的?
展开
 我来答
White_MouseYBZ
2019-12-05 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6516万
展开全部
你看走行了——输出是2.0,3是printf("%d ",number[i]);打出来的,因为3>2呀!建议把printf("您输入的数的平均数是%.1f",average); 改成printf("您输入的数的平均数是%.1f\n",average); ,即在%.1f的f后加一个\n——输入、输出格式常常都是很重要的!
microroom
科技发烧友

2019-12-05 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1577万
展开全部
平均数是2.0,3是输出的大于平均数的数。输出没错,只是输出格式的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萍水e相逢
2019-12-05 · TA获得超过3万个赞
知道大有可为答主
回答量:5.9万
采纳率:46%
帮助的人:1.4亿
展开全部
一个输出结束后 用 \n换行

这样两次输出不会在一起了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
自我编程
2019-12-05 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部
你看到的2.03是2个printf语句的输出。
保留1小数是2.0。后面那个3是printf("%d",number[i])的输出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式