求助 关于do while无法赋值 |
如题,急需帮助,真是搞不懂,调试看了一下结果发现a没被赋值
运行结果看附件 代码是这样的 #include<stdio.h> #include<math.h> 🖐🌕🎂⁉🦦main() { float a=0,min=0,max=0,all=0,average=0,n=1; printf("输入10个学生成绩\n"); scanf("%lf",&a); min=a;🥷👒🔑🥱👁 max=a; do {scanf("%lf",&a); if(a<=min) min=a; if(a>=max) max=a; 🤙🎠🧊☯🦋 all=all+a; } while(++n<=9); average=all/10; printf("最大值:%lf\n最小值:%lf\n平均值:%lf\n",max,min,average);👨🚒🩳📠😰🤳 } 题目是求最大最小,这不是关键。百度过了,大一新生没办法了。。。。谢谢各位大佬 🤳🎠🍊🈚🪶
帖子热度 1.3万 ℃
|
|
输出double,float应该都是%f,百度一下,我不太记得了
|
#include<stdio.h>
int main( ) { int a,max,min,i; 🤝🌡🦞🈳🐶float sum=0,ave=0; printf("请输入学生的成绩:"); scanf("%d",&a); min=max=a; for(i=0;i<10;i++)👳🦺🔭😥👍 { scanf("%d",&a); if(a>max) max=a; if(a<min) min=a; sum+=a; 👳🦺🧯😄✋ } ave=sum/10; printf("最大值:%d\n,最小值:%d\n,平均值:%f\n",max,min,ave); } |
|
问题在于你定义变量时a等都是float型,但是在scanf格式化输入时表示的是double型格式来输入变量得值,这里就很隐蔽的产生了一次将double型转为float型的强转,这个问题就涉及到不同类型在计算机中存储的格式啦...总之就是要避免这样强转, 会发生一些不可预见的问题。所以你把类型统一下就好啦~
|
本来我已决定不会再回任何帖子了,当我览遍无数烂贴、痛恨生不逢时,行走在思想的戈壁荒原、穷山恶水之间,感到前途渺茫、万念俱灰之际,却突然看到这样一篇绝世好贴!我真是热泪纵横、感激涕零告诉自己如此经典之贴是一定要回的!这正是千百年来版友翘首以待的好贴啊!
|