一道C语言结构体的题,高手请进。

完后请发到497576968@qq.com
如果能用会加分。

定义一个结构体数组,存放10个学生的信息,每位学生的信息是一个结构体类型数组,其成员分别为:学号、姓名、性别、五门成绩及总分。
要求编写3个函数,它们的功能分别为:
(1) 输入函数,用于从键盘读入学号、姓名、性别、五门成绩;
(2) 计算总分函数,用于计算每位学生的总分;
(3) 输出显示函数,显示每位学生的学号、姓名、性别和总分;
这3个函数的形式参数均为结构体指针和整型变量,函数的类型为void 。

作完后请发到497576968@qq.com
如果能用会加分。

/*
定义一个结构体数组,存放10个学生的信息,每位学生的信息是一个结构体类型数组,其成员分别为:学号、姓名、性别、五门成绩及总分。
要求编写3个函数,它们的功能分别为:
(1) 输入函数,用于从键盘读入学号、姓名、性别、五门成绩;
(2) 计算总分函数,用于计算每位学生的总分;
(3) 输出显示函数,显示每位学生的学号、姓名、性别和总分;
这3个函数的形式参数均为结构体指针和整型变量,函数的类型为void 。
*/
#include<stdio.h>
#include<string.h>

struct record
{
char code[20]; /* 学号 */
char name[20]; /* 姓名 */
char sex[20]; /* 性别 */
int score[5]; /* 5门课程成绩 */
};
int total[10];

void input(record *stu,int n)//从键盘输入10个学生的各项信息
{
int i,j;
for(i=0;i<n;i++)
{
printf("\n输入第%d个学生信息:\n",i+1);
printf("输入学生学号:");
scanf("%s",stu[i].code);
printf("输入学生姓名:");
scanf("%s",stu[i].name);
printf("输入学生性别:");
scanf("%s",stu[i].sex);
printf("输入5门课程成绩:");
for(j=0;j<5;j++)
scanf("%d",&stu[i].score[j]);
}
}
void total_count(record *stu,int n)//计算每位学生的总分
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<5;j++)
total[i]+=stu[i].score[j];
}

void disp(record *stu,int n)//显示每位学生的学号、姓名、性别和总分
{
int i;
printf("学号\t姓名\t性别\t总分\n");
for(i=0;i<n;i++)
{
printf("%s\t%s\t%s\t%d\n",stu[i].code,stu[i].name,stu[i].sex,total[i]);
}
}

void main()
{
record stu[10];

printf("请输入学生信息!!\n");
input(stu,10);

printf("计算每位学生的总分!!\n");
total_count(stu,10);

printf("\n显示每位学生的学号、姓名、性别和总分:\n");
disp(stu,10);
}

运行结果:
请输入学生信息!!

输入第1个学生信息:
输入学生学号:0201
输入学生姓名:huang
输入学生性别:male
输入5门课程成绩:90 90 90 90 90

输入第2个学生信息:
输入学生学号:0202
输入学生姓名:sing
输入学生性别:female
输入5门课程成绩:89 78 67

90 89

输入第3个学生信息:
输入学生学号:0203
输入学生姓名:sun
输入学生性别:male
输入5门课程成绩:56 98 75 42 56

输入第4个学生信息:
输入学生学号:0204
输入学生姓名:zhun
输入学生性别:female
输入5门课程成绩:86 53 64 67 56

输入第5个学生信息:
输入学生学号:0205
输入学生姓名:sun
输入学生性别:female
输入5门课程成绩:85 75 86 78 75

输入第6个学生信息:
输入学生学号:0206
输入学生姓名:tiao
输入学生性别:female
输入5门课程成绩:95 74 75 76 74

输入第7个学生信息:
输入学生学号:0207
输入学生姓名:ye
输入学生性别:female
输入5门课程成绩:45 76 84 72 75

输入第8个学生信息:
输入学生学号:0208
输入学生姓名:ting
输入学生性别:male
输入5门课程成绩:45 78 68 79 84

输入第9个学生信息:
输入学生学号:0209
输入学生姓名:wei
输入学生性别:male
输入5门课程成绩:75 84 82 80 81

输入第10个学生信息:
输入学生学号:0210
输入学生姓名:zhu
输入学生性别:male
输入5门课程成绩:78 95 98 97 94
计算每位学生的总分!!

