导言:
在人生中我们总会有选择,**如下一顿吃啥?**又或者每天都是在重复,吃饭!!!!,当然在C语言中也有选择和重复那就是分支语句与循环语句
文章目录
- 分支
- 循环
- 循环中的关键字
分支
在C语言中可以实现分支的有俩种语法
- if ,else if ,else
//他可以实现单分支也可以实现多分支//简单的单分支的情况
int decide;
scanf("%d",&decide);
printf("是否要好好学习C语言(Y/N):")
if(decide == "Y")printf("你在不懈努力下学会C语言")
elseprintf("你没有学会C语言");//多分支,最近学习考试给分不是已经按照不及格,及格,良,优秀,而不是分数,那按照上面的当分支的情况显然无法满足
int mark;
if(mark<60)printf("不及格");
else if(mark<80)printf("及格");
else if(mark <90)pritf("优秀");
elseprintf("优秀");
tips:
//当你只有1条语句的时候 `{}`是可以省去的,但是他会引发一个问题
int a =20;
if(a >10)if(a == 20)printf("haha");
elseprintf("hehe");//你会不会立说结果是 hehe呢,其实是haha,因为else会与最近的if匹配,那么上述的代码调整一下就是如下所示:
int a =20;
if(a >10)if(a == 20)printf("haha");elseprintf("hehe");//那么你在这里其实也可以看出一个现象,那就是if+else+无落多少个else if 都只算一条语句
- switch
//多用于不同数据同一结果,多分支来简化,主要语法如下
switch(值)
{case 值1:break;case 值2:break;case 值3:breakcase 值4:breakcase 值5:breakdefault:break;
}//1. case就等同与if但是他的值只有和switch的值一样才可以进入
//2. 如果case 后没有break就会一直执行下面case
//3. default可放在任何位置int i =0;
switch(1)
{case 1:case=2:case 3:case 4:case 5:default:i++;
}
//结果是1 当进入case 1 没有brea解说判断则会一直往下知道找到break,或者判断结束
循环
- while(条件) { 语句 }
//一般用于不知道需要循环次数的情况
//这个其实就是if的进化版,if只执行一次,而while可执行多次//不知道你是否听过1万小时定律,就是某件事知道学习进行1w小时那么你就算是在这件事上有话语权
int hour = 0; //与条件相关的变量
while(hour <10000) //条件
{hour++;//调整部分/执行的语句
}
printf("在你不懈的努力下,你终于在这件事有了一定的话语权")
- for( ; ; ) {}
//用于知道循环次数的情况
int hour;
for(hour = 0/*初始化*/;hour<10000/*条件*/;hour++/*调整部分*/)
{//循环体
}
printf("在你不懈的努力下,你终于在这件事有了一定的话语权")//1. for循环初始化可以定义变量但是事在C99版本出的之前版本不匹配,那么跨平台性就不好所以建议分离出来,且分离出来那个变量还可以再次使用
// 2. 且初始化部分和调整部分可以省但是建议写上,方便自己观看,也可以减少出现bug的次数
int i,j,number=0;
for(i = 0;i<10;i++)
{for(;j<3;j++){number++;}
}
//你觉得number是多少,如果你说30那么你就进坑了,因为j没初始化j在第一次循环就是3那么就不会进入循环了
- do {}while();
//一般用于循环体的内容需要一定一次的情况下,如开机启动
//实现1万小时的代码
int hour =0;
do
{hour++;
}while(hour==10000);
printf("在你不懈的努力下,你终于在这件事有了一定的话语权")//如启动10次程序
int number =0 ;
do {//循环体//启动程序number ++;
}while(number <10/*判断*/);
循环中的关键字
- continue
//用于跳过本次循环,也就是执行到这句代码后面的代码都不执行了
int arr[]={1,2,3,4,5,6,7,8,9}
int index= 0;
while(index <=sizeof(arr)/sizeof(arr[0]))
{if(arr[index++] ==5)continue;printf("%d",arr[i]);
}
//结果1,2,3,4,6,7,8,9
- break
//用于终止循环
int arr[]={1,2,3,4,5,6,7,8,9}
int index= 0;
while(index <=sizeof(arr)/sizeof(arr[0]))
{if(arr[index++] ==5)break;printf("%d",arr[i]);
}
//结果1,2,3,4
- goto
//多用于跳出多层嵌套的循环,可以用于服务器出问题进行备份,如下伪代码
copy://备份数据
while(1)
{while(1){while(1){while(1){if(/*出问题/*)goto copy;}}}
}//goto 可以跳转到任何设置过标签的位置,有没有点像哈利波特传送哈哈哈,但是这里会导致代码逻辑混乱,一般不建议使用