一道简单的c语言结构体题
有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出每个学生的总成绩,并按照表格结构输出所有学生的信息(包括学号、姓名、3门课成绩...
有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出每个学生的总成绩,并按照表格结构输出所有学生的信息(包括学号、姓名、3门课成绩、总成绩),输出效果如下:
[要求]使用结构体类型存放学生信息(包括学号、姓名、3门课成绩、总成绩)。
输入/输出示例:
请输入5个学生的学号、姓名、3门课成绩:
130001 zhang 89 76 88
130002 wang 78 69 70
130003 li 66 50 47
130004 zhao 87 75 90
130005 sun 74 82 91
-----------------------------------------------成绩表------------------------------------------------
学号 姓名 数学 语文 英语 总分
130001 zhang 89 76 88 253
130002 wang 78 69 70 217
130003 li 66 50 47 163
130004 zhao 87 75 90 252
130005 sun 74 82 91 247
求大佬解答最好别用到指针 展开
[要求]使用结构体类型存放学生信息(包括学号、姓名、3门课成绩、总成绩)。
输入/输出示例:
请输入5个学生的学号、姓名、3门课成绩:
130001 zhang 89 76 88
130002 wang 78 69 70
130003 li 66 50 47
130004 zhao 87 75 90
130005 sun 74 82 91
-----------------------------------------------成绩表------------------------------------------------
学号 姓名 数学 语文 英语 总分
130001 zhang 89 76 88 253
130002 wang 78 69 70 217
130003 li 66 50 47 163
130004 zhao 87 75 90 252
130005 sun 74 82 91 247
求大佬解答最好别用到指针 展开
2个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
#define STUNEM 5;
/*定义一个学生的成绩表*/
typedef struct _tagMember {
char number[8]; //学号
char name[16]; //名字
int math; //数学分数
int chinese; //语文分数
int english; //英语分数
int sum;//总分
} Member;
/*定义学生表*/
typedef struct _tagTable {
Member * men; //学生数据指针
int num; //学生数量
} Table;
/*获取学生表中的学生指针*/
Member * getMember(Table* table, int n) {
if (n <= table->num && n > 0)
return table->men +n - 1;
else
return 0;
}
int main() {
Table table;//结构体
char i;
Member * p;
printf("请输入5个学生的学号、姓名、3门课成绩:\r\n");
table.num = STUNEM;
table.men = (Member*)malloc(sizeof(Member)* table.num);
memset(table.men, 0, sizeof(Member)* table.num);
for (i = 1; i <= table.num; i++) {
p = getMember(&table, i);
scanf("%s %s %d %d %d", &p->number, &p->name, &p->math, &p->chinese, &p->english);
p->sum = p->math + p->chinese + p->english;
}
printf("-----------------------------------------------成绩表------------------------------------------------\r\n");
printf("学号\t姓名\t数学\t语文\t英语\t总分\r\n");
for (i = 1; i <= table.num; i++) {
p = getMember(&table, i);
printf("%s\t%s\t%d\t%d\t%d\t%d\r\n", p->number, p->name, p->math, p->chinese, p->english,p->sum);
}
free(table.men);
system("pause");
return 0;
}
是这样吗
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询