题目:
编写一个程序满足以下的要求
a.外部定义一个有两个成员的结构模板name:一个字符串存储名,一个字符串存储姓
b.外部定义一个有三个成员的结构模板student: 一个name类型的结构,一个grade数组存储3个浮点型分数,一个变量存储3个分数平均数
c.在main()函数中声明一个内核CSIZE个student类型结构的数组,并初始化这些结构的名字部分。用函数执行g,e,f的任务
d.以交互的方式获取每个同学的成绩提示用户输入学生的姓名和分数。吧分数存储在grade1数组相应的结构中。
e.计算每个结构的平均分并把计算后的值赋给合适的成员
f.打印每个结构的信息
g.打印班级的平均值,即所有结构的数组成员的平均值
源代码:
#include <stdio.h>
#define CSIZE 4
struct name
{
char second[10];
char surname[10];
};
struct student
{
struct name stu;
float grade[3];
float average;
};
void average(struct student * stu);
void print(const struct student * stu);
void print_totall_average(const struct student * stu);
int main()
{
struct student stu[CSIZE];
for(int i = 0;i < CSIZE;i++)
{
printf("请输入第 %d 学生的名和姓: ",i+1);
scanf("%s %s",&stu[i].stu.second,&stu[i].stu.surname);
printf("请输入第 %d 学生的三科成绩: ",i+1);
scanf("%f %f %f",&stu[i].grade[0],&stu[i].grade[1],&stu[i].grade[2]);
}
average(stu);
print(stu);
print_totall_average(stu);
return 0;
}
void average(struct student * stu)
{
for(int i = 0;i < CSIZE;i++)
{
stu[i].average = (stu[i].grade[0] + stu[i].grade[1] + stu[i].grade[2])/3;
}
}
void print(const struct student * stu)
{
for(int i = 0;i < CSIZE;i++)
{
printf("第 %d 个学生 名为: %s 姓为: %s\n 三课成绩分为为: %0.2f %0.2f %0.2f 平均分为: %0.2f\n",i+1,stu[i].stu.second,stu[i].stu.surname,\
stu[i].grade[0],stu[i].grade[1],stu[i].grade[2],stu[i].average);
}
}
void print_totall_average(const struct student * stu)
{
float total;
for(int i = 0;i < CSIZE;i++)
{
total += stu[i].average;
}
printf("全班的平均分为: %.2f",total/CSIZE);
}
演示效果:
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