C语言编程:输入10个学生的学号和某门课程的成绩,输出成绩比平均分高的学生的信息

要求检查输入数据的合法性,输出格式自行设计。要求用一个结构体数组实现。

楼主你好!
根据你的要求,我已经实现了!如果有什么不正确的地方,请指正!谢谢!
希望我的回答对你有帮助!
#include<stdio.h>
#include<string.h>
#define people 3 //学生人数,可以根据具体情况更改
#define size 6 //学号的位数,这里假设是5位,最后一位用于'\0'
struct student{
char number[size];
int score;
};
//用于输入学生学号及分数,并判断数据是否合法
void input(struct student a[]){
int i,k;
for(i=0;i<people;i++){
A: printf("请输入第%d位同学的学号:\n",i+1);
scanf("%s",a[i].number);
k=0;
while(a[i].number[k]!='\0'){
if(a[i].number[k]<'0'||a[i].number[k]>'9')
{
printf("输入学号中含有非法字符或超过学号长度!\n");
goto A;
}else if(strlen(a[i].number)>(size-1)){printf("输入学号超过长度!\n");goto A;}
k++;
}
B: printf("请输入该同学的成绩:\n");
fflush(stdin);
scanf("%d",&a[i].score);
if(a[i].score>=0&&a[i].score<=100)continue;
printf("输入的成绩不合法:\n");
goto B;
}
}
//用于求平均分
float average(struct student a[],int n){
int sum=0;
for(int i=0;i<people;i++)
sum+=a[i].score;
return (float)sum/n;
}
int main(){
struct student a[people];
float mean;
input(a);
mean=average(a,people);
printf("\n平均分为:%.1lf\n",mean);
printf("\n大于平均分的同学:\n");
printf("学号 分数\n");
for(int i=0;i<people;i++){
if(a[i].score>mean)
printf("%s %d\n",a[i].number,a[i].score);
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-07
324234324 90
相似回答