求助一个C语言程序停止运行问题
C语言新手,写了一个超级简单的学生成绩管理系统,编译链接都没问题,可是程序运行会突然停止运行,如图:用VS2017调试了一下,如图:
百思不得其解,因此向各位大佬请教一下,看看代码有什么问题。
源代码如下:
程序代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> struct student { char num[20]; //学号 char name[20]; //姓名 char subject[20]; //科目 float grade; //分数 } stu[3]; void menu() { printf(" ======================================================\n"); printf(" || 模拟简单学生成绩管理系统 ||\n"); printf(" || ╭──────╮ ||\n"); printf(" || │★功能菜单★┃ ||\n"); printf(" || ╰━━━━━━╯ ||\n"); printf(" || 1 输入学生成绩 ||\n"); printf(" || 2 输出学生成绩 ||\n"); printf(" || 3 查询学生成绩 ||\n"); printf(" || 4 输出平均成绩 ||\n"); printf(" || 0 退出管理系统 ||\n"); printf(" ======================================================\n"); } void input() { printf("\t\t请按顺序输入三个学生姓名,学号,学科,成绩:\n"); printf("\n"); for (int i = 0; i<3; i++) scanf("%s%s%s%f", stu[i].name, stu[i].num, stu[i].subject, stu[i].grade); printf("\n"); } void show() { printf("\n"); printf("姓名\t\t学号\t\t科目\t\t成绩\n"); for (int i = 0; i<3; i++) printf("%s\t\t%s\t\t%s\t\t%f\n", stu[i].name, stu[i].num, stu[i].subject, stu[i].grade); printf("\n"); } void search() { char num[20]; printf("\t\t请输入要查询的学号:"); scanf("%s", num); for (int i = 0; i<3; i++) { if (0 == strcmp(num, stu[i].num)) { printf("\n"); printf("姓名\t\t学号\t\t科目\t\t成绩\n"); printf("%s\t\t%s\t\t%s\t\t%f\n", stu[i].name, stu[i].num, stu[i].subject, stu[i].grade); printf("\n"); } } } void average() { float sum=0; int i; for(i=0;i<3;i++) { sum+=stu[i].grade; } printf("平均成绩=%d\n",sum/3); } int main() { int selection; while (1) { menu(); printf("\t\t请选择0--4:"); scanf("%d", &selection); switch (selection) { case 1:system("cls");input(); break; case 2:system("cls");show(); break; case 3:system("cls");search(); break; case 4:system("cls");average(); break; case 0:system("cls");exit(0); break; default: printf("\t\t输入有误,请重新输入!\n"); } } return 0; }