显示每位学生的学号、姓名、性别和总分:
学号 姓名 性别 总分
0201 huang male 450
0202 sing female 413
0203 sun male 327
0204 zhun female 326
0205 sun female 399
0206 tiao female 394
0207 ye female 352
0208 ting male 354
0209 wei male 402
0210 zhu male 462
Press any key to continue
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言高手请进,结构体里的元素前面有一点“.”代表什么意思?比如 .go...
“.”是访问成员的意思。优先级同“()”。 例:"对象.成员" 或者"对象->成员"都是表示访问对象的某个成员的意思(读写成员)。也就是访问某个成员的变量。这里只是省略不写了。也可以写上atag_tcc_entry.output = 0;一样的。

C语言高手请进~~~
后面ptr = &a[1];就是让ptr指向a[1],所以ptr的值就是{2,&a[2]},也就是ptr->i1=2,答案d又给他做了自增1,结果为3了。

编程高手请进!(C语言)
printf("\\n NEXT?(Y\/N):");\/*选择是否重新游戏*\/ scanf("%c",&yes);} } 2.include <stdio.h> void main(){ int gj, mj, xj, t1, t2;for (gj=1; gj<=20; gj++){ for (mj=1; mj<34; mj++){ xj=100-gj-mj;t1=xj%3;t2=5*gj+3*mj+xj\/3;if (t1==0&&t2==100...

c语言高手请进
int main(){ int i,j,k;for(i=0;i<9;i++){ for(j=0;j<9;j++){ for(k=0;k<9;k++){ if((i+j+k)<10 && i!=0)printf("%d%d%d ",i,j,k);} } } return 0;} 都类似的,只要改改if里的条件就可以了...q币啊.....

高分C语言问题~~·高手请进
int getValue(int A[]){ 初始 int S=0 1. (数组A)n个数字从小到大排序 (例如:1,2,9)2. 取上步中最小的两个数相加之和为一个M , S=S+M 3. 数组A中除去最小的两个数,然后将M加进去形成一个新数组A元素个数为 n=n-1 4. n>1时回到1.否则函数返回S+A[0] (或S+M,因为...

C语言中,关于函数,struct结构,指针的一道综合题。高手速度进,答好追...
第一种方法:include <stdio.h> include <malloc.h> \/*malloc()内存分配函数*\/ define MAX 3 \/\/可以通过修改MAX的值来升级 typedef struct stu \/*定义学生成绩信息结构体*\/ { char name[15];float math;float chinese;float sum;int ranking;float average;struct stu *next;}STUDENT...

[C语言问题][高手请进] 12345 怎样通过+ - × ÷得 22 ?
using namespace std;double num[5];string exps[5];double round(double d,int p){ double *dp,d1;dp=new double;d=d*pow(10,p);d1=modf(d,dp);d1>=0.5?d=(*dp+1)\/pow(10,p):d=*dp\/pow(10,p);delete dp;return d;} is22(int n){ int i,j;double a,b;string ...

C语言高手请进啊,高分哦,详细的解释!!!
即 第一个元素为 p[0][0]定义的数组为二维。所以 p[1] 是第二行的全部元素 即 France 另外它不是省略的 p[1][0],两者不同,前者是一行,后者是一个 另外,你可以从c语言的打印方式看出,前者 %s 是打印字符串 后者 %c 是打印字符(一个)希望对你有帮助啊!

c语言问题,高手请进 第10为什么没有双引号 11的结果怎么出来的?
10. 双引号是标示符,是标示两个双引号内部的是一个字符串,不是字符串本身的内容 "BBB"字符串,所包含的字符就是:BBB 11. strcpy的作用是复制字符串,第一个for循环,把ch字符串的内容复制到了x的三行:x[0], x[1],x[2]2. 第二个for循环,是从第i个字符开始输出第i行,输出结果是:ab...

C高手请进!!如何给结构体中的字符数组赋初值?
char数组赋值不可以这样,当然如果是定义时候就给初始值的时候是可以的 可以使用strcpy函数 typedef struct FileName { char fn[15];struct FileName *next;}*pFhead;strcpy(pFhead->fn,"Common Numbers");当然要考虑长度的问题,否则会出错

相似回答