问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
int num;
char name[10], name2[10];
int o, s, n, m, w, i, j, id, id2, same=0, *a, *a2;
num = EMPNUM();
EMP();
printf("请输入将修改的职工的人数:");
scanf("%d", &o);
system("cls");
for(i=0; i<o; i++){
do{
printf("您将输入该职工的(1 id,2 姓名):");
scanf("%d", &s);
}while(s<1 || s>2);
system("cls");
if(s == 1){
printf("请输入该职工的id:");
scanf("%d", &id);
printf("职工号 姓名 性别代码 部门编号 基本工资 津贴 个税 其他扣款\n");
for(m=0; m<num; m++){
// printf("%d\n", num);
// printf("%d\n", m);
if(id == Emp[m].id){
printf("%-5d%-s %-3d %3d %-5d %-5d %-5d %-5d\n", Emp[m].id, Emp[m].name, Emp[m].sex, Emp[m].depart, Emp[m].mon, Emp[m].add, Emp[m].per, Emp[m].ele);
*a = m;
a++;
same++;
} //num数值正常, m只会取到Emp[m].id取得到数为止
} //且不再往下走
while(same > 1){
printf("请输入该职工姓名:");
scanf("%s", name2);
for(; !eof(*a); a--){
if(strcmp(name2, Emp[*a].name) == 0){
m = *a;
printf("更改职工为:\n");
printf("职工号 姓名 性别代码 部门编号 基本工资 津贴 个税 其他扣款\n");
printf("%-5d%-s %-3d %3d %-5d %-5d %-5d %-5d\n", Emp[m].id, Emp[m].name, Emp[m].sex, Emp[m].depart, Emp[m].mon, Emp[m].add, Emp[m].per, Emp[m].ele);
break;
}
}
}
运行结果及报错内容
num数值正常, m只会取到Emp[m].id取得到数为止。
即,当id=10时,m只循环十次,num却是100;当id=100,m循环一百次。
程序也不会继续往下走,只会停在Emp[]的输出上,强制退出。
我的解答思路和尝试过的方法
不清楚为什么会这样,希望各位帮帮忙