C语言程序设计!!!求大神!!如图,看看我的代码,我发现一个问题就是最低分min输出总是为-1,但

C语言程序设计!!!求大神!!如图,看看我的代码,我发现一个问题就是最低分min输出总是为-1,但是得分score的结果却是对的!对于整一道题来说,我的代码是错误的!老师给了我一半分,但是错在哪里呢?
(问题描述:青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。)

你的while里面的scanf放的位置错误。假如输入了一个-1,它会加到sum里面,然后执行,max,min两段代码。这样就把-1赋给了min,然后进行判断,循环结束,由于min的值是-1,所以你的score一般是不对的,除非每个打的分数都一样。修改如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{
double score,x,sum=0,max,min,i=0;
scanf("%lf",&x);
max=min=x;
while(x!=-1){
sum+=x;
max=max>x?max:x;
min=min<x?min:x;
i++;
scanf("%lf",&x);
}
score=(sum-max-min)/(i-2);
printf("score:%.2f\n",score);
printf("max:%.2f\n",max);
printf("min:%.2f\n",min);
system("pause");
return 0;
}

追问

为什么我理解为,当输入-1时候,不再进入这个while循环,从而-1不会赋值给min?

oh no! 我忘了把scanf("%lf",&x);放后面。对的。谢谢

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言编程计算并输出某门课程的平均分、最高分和最低分。
设置两个变量如max=-1和min=9999和一个count=0,将某门课程的各个分数放在一个数组中,然后从1个分数开始向后循环和max和min比较,比min小就让min等于那个分数,比max大就让max等于那个分数,在把总分用count量累加起来,最后输出count\/n(平均分,n为分数个数)、max(最高分)、min(最低分)。

用c语言设计一个程序统计一个班的学生成绩?
void getmin() { int minid = 0;double minscore = 101;for (int i = 0; i < len; i++) { if (Student[i].score < minscore) { minscore = Student[i].score;minid = Student[i].id;} } printf("班级最低分为:%.2lf学号是:%d\\n", minscore, minid);} \/\/求总分 dou...

关于c语言程序设计的问题求大神帮忙!万分感谢!
(2)编译(成目标程序文件.obj)编译是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析、语法分析、语义检查和中间代码生成、代码优化、目标代码生成。主要是进行词法分析和语法分析,...

c语言输入10个学生的成绩,输出最高分和最低分.编写函数max求最高分...
printf("最高分数是%d,最低分数是%d",max(fenshu),min(fenshu));}

C语言编程,输入任意多个学生的成绩,求出其中的最高分,最低分,还有平均...
include<stdio.h> void main(){ float max;float min;float aveg;float sum=0;int n=0;float chengji;printf("输入学生的成绩,当输入-1是结束");scanf("%f",&chengji);max=chengji;min=chengji;while(chengji!=-1){sum=sum+chengji;n++;if(max<=chengji) max=chengji;if(min>=chengji)...

用C语言编写一个程序,输入N个学生的学号和成绩,求平均成绩,并输出其 ...
include<stdio.h>#define N 5struct Stu{ int id; double score;};void sortScore(Stu s[N]){ int i; int min=0,max=0; for(i=1;i<N;i++){ if(s[i].score>s[max].score) max=i; if(s[i].score...

C语言设计 一个班级20名学生姓名及成绩的输入输出,计算平均成绩,求最...
max=0,min=100;int i;for(i=0;i<20;i++){ printf("input %dth score:",i+1);scanf("%f",&student[i]);if(student[i]>max)max=student[i];if(student[i]<min)min=student[i];sum+=student[i];} ave=sum\/20;printf("ave=%f,max=%f,min=%f\\n",ave,max,min);} ...

【C语言程序设计】C语言求最大公约数(详解版)!
在C语言程序设计中,要解决的问题是找到任意两个正整数的最大公约数(GCD)。这个概念基于约数的定义,即一个数的约数不会大于它本身,而几个数的最大公约数不会大于其中的任何一个数。求最大公约数的目标是找到一个既能同时整除这两个数,且是最小的这样的自然数。有两种算法设计方法:穷举法和从...

C语言编程 评委打分去掉最高分 去掉最低分 求平均 的 执行时就是不对...
都会执行 max=min=score这一句。第二个问题,你在循环内用了i=1这一句,你循环结构中的i++就没有意义了,i的值永远是1,所以这还是一个死循环。第三个问题,最后的(sum-max-min)\/(people-2)这个算式,我假设people=2,也就是有两个评委,你说(sum-max-min)\/(2-2)该等于多少?

...找出最高分、最低分。用C语言来编一个程序,请教知道者
min记录最低分 一重循环遍历所有成绩for(i=0;i<100;i++)循环里要做的是加总分:sum+=grade[i];\/\/假设分数存在grade一维数组中。比大小 if(grade[i]>max) max=grade[i];if(grade[i]<min) min=grade[i];最后输出平均分=sum\/100,max和min即可 希望我的回答对你有帮助~

相似回答