#include <stdio.h>
#define ST_NUM 3
int creditt (int maxcredit,int score)//求学分
{
if(score>60)
return maxcredit;
else return 0;
}
int sum(int score[6]) //一个名叫sum的 以score数组为元素 的求和
{
int i, result = 0;
for (i = 0; i < 6; i++)
result += score[i];
return result;
}
typedef struct
{
char name[10];
long int id;
int credit;
}student;
student ST[ST_NUM];
int main(void)
{
int i,j,sums;
float maxcredit,credit;
float sumcredit[i];
int students[ST_NUM][6];
float average[ST_NUM];
char *str[6] = {"数学", "体育","历史","导论","英语","C语言"};
printf ("共需输入%d个学生的信息:\n",ST_NUM);
for (i=0;i<ST_NUM;i++)
{
printf("第%d个同学的数据\n",i);
while(1)//姓名学号
{
printf("输入学号(10位):");
scanf("%ld",&ST[i].id);
if(ST[i].id>=1808100000&&ST[i].id<=1808109999)break;
printf("数据不合法,请重新输入学号\n");
fflush (stdin);
}
printf("输入姓名:");
getchar();
gets(ST[i].name);
//学生学号0 math 1 pe 2 history 3 introduce 4 english 5 clangue (j)
for(j=0;j<6;j++)
switch(j)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
while(1)
{
puts(str[j]);
scanf("%d",&students[i][j]);
if(students[i][j]>=0&&students[i][j]<=100)break;
printf("数据不合法,请重新输入成绩\n");
fflush (stdin);
}
break;
default:printf("Error!");
}
switch (j)
{
case 0:maxcredit=5;break;
case 1:
case 2:
case 3:maxcredit=2;break;
case 4:maxcredit=4;break;
case 5:maxcredit=3.5;break;
}
credit=creditt(maxcredit,students[i][j]);
sumcredit[i]+=credit;
}
//0 math+5; 1 pe+2; 2 history+2; 3 introduce+2; 4 english+3; 5 clangue+3.5; (j)
for (i=0;i<ST_NUM;i++)//输出数据
{
printf("┃%4d┃%10ld┃%8s┃%5.1f┃",i,ST[i].id,ST[i].name,ST[i].credit);
for(j=0;j<6;j++)
{
printf("%8d┃",students[i][j]);
}
printf("%8d┃\n",average[i]);
}
//科目的平均分
for (j=0;j<6;j++)
{
for (sums=0,i=0;i<ST_NUM;i++)
{
sums+=students[j][i];
}
puts(str[j]);
printf("课程平均分为:%d\n",sums/ST_NUM);
}
return 0;
}
自用
猜你喜欢
转载自blog.csdn.net/weixin_43427730/article/details/85918534
今日推荐
周排行