标签:struct 形参 int void 数组 C语言 stu 课程 student
#include <stdio.h>
#include <stdlib.h>
//定义结构数组和各全局变量************
struct student{
char id[10],name[10];//姓名,学号(字符串数组)
int grade;//年级
double sum_student,average_student;//学生总分,学生平均分
double scores[100];//课程成绩
};
int i,j,n,coursecount;//n学生人数,classcount课程数量
char coursecode[10],coursename[10];//课程代码,课程名称(字符串数组)
double average_course[100],sum_course[100];//课程的平均分,课程总分
struct student stu[2000],pupil[2000],max;//定义学生信息结构数组
//函数声明********************
struct student input(struct student stu,int n,int i,int j);
void calculatestudent(struct student stu,int n,int i,int j);
void calculatecourse(struct student stu,int n,int i,int j);
void searchhightest(struct student stu,int n,int i,int j);
void output(struct student stu,int n,int i,int j);
void output(struct student stu,int n,int i,int j);
//主函数*********************
int main()
{
int choice,item;
printf("Please input the number of students:\n");//输入学生人数
scanf("%d",&n);
printf("Please input the number of courses:\n");//输入课程数量
scanf("%d",&coursecount);
for(j=0;j<coursecount;j++){
printf("NO.%d course code:",j+1);//提示输入课程代码
scanf("%s",coursecode);
printf("NO.%d course name:",j+1);//提示输入课程名称
scanf("%s",coursename);
}
printf("\n choice:\n");
printf("[1] 成绩输入\n");
printf("[2] 数据计算\n");
printf("[3] 数据查找:查找最高分\n");
printf("[4] 数据输出\n\n");
while(1){
printf("please input your choice:");
scanf("%d",&choice);
switch(choice){
case 1:
pupil[2000] = input(stu[2000],n,i,j);//接受返回值
break;
case 2:
printf("\n item:\n");
printf("[1] 数据计算:学生平均分\n");
printf("[2] 数据计算:课程平均分\n\n");
printf("please input your item:");
scanf("%d",&item);
switch(item){
case 1:
calculatestudent(stu[2000],n,i,j);
break;
case 2:
calculatecourse(stu[2000],n,i,j);
break;
default:
break;
}
break;
case 3:
searchhightest(stu[2000],n,i,j);
break;
case 4:
output(stu[2000],n,i,j);
default:
break;
}
}//死循环
return 0;
}
//成绩输入****************
struct student input(struct student stu,int n,int i,int j)
{
for(i=0;i<n;i++){
printf("id:");//提示输入学号
scanf("%s", pupil[i].id);
printf("name:");//提示输入姓名
scanf("%s", pupil[i].name);
printf("grade:");//提示输入年级
scanf("%d",&pupil[i].grade);
for(j=0;j<coursecount;j++){
printf("NO.%d course scores:",j+1);//提示输入该课程分数
scanf("%lf",&pupil[i].scores[j]);
}
printf("\n");
}
return stu;//返回学生信息给主函数
}
//数据计算:学生平均分**************
void calculatestudent(struct student stu,int n,int i,int j)
{
pupil[n].sum_student = 0;//赋某学生总分的初值为 0
for(i=0;i<n;i++){
for(j=0;j<coursecount;j++){
pupil[i].sum_student = pupil[i].sum_student + pupil[i].scores[j];//计算该学生的总分
}
pupil[i].average_student = pupil[i].sum_student / coursecount;//计算该学生的平均分
}
printf("\n学生平均分\n");
printf("name\t average\t\n");
for(i=0;i<n;i++){
printf("%s\t %.2lf\t\n",pupil[i].name,pupil[i].average_student);
}//输出学生平均分
}
//数据计算:课程平均分***************
void calculatecourse(struct student stu,int n,int i,int j)
{
sum_course[coursecount] = 0;//赋某课程总分的初值为0
for(j=0;j<coursecount;j++){
for(i=0;i<n;i++){
sum_course[j] = sum_course[j] + pupil[i].scores[j];//计算该课程的总分
}
average_course[j] = sum_course[j] / n;//计算该课程的平均分
}
printf("\n课程平均分\n");
printf("name\t average\t\n");
for(j=0;j<coursecount;j++){
printf("%s\t %.2lf\t\n",coursename,average_course[j]);
}//输出课程平均分
}
//数据查找:查找最高分***************
void searchhightest(struct student stu,int n,int i,int j)
{
// struct student max;
max= pupil[0];//初始假设取得最大平均分的同学为第一个同学
for(i=0;i<n;i++){
if(max.average_student<=pupil[i].average_student){
max = pupil[i];//比较并替换最大
}
}
printf("\n平均分最高的学生信息\n");
printf("name\t id\t grade\t average\t\n");
printf("%s\t %s\t %d\t %.2lf\t\n",max.name,max.id,max.grade,max.average_student);//输出最高平均分学生信息
}
//数据输出***********************
void output(struct student stu,int n,int i,int j)
{
//输出学生平均分
printf("\n学生平均分\n");
printf("name\t average\t\n");
for(i=0;i<n;i++){
printf("%s\t %.2lf\t\n",pupil[i].name,pupil[i].average_student);
}
//输出平均分最高的学生信息
printf("\n平均分最高的学生信息\n");
printf("name\t id\t grade\t average\t\n");
printf("%s\t %s\t %d\t %.2lf\t\n",max.name,max.id,max.grade,max.average_student);
//课程平均分
printf("\n课程平均分\n");
printf("name\t average\t\n");
for(j=0;j<coursecount;j++){
printf("%s\t %.2lf\t\n",coursename,average_course[j]);
}
}
我对这个程序有一些疑问,调用函数里的形参stu是起什么作用啊,子函数里用的是pupil,没有stu啊,如果我把它换成pupil或者删了都编译报错,现在保留着还能达到运行预期效果,C语言小白求助各路大佬解答,(不会用指针)。
//函数声明********************
struct student input(struct student stu,int n,int i,int j);
void calculatestudent(struct student stu,int n,int i,int j);
void calculatecourse(struct student stu,int n,int i,int j);
void searchhightest(struct student stu,int n,int i,int j);
void output(struct student stu,int n,int i,int j);
void output(struct student stu,int n,int i,int j);
标签:struct,形参,int,void,数组,C语言,stu,课程,student 来源: https://blog.csdn.net/qq_57408368/article/details/117556972
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。