user-0 提问: 班级管理系统程序报错，求解答

回复:
user: user-1
content: #include<stdio.h> #include<stdlib.h> //#include<windows.h>  void menu(); void imput();  struct student{     char name[10];     int num;     char dorm[10];     char qq[50];     char phone[50]; };  void menu() {     printf("********************************************\n");     printf("***               170140342班            ***\n");     printf("********************************************\n");     printf("********************************************\n");     printf("******         班级同学管理系统       ******\n");     printf("******1.         输入学生信息         ******\n");     printf("******2.         保存学生信息         ******\n");     printf("******3.      显示系统中的学生资料    ******\n");     printf("******4.         查询学生信息         ******\n");     printf("******5.         修改学生信息         ******\n");     printf("******6.         删除学生信息         ******\n");     printf("******7.         添加学生信息         ******\n");     printf("******8.         排序学生信息         ******\n");     printf("******9.           退出系统           ******\n");     printf("********************************************\n");     printf("请选择操作项目："); }  void imput() {     int a,b=0;     struct student stu[100];     printf("学生人数：");     scanf("%d",&a);     system("cls");     while(b<a)     {         printf("学号:");         scanf("%d",&stu[b].num);         //fflush(stdin);         printf("姓名:");         //scanf("%d",stu[b].name);         scanf("%s",stu[b].name);         //fflush(stdin);         printf("宿舍:");         //scanf("%d",stu[b].dorm);         scanf("%s",stu[b].dorm);         //fflush(stdin);         printf("QQ:");         //scanf("%d",stu[b].qq);         scanf("%s",stu[b].qq);         //fflush(stdin);         printf("电话:");         //scanf("%d",stu[b].phone);         scanf("%s",stu[b].phone);         system("cls");         b++;         if(stu[b].num<=0||stu[b].num>=70)         {             printf("%d%s%s%s%s",stu[b].num,stu[b].name,stu[b].dorm,stu[b].qq,stu[b].phone);             b--;             printf("信息有误，请重新输入学号:");             scanf("%d",&stu[b].num);             //fflush(stdin);             printf("姓名:");             //scanf("%d",stu[b].name);             scanf("%s",stu[b].name);             fflush(stdin);             printf("宿舍:");             //scanf("%d",stu[b].dorm);             scanf("%s",stu[b].dorm);             //fflush(stdin);             printf("QQ:");             //scanf("%d",stu[b].qq);             scanf("%s",stu[b].qq);             //fflush(stdin);             printf("电话:");             //scanf("%d",stu[b].phone);             scanf("%s",stu[b].phone);             printf("%d%s%s%s%s",stu[b].num,stu[b].name,stu[b].dorm,stu[b].qq,stu[b].phone);          }     } } void main() {     int a;     menu();     scanf("%d",&a);     switch(a)     {         case 1:system("cls");imput();break;     }     system("pause"); }  参考一下吧 除了num之外，其他的都是字符数组，因此输入格式应该是%s; fflush(stdin);是未定义行为，建议去掉；不用一样可以实现输入的缓存清空。因为你的输入里面没有%c格式。

user: user-2
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-3
content: 看你if语句前面的b++，b在你输入一个学生信息后为1，这时你数组里面只有0号元素有正确的值，其他的还没与初始化，所以if语句会出错。还有你前面使用scanf输入字符串的时候格式控制符为%d，应该写%s 遇见这些问题先找下程序设计上面有没有逻辑问题，没有了单步调试。

user: user-0
content: 自顶   别沉 别沉