除非跳出多个循环嵌套和远程注入技术,否则尽量少用goto
goto会降低程序的可读性,让代码难以调试
利用递归也可以实现循环结构和do while类似
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
void main1(){
//continue用于选出所有满足条件的,只能用于循环,可以跳出本次执行,继续本轮循环的下一次循环
//break 用于选出一个满足条件的,只能用于循环和switch,可以跳出本轮循环,继续本轮循环后面的语句
//goto可以跳出多层嵌套循环,for,while,dowhile本质是用goto语句实现的,goto语句比较底层
//语句标号是语句前面的标识符,不能是整数,标识符不是变量,不能打印
goto A2; //goto可以跳过A1
A1: printf("hello world"); //A1即是语句标识符
A2: printf("hello world");
getchar();
}
void main2(){
A1: printf("hello world"); //A1即是语句标识符
A2: printf("hello world");
goto A2; //goto形成死循环
getchar();
}
//goto与if配合形成循环
void main3(){
int i = 1;
A1:if (i < 10){ //循环条件
printf("\n%d", i); //A1即是语句标识符
i++;
goto A1; //goto形成循环
}
getchar();
}
///用goto实现三种循环
void main4(){
//输出1-10中不被3整除的数
for (int i = 1; i <= 10; i++){
if (i % 3 == 0){
continue;
}
printf("%d\n", i);
}
//用goto改写
int j=0;
A1:if (j <10){
j++;
if (j % 3 == 0){
goto A1;
}
printf("%d\n", j);
goto A1;
}
getchar();
}
void main(){
//输出1-10中第一个能被3整除的数
for (int i = 1; i <= 10; i++){
if (i % 3 == 0){
printf("%d\n", i);
break;
}
}
//用goto改写
int j = 0;
A1:if (j <10){
j++;
if (j % 3 == 0){
printf("%d\n", j);
goto A2;
}
goto A1;
}
A2:getchar();
}