因为break是用于跳出循环或switch语句结构,但仅仅在一个if里面是不能使用break的,所以报错了;
可以把if-else语句放到for循环中;然后去掉第二个if的后面的分号。
修改如下:
参考链接:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
int i=0;
char password[20]={0};
for(i=0;i<3;i++){
printf("请输入密码!>");
scanf("%s",password);
// 将这个判断密码是否正确的if-else语句放到for循环里
// 然后if里的break就不会编译报错了
if(strcmp(password,"123456")==0){
printf("密码正确\n");
// https://zhuanlan.zhihu.com/p/35581823
break;
}else{
printf("密码错误\n");
}
}
if(i==3) // 这个if后面的分号去掉
{
printf("输入密码超出限制,请下次再试\n");
}
return 0;
}
你这个break是想break什么
没在循环里面
你这个break多余的
嵌套错了,if 要在 for 里面。
#include <stdio.h>
#include <string.h>
int main()
{
int i;
char passwordId[20] = {};
for (i = 0; i < 3; i++)
{
printf("请输入密码!> ");
scanf("%s", passwordId);
if (strcmp(passwordId, "123456") == 0)
{
printf("密码正确\n");
break;
}
printf("密码错误\n");
}
if (i == 3)
{
printf("输入密码超出限制, 请下次再试\n");
}
return 0;
}
这里break用的有问题的,break语句用于switch,while或for等循环语句中,做跳出循环使用,你这里直接在main函数没法跳出循环啊!肯定就报错非法了不!能明白不?有问题可以私聊
break只用在switch或循环结构里。
如下:
①控制台会一直从累加1到100000000;
#include<stdio.h>
int main() {
for (int i = 1;i <= 100000000;i++) { //用for循环做循环直到i=100000000
printf("%d\n", i); //输出i
}
}
②加上控制语句,if累加到100立即break;
#include<stdio.h>
int main() {
for (int i = 1;i <= 100000000;i++) { //用for循环做循环直到i=100000000
printf("%d\n", i); //输出i
if (i == 100) { //累加到100
break; //跳出循环
}
}
}
③如下图累加到100停止;
switch语句中跳出case分支参考>>>case精解