本次实验用到了结构体和函数知识,程序设计在VS中实现,其他编译软件若不适合可自行修改
输入6名学生的学号,姓名和三门课程的成绩,三门课程的名称:(programming,databse,network),存入到一个结构体数组中;编写aveScore()函数,其功能是计算学生三门课程的平均成绩,并存到结构体数组中:在主函数中输入学生信息,调用aveScore()函数,并输出学生的姓名和平均分信息
源程序:
#include<stdio.h>
float aveScore(int score[3]);
struct student
{
long stduent_id;
char name[10];
int score[3];//score[0]到score[2]分别代表学生的programming,dababase,network成绩
float avescore;
};
int main()
{
int i;
struct student stu[6];
for (i = 0; i < 6; i++)
{
printf("请分别输入第%d个学生的学号,姓名以及programming、dababase、network成绩\n", i + 1);
scanf_s("%ld%s%d%d%d", &stu[i].stduent_id, &stu[i].name,10, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].avescore = aveScore(stu[i].score);
}
for (i = 0; i < 6; i++)
{
printf("\n学号:%ld\t姓名:%s\tprogramming成绩为:%d\tdababase成绩为:%d\tnetwork成绩为:%d\t平均成绩为:%.2f\n", stu[i].stduent_id, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].avescore);
}
return 0;
}
float aveScore(int score[])
{
float avescore = 1.0 * (score[0] + score[1] + score[2]) / 3;
return avescore;
}
其中为了方便讲解有些可能会存在困惑的地方,将代码复制在下面方便说明
源程序:
#include<stdio.h>
float aveScore(int score[3]);
struct student//结构体
{
long stduent_id;
char name[10];
int score[3];
//score[0]到score[2]分别代表学生的programming,dababase,network成绩
float avescore;
};
int main()
{
int i;
struct student stu[6];
for (i = 0; i < 6; i++)
{
printf("请分别输入第%d个学生的学号,姓名以及programming、dababase、network成绩\n", i + 1);
scanf_s("%ld%s%d%d%d", &stu[i].stduent_id, &stu[i].name,10, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
//很多友友对于其中蓝色部分有所疑惑,不知道为何要在&stu[i].name后加上10,其实如果删除后面的10,便会出现如下图所示情况,大家可以试一试(根据需要10可以改为其他数字)
其原因可以看看这位博主的文章,点击链接就可以进去,大概意思我感觉就是为了准确性和安全性,链接在这里http://t.csdn.cn/QZMr0,想具体了解的友友可以去看看
stu[i].avescore = aveScore(stu[i].score);
}
for (i = 0; i < 6; i++)
{
printf("\n学号:%ld\t姓名:%s\tprogramming成绩为:%d\tdababase成绩为:%d\tnetwork成绩为:%d\t平均成绩为:%.2f\n", stu[i].stduent_id, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].avescore);
//"%ld" 表示输出long整数;"\t"是制表格的符号,可让两个数据间有间隔;"\n"表示换行,%.2f 表示单精度浮点型,也就是float型的格式,保留两位小数
}
return 0;
}
float aveScore(int score[])
{
float avescore = 1.0 * (score[0] + score[1] + score[2]) / 3;
return avescore;
}
实验结果: