for(flag=1;i=0;flag&&<m;i++) 循环中的&&是什么意思啊?跪求!
答案:2 悬赏:60
解决时间 2021-03-21 06:42
- 提问者网友:残阳碧曼
- 2021-03-20 17:31
//这个是del()函数
void del()
{
system("cls");
int m=load();
int i,j,n,t,flag;
char name[20];
printf("\n 原有的学生信息为:\n");
display();
printf("\n");
printf("请输入要删除的学生的姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i {
if(strcmp(stu[i].name,name)==0)//strcmp函数用来字符串复制
{
printf("\n学号\t姓名\t性别\t年龄\t生日\t电子邮箱\t住址\t电话 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%s\t%s\t%ld\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].birthday,stu[i].mail,stu[i].address,stu[i].tel);
printf("\n是否要删除此人信息??\n是请按1,不是请按0:\n");
scanf("%d",&n);
if(n==1)
{
for(j=i;j {
strcpy(stu[j].name,stu[j+1].name);
stu[j].num=stu[j+1].num;
stu[j].sex=stu[j+1].sex;
stu[j].age=stu[j+1].age;
strcpy(stu[j].birthday,stu[j+1].birthday);
strcpy(stu[j].mail,stu[j+1].mail);
strcpy(stu[j].address,stu[j+1].address);
stu[j].tel=stu[j+1].tel;
}
flag=0;
}
}
}
if(!flag)
m=m-1;
else
printf("\n无此人信息!\n");
printf("\n 浏览删除后的所有学生信息:\n");
save(m);
display();
printf("\n是否继续删除信息\n 继续请按1\n不继续请按0\n");
scanf("%d",&t);
switch(t)
{
case 1:del();break;
case 0:break;
default :break;
}
}
最佳答案
- 二级知识专家网友:抱不住太阳的深海
- 2021-03-20 18:39
for语句中的判断条件有点问题,应该是:for(flag=1;i=0;flag&&i
&&是条件与的意思,表示要同时满足条件才会执行for语句循环体的内容,即flag要为1并且i要小于m。
全部回答
- 1楼网友:承载所有颓废
- 2021-03-20 18:44
当flag=1,i>0时,flag&&i的值都是1.。当flag=0,flag&&i的值都是0,此时for循环中,不管i累加到多少,都不能结束循环,而整个for循环中都没有结束循环的语句,如break出现,只能等i超过em的边界后,if(strcmp(em[i].name,name)==0)就会报错。 所以这里设计有点小问题。 由于for循环后面有一个if判断,if(flag==1) printf("\n对不起,查无此人!\n");说明, flag=0,代表找个name。而如果flag还是之前for语句中的初值1,就是没找到。 为了让程序更好无bug的运行,建议修改一下for循环中if(n==1)的判断,并加入break结束标志。 修改for代码如下: for(flag=1,i=0;flag&&i<m;i++) { if(strcmp(em[i].name,name)==0) { printf("\n已找到此人,原始记录为:\n"); printf("工会成员号\t姓名\t性别\t出生年月\t是否婚配\t子女个数\n"); printf("\n %d\t\t%s\t%s \t%d\t\t%s\t\t%d\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].marry,em[i].child); printf("\n确实要修改此人信息请按 1 ; 不修改请按 0; "); scanf("%d",&n); if(n==1) { printf("\n需要进行修改的选项\n 1.工会成员号 2.姓名 3.性别 4.出生年月5.是否婚配 6.子女个数\n"); while(1) { printf("请输入你想修改的那一项序号: "); scanf("%d",&c); if(c>6||c<1) {printf("\n选择错误,请重新选择!\n");} else {break;} } } flag=0; }
我要举报
大家都在看
推荐资讯