自用

#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