求助一个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;
}








