void change() { printf("\n请输入学生的学号:"); int p,o,m; scanf("%d",&o); for(p=0;p<STUDENT_NUM;p++) { if(o==student[p].no) { printf("\n学号 姓名 年龄 性别 班级 宿舍 电话号码\n"); printf("%-4d%-4s%-4d%-3s%-4d%-5s%s",student[p].no,student[p].name,student[p].age,student[p].sex,student[p].c1ass,student[p].address,student[p].phone); break; } } printf("\n是否修改\n1.是 2.否\n"); scanf("%d",&m); if(m=1) { p1:printf("\n请输入姓名:\n"); getchar(); scanf("%s",&student[p].name); printf("请输入年龄:\n"); getchar(); scanf("%d",&student[p].age); printf("请输入性别:\n"); scanf("%s",&student[p].sex); printf("请输入班级:\n"); getchar(); scanf("%d",&student[p].c1ass); printf("请输入宿舍:\n"); getchar(); scanf("%s",&student[p].address); printf("请输入电话:\n"); getchar(); scanf("%s",&student[p].phone); printf("\n学号 姓名 年龄 性别 班级 宿舍 电话号码\n"); printf("%-4d%-4s%-4d%-3s%-4d%-5s%s",student[p].no,student[p].name,student[p].age,student[p].sex,student[p].c1ass,student[p].address,student[p].phone); printf("\n1.重新修改 2.结束"); getchar(); scanf("%d",&m); if(m=1) { goto p1; } else if(m=2) { printf("\n返回菜单\n"); } } else if(m=2) { printf("\n返回菜单\n"); } }有什么问题
时间: 2024-04-05 13:31:46 浏览: 78
在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈
5星 · 资源好评率100%
这段代码存在以下问题:
1. 第一行应该加上函数返回类型,如`void`。
2. 在第一次输入学号后,没有对输入的学号进行判断,如果输入的学号不存在,则会继续执行,导致出现错误或者异常。
3. 在第二次输入m的时候,应该使用`==`进行判断,而不是`=`,因为`=`是赋值操作符,而`==`才是判断是否相等的操作符。
4. 在第二次输入m的时候,没有对输入的m进行判断,即使输入的不是1或2,也会继续执行,导致程序异常。
5. scanf函数中使用`%s`时,应该不加`&`,因为`%s`已经表示了字符串的地址。而对于`%d`,则需要加上`&`,表示取地址。
6. 当用户选择重新修改时,应该重新输入学生的信息,并且只有当用户确认信息无误时,才退出循环,而不是在输入信息时就要求用户选择是重新修改还是退出。
7. 在输出学生信息时,缺少换行符,导致输出格式不清晰。
阅读全文