#include <stdio.h> float Max=0;/*Max为最高分变量,注意最高分不止一个*/ int J=0; /*J为最高分的人数*/ float fun(float array[],int n) { /**********Program**********/ /********** End **********/ } main( ) { float a[10],ave; int i=0; for(i=0;i<10;i++) scanf("%f",&a[i]); ave=fun(a,10); printf("ave=%f\n",ave); printf("max=%f\n",Max); printf("Total:%d\n",J); return 0; }
时间: 2023-07-18 11:42:30 浏览: 123
这段代码是一个求平均数、最高分和最高分人数的程序。下面是函数fun的实现:
```c
float fun(float array[],int n) {
float sum=0;
int i;
for(i=0;i<n;i++)
sum+=array[i];
float ave=sum/n;
for(i=0;i<n;i++) {
if(array[i]>Max)
Max=array[i];
}
for(i=0;i<n;i++) {
if(array[i]==Max)
J++;
}
return ave;
}
```
函数fun首先计算数组中所有元素的和,然后除以元素个数得到平均数。接着遍历数组,如果一个元素大于Max,则将其赋值给Max。最后遍历数组,如果一个元素等于Max,则将J加1。最后返回平均数。
相关问题
在相声大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。 选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。 例如,输入:100 90 90 80 95 85 87 93 95 88,则应该输出: Canceled max score:100 Canceled min score:80 Average score: 90.375 请改正其中的错误,使其能够计算出正确的结果。 注意:不得增行或者删行,也不得更改程序的结构。 #include <stdio.h> void main( ) { int score,i,max,min; float sum; /********************found****************/ max=100; min=0; sum=0; /********************found****************/ for(i=1;i<10;i++) { printf("Input number %d=",i ); /********************found****************/ scanf("%d",score); /*输入评委的评分*/ sum+=score; /*计算总分*/ if(score>max) max=score; /*通过比较筛选出其中的最高分*/ if(score<min) min=score; /*通过比较筛选出其中的最低分*/ } printf("Canceled max score:%d\nCanceled min score:%d\n",max,min); printf("Average score:%.3f\n",(sum-max-min)/8); }
1. 代码中缺少变量的定义或声明。
2. 代码中缺少输入数据的处理。
3. 代码中计算平均分数的公式有误。
以下是修改后的代码:
#include <stdio.h>
#define N 10
int main()
{
int score[N], i, sum = 0, max = 0, min = 100;
for(i = 0; i < N; i++)
{
scanf("%d", &score[i]);
if(score[i] > max)
max = score[i];
if(score[i] < min)
min = score[i];
sum += score[i];
}
sum = sum - max - min;
printf("Canceled max score:%d\n", max);
printf("Canceled min score:%d\n", min);
printf("Average score:%.3f\n", (float)sum/8);
return 0;
}
#include<stdio.h> struct Student { int age; char name[100]; float score[5]; }; int main(void) { struct Student stu1; int i; float ave,sum; stu1.age=18 strcpy(stu1.name,"zhangsan"); for(i=0;i<5;i++) scanf("%f",&stu.score[i]); for(i=0;i<5;i++) { sum=sum+stu1.score; } printf("",stu1.score); } 续写一下最低分,最高分。
可以在输入分数的同时,记录最低分和最高分,然后输出即可。
代码如下:
#include<stdio.h>
#include<string.h>
struct Student {
int age;
char name[100];
float score[5];
};
int main(void)
{
struct Student stu1;
int i;
float ave,sum, min, max;
stu1.age=18;
strcpy(stu1.name,"zhangsan");
// 输入分数同时记录最低分和最高分
scanf("%f",&stu1.score[0]);
min = stu1.score[0];
max = stu1.score[0];
sum = stu1.score[0];
for(i=1;i<5;i++)
{
scanf("%f",&stu1.score[i]);
if(stu1.score[i] < min) {
min = stu1.score[i];
}
if(stu1.score[i] > max) {
max = stu1.score[i];
}
sum += stu1.score[i];
}
// 计算平均分
ave = sum / 5;
// 输出结果,包括最低分、最高分和平均分
printf("Name: %s\nAge: %d\n", stu1.name, stu1.age);
printf("Scores: ");
for(i=0;i<5;i++) {
printf("%.1f ", stu1.score[i]);
}
printf("\n");
printf("Minimum score: %.1f\n", min);
printf("Maximum score: %.1f\n", max);
printf("Average score: %.1f\n", ave);
return 0;
}
注意,此处代码有个小错误,输入分数时循环中的变量写成了stu,应该是stu1。已经进行了修改。
阅读全文