错误的编码:
#include<stdio.h>
int main()
{
double score,max=-1,min=11,sum=0,ave;
int i=1;
while(i<=9)
{
scanf("%lf",&score);
sum=sum+score;
if(min>=score)
min=score;
if(max<=score)
max=score;
i++;
}
ave=(sum-min-max)/7;
printf(".3%f\n",ave);
return 0;
}
正确答案应该是6.914.
分析:我们的结果是.36.914286,经过查找资料我们发现了该程序中的错误是printf(“.3%f”,ave),正确的格式应该是printf("%.3f",ave); .3的位置错了,所以我们的结果也就错了。
正确的代码:
#include<stdio.h>
int main()
{
double score,max=-1,min=11,sum=0,ave;
int i=1;
while(i<=9)
{
scanf("%lf",&score);
sum=sum+score;
if(min>=score)
min=score;
if(max<=score)
max=score;
i++;
}
ave=(sum-min-max)/7;
printf("%.3f\n",ave);
return 0;
}
疑惑:虽然这个程序为我们算出来正确的结果,但是与我的所想却不一样!这个程序是把所有的数据全都输入进去,输入多少都可以,但是计算机再计算式取的是前九个数据,可以说是一个一个读取的,但是两个数据之间的空格是否被读取了呢,之前课堂所讲的题目里面,我们用一个scanf("%c",&a),来清空缓冲区(经过我的实验,发现用整型的来清除缓冲区是不行的,这又是为什么!)。
当我对程序单步调试的时候,只有把所有程序都输入进去后按下空格键后,我才能点击next line,我希望的是输入一个数据后,他就能够让我点击next line,又一次实验后发现,输入一个数据后按回车,就可以点击next line了。我希望我再按下空格是它也可以让我点击next line ,同时再输入九个数据后自动输出结果,不能输入九个以上的数。
经过分析后发现我产生了很多的疑问。
也对这个程序很不满意!