定义序号、学号、姓名、获得学分、高数、大体、近代史、软导、C 程均分
数据类型,并输入全班同学数据,计算根据成绩计算获得学分和平均分,并按照
下列格式输出(注意间隔和对齐)。在输入过程中应该对成绩进行合法性,学号
的规范性等进行判断,以防止非法数据的流入。
#include<stdio.h>
#include<stdlib.h>
#define N 20
struct student
{
char xuhao[2];
char sno[11];
char name[10];
float xuefen;
float score;
float Gshu;
float Tyu;
float Jdaishi;
float Dlun;
float Dying;
float Ccheng;
float average;
}stu[N];
void input(struct student s[],int n)
{
int
i;
for(i=0;i<n;i++)
{
s[i].xuefen=0;
printf("序号:\n");
gets(s[i].xuhao);
printf("学号:\n");
gets(s[i].sno);
if(strlen(s[i].sno)!=10)
{
printf("输入数据错误,请重新输入\n");
gets(s[i].sno);
}
printf("姓名:\n");
gets(s[i].name);
printf("高数:\n");
scanf("%f",&s[i].Gshu);
if(s[i].Gshu<0||s[i].Gshu>100)
{
printf("输入数据错误,请重新输入\n");
scanf("%f",&s[i].Gshu);
}
else
{
if(s[i].Gshu>=60)
s[i].xuefen+=5;
else
s[i].xuefen+=0;
};
printf("大学体育:\n");
scanf("%f",&s[i].Tyu);
if(s[i].Tyu<0||s[i].Tyu>100)
{
printf("输入数据错误,请重新输入\n");
scanf("%f",&s[i].Tyu);
}
else
{
if(s[i].Tyu>=60)
s[i].xuefen+=1;
else
s[i].xuefen+=0;
};
printf("中国近代史纲要:\n");
scanf("%f",&s[i].Jdaishi);
while(s[i].Jdaishi<0||s[i].Jdaishi>100)
{
printf("输入数据错误,请重新输入\n");
scanf("%f",&s[i].Jdaishi);
}
if(s[i].Jdaishi>=60)
s[i].xuefen+=2;
else
s[i].xuefen+=0;
printf("软件技术导论:\n");
scanf("%f",&s[i].Dlun);
while(s[i].Dlun<0||s[i].Dlun>100)
{
printf("输入数据错误,请重新输入\n");
scanf("%f",&s[i].Dlun);
}
if(s[i].Dlun>=60)
s[i].xuefen+=1;
else
s[i].xuefen+=0;
printf("大学英语:\n");
scanf("%f",&s[i].Dying);
while(s[i].Dying<0||s[i].Dying>100)
{
printf("输入数据错误,请重新输入\n");
scanf("%f",&s[i].Dying);
}
if(s[i].Dying>=60)
s[i].xuefen+=4;
else
s[i].xuefen+=0;
printf("C语言程序设计:\n");
scanf("%f",&s[i].Ccheng);
while(s[i].Ccheng<0||s[i].Ccheng>100)
{
printf("输入数据错误,请重新输入\n");
scanf("%f",&s[i].Ccheng);
}
if(s[i].Ccheng>=60)
s[i].xuefen+=4;
else
s[i].xuefen+=0;
fflush(stdin);
}
}
void average(struct student s[],int n)
{
int i;
for(i=0;i<n;i++)
{
s[i].score=0;
s[i].average=0;
s[i].score=s[i].Gshu+s[i].Tyu+s[i].Jdaishi+s[i].Dlun+s[i].Dying+s[i].Ccheng;
s[i].average=s[i].score/6;
}
}
int main ()
{
int
i;
input(stu,N);
average(stu,N);
printf("|序 号| 学 号 |姓
名|获得分数|高等数学A1/5|大学体育1/1|中国近代史纲要/2|软件技术导论/2|大学英语A1/4|C语言程序设计A/4|平均分|\n");
for(i=0;i<N;i++)
printf("|%s|%7s|%5s|%9.1f|%10.1f|%10.1f|%11.1f|%13.1f|%13.1f|%11.1f|%13.1f|\n",
stu[i].xuhao,stu[i].sno,stu[i].name,stu[i].xuefen,stu[i].Gshu,stu[i].Tyu,stu[i].Jdaishi,stu[i].Dlun,stu[i].Dying,stu[i].Ccheng,stu[i].average);
return 0;
}