今天实训,我的程序老师说有问题,求大神帮一下看是什么问题!
程序有点多是学生成绩管理系统
不是程序有问题
老师问的是这个: void stu_input(); 这个输入函数,是在子函数中输入的,主函数的什么接收到这写输入的信息的。
我给老师说是从子函数中输入,结构体接收
然后在主函数用调用输出函数(从结构体中输出) 老师说不对 求大神帮分析啊 感激不尽
程序代码:
#include<stdio.h> #include<string.h> #include<stdlib.h> struct student { int class_; //班级 char name[20]; //姓名 char number[20]; //学号 float cj1; float cj2; float cj3; float cj4; float cj5; float Average; //平均成绩 }; struct student students[1000];//声明学生数组及学生数量\ struct是 结构体的关键字 // student是 定义的结构体对象 生成struct student类型的students数组,该数组元素有N个 int num=0; void stu_input(); //输入函数 void student_display(); //显示学生信息 void stu_ave_chengji(); //平均排序 void stu_change(); //改信息 void stu_del();//删除学校信息 void stu_find();//姓名查找 void stu_find_num(); //学号查找 void student_xianshi(); //显示单独学生信息 int student_searchByInde(); //返回下标 下同 学号返回 借鉴 int student_xingmingfanhui(); //姓名返回 void main() { int choice; // 选择函数 while(1) { printf(" ~~~~~~~~~~~~~ ★ ~~~~~~~~~~~~~~~~"); printf(" \n"); printf ("\n|-----------------------------学生成绩管理系统-----------------------| \n"); printf("| |\n"); printf("| ① 输入学生信息成绩 | ┏ 班 | \n"); printf("| ② 计算平均成绩并排序 | 作 级 | \n"); printf("| ③ 输出学生成绩 | 者 ¨ | \n"); printf("| ④ 修改学生信息成绩 | ¨ 网 | \n"); printf("| ⑤ 增加学生信息成绩 | 郭 页 | \n"); printf("| ⑥ 删除学生信息成绩 | 笑 一 | \n"); printf("| ⑦ 按姓名查询学生信息 | 延 班 | \n"); printf("| ⑧ 按学号查询学生信息 | ┛ | \n"); printf("| ⑨ 退出 学号:621413510113 | \n"); printf("----------------------------------------------------------------------- \n"); printf(" \n"); printf(" ~~~~~~~~~~~~~ ★ ~~~~~~~~~~~~~~~~\n"); printf(" \n \t请选择序号1-9:"); scanf ("%d",&choice); //输入键盘序号 if (choice>10) printf("ERROR: 请输入正确序号\n");// 解释错误的输入 getchar(); //是从键盘读取一个字符放入缓冲区 然后在取出来 switch(choice) //选择 { case 1: stu_input(); break; //输入学生成绩函数 case 2:student_display(); stu_ave_chengji(); break; //计算平均成绩排序 case 3:student_display(); break; //输出成绩 case 4:stu_change(); break; //修改信息(姓名学号查找修改) case 5:stu_input(); break; //添加信息 case 6:stu_del(); break; //删除信息 case 7:stu_find(); break; //姓名查询 case 8:stu_find_num(); break; //学号查询 case 9:exit(0); break; //退出 } } } //学号返回到[]下标 ***** int student_xuehaofanhui(char id[]) // 已声明过 { int i; for (i=0;i<num;i++) { if (strcmp(students[i].number,id)==0) //比较两个字符串是否相同 { return i; } } return -1; // 结束 } //姓名返回[]下标 int student_xingmingfanhui(char name2[]) { int i; for (i=0;i<num;i++) { if (strcmp(students[i].name,name2)==0) { return i; } } return -1; } void student_xianshi(int index) //单独学生信息的显示 { printf("%9s%10s%10s%8s%8s%8s%8s%8s%10s\n","班级","学号","姓名","成绩","成绩","成绩","成绩","成绩","平均成绩"); printf("-------------------------------------------------------------\n"); printf("%10d%10s%10s%8.2f%8.2f%8.2f%8.2f%8.2f%10.2f\n",students[index].class_,students[index].number,students[index].name, students[index].cj1,students[index].cj2,students[index].cj3,students[index].cj4,students[index].cj5,students[index].Average); } // 平均成绩 课本262页-263页 几乎原样. float Avg(struct student stu) //有一个函数Avg(),此函数的返回值是一个float类型的值,接受一个struct student类型的数组做为参数。 { return (stu.cj1+stu.cj2+stu.cj3+stu.cj4+stu.cj5)/5; } // 输入学生成绩函数 void stu_input() { while(1) { printf("请输入增补学生的班级:"); scanf("%d",&students[num].class_); getchar(); //同前解释 printf("请输入增补的新学号:"); scanf("%s",&students[num].number); getchar(); printf("请输入新学生姓名:"); scanf("%s",&students[num].name); getchar(); printf("输入新成绩1:"); scanf("%f",&students[num].cj1); getchar(); printf("输入新成绩2:"); scanf("%f",&students[num].cj2); getchar(); printf("输入新成绩3:"); scanf("%f",&students[num].cj3); getchar(); printf("输入新成绩4:"); scanf("%f",&students[num].cj4); getchar(); printf("输入新成绩5:"); scanf("%f",&students[num].cj5); getchar(); students[num].Average=Avg(students[num]); num++; printf("继续添加学生信息? 1/0"); if (getchar()=='0') // 如果0 循环结束 下同 { break; } } } void stu_ave_chengji() // 平均值排序 { int i,j; struct student tmp; for (i=0;i<num;i++) { for (j=1;j<num-i;j++) { if (students[j-1].Average<students[j].Average) { tmp=students[j-1]; students[j-1]=students[j]; students[j]=tmp; } } } } void student_display() // 显示成绩 { int i; printf("%10s%10s%10s%8s%8s%8s%8s%8s%10s\n","班级","学号","姓名","成绩","成绩","成绩","成绩","成绩","平均成绩"); printf("-----------------------------------------------------------\n"); for (i=0;i<num;i++) { printf("%8d%10s%10s%8.2f%8.2f%8.2f%8.2f%8.2f%10.2f\n",students[i].class_,students[i].number,students[i].name, students[i].cj1,students[i].cj2,students[i].cj3,students[i].cj4,students[i].cj5,students[i].Average); } } //修改信息 void stu_change() { while(1) // [[[ 借鉴 ]]] { char id[20]; //学号 int index; printf("请输入要修改的学生的学号:"); scanf("%s",&id); getchar(); index=student_xuehaofanhui(id); if (index==-1) { printf("学生不存在!\n"); } else { printf("你要修改的学生信息为:\n"); student_xianshi(index); printf("-- 请输入新值--\n"); printf("请输入班级:"); scanf("%d",&students[index].class_); getchar(); printf("请输入学号:"); scanf("%s",&students[index].number); getchar(); printf("请输入姓名:"); scanf("%s",&students[index].name); getchar(); printf("请输入成绩:"); scanf("%f",&students[index].cj1); getchar(); printf("请输入成绩:"); scanf("%f",&students[index].cj2); getchar(); printf("请输入成绩:"); scanf("%f",&students[index].cj3); getchar(); printf("请输入成绩:"); scanf("%f",&students[index].cj4); getchar(); printf("请输入成绩:"); scanf("%f",&students[index].cj5); getchar(); students[index].Average=Avg(students[index]); } printf("是否继续修改学生信息?(1/0)"); if (getchar()=='0') { break; } } } /*删除学生信息*/ void stu_del() { int i; while(1) { char number2[20]; int index; printf("请输入要删除的学生的学号:"); scanf("%s",&number2); getchar(); index=student_xuehaofanhui(number2); if (index==-1) { printf("学生不存在!\n"); } else { printf("你要删除的学生信息为:\n"); student_xianshi(index); printf("是否真的要删除?(y/n)"); if (getchar()=='y') { for (i=index;i<num-1;i++) { students[i]=students[i+1];//把后边的对象都向前移动 } num--; } getchar(); } printf("是否继续删除?(1/0)"); if (getchar()=='0') { break; } } } void stu_find() // 查询 姓名 { while(1) { char name[20]; int index; printf("请输入要查询的学生的姓名:"); scanf("%s",&name); getchar(); index=student_xingmingfanhui(name); if (index==-1) { printf("学生不存在!\n"); } else { printf("你要查询的学生信息为:\n"); student_xianshi(index); } printf("是否继续?(1/0)"); if (getchar()=='0') { break; } } } void stu_find_num() //按学号查询 { while(1) { char id[20]; int index; printf("请输入要查询的学生的姓名:"); scanf("%s",&id); getchar(); index=student_xuehaofanhui(id); if (index==-1) { printf("学生不存在!\n"); } else { printf("你要查询的学生信息为:\n"); student_xianshi(index); } printf("是否继续?(1/0)"); if (getchar()=='0') { break; } } }