小白初学C语言,学完分支与循环语句总结如下:
C语言是结构化的程序语言:1.顺序结构 2.选择结构 3.循环结构
这里只总结选择结构中的分支语句和循环语
目录
什么是语句
if语句
switch语句
循环语句
while循环
for循环
do while循环
go to语句
首先,什么是语句?
C语言中由一个分号隔开的就是一条语句。例如:
printf("hehe");
1+2;
int main()
{
int a=0;
;//空语句
return;
}
分支语句(选择结构)
如果你好好学习,校招时拿一个好offer,走上人生巅峰;
如果你不好好学习,毕业等于失业,回家卖红薯。
这就是选择。
if语句
语法结构:
1.单分支: if(表达式)
语句
int main()
{
int age=20;
if(age<18)
printf("未成年\n");
return 0;
}
2.双分支 :if(表达式)
语句一;
else
语句二;
int main()
{
int age=20;
if(age<18)
printf("未成年\n");
else
printf("成年\n");
}
3.多分支:if(表达式1)
语句1;
else if(表达式)
语句2;
else
语句3;
悬空else
else有匹配原则:else与离他最近的未匹配的if进行匹配
p1中:因为else与最近的if匹配,所以当a!=1时,直接跳出不打印
p2中:要想打出haha,将第二个if用{}括起来
p3中:代码风格是差的
if形式对比
C语言中:= 表示赋值,== 表示判断
未来如果涉及到常量与变量的比较,我们可以将常量写在前面,这样可以避免==写成=,出现bug
练习
1.判断奇数(% 求余符号)
输入n,除以2,如果余数为0,则n为偶数
如果余数为1,则为奇数
2.输出1-100间的奇数
两种方法:(1)除以2,判断余数是否为1或者不为0,然后while一直循环到100
(2)定义i=1开始循环+2到100
switch语句
switch语法:
switch(整形表达式)
{
语句项;
}
语句项: 是一些case语句
case整型常量表达式:语句
switch语句也是一种分支语句,常常用于多分支的情况
使用场景:
- switch语句从case进去,break终止出来,所以两者搭配使用
- switch语句是整形语句,后面必须是整形
- case后面也必须是整形常量表达式,所以不能用 n
根据需求,如果1-5是工作日,6.7是休息日也可以写成这样
建议即使是最后一个也加上break
- defaut可以处理非法状况,如输入8 9,可以出现在任何位置
- 可以加if语句,不能加continue
下面我们看一下这种情况:
- 因为n=1,所以进入switch语句中的case1,因为没有break所以进入后面的case 2、case3中的case2,再进入case4,遇到break出来,所以最后m=5,n=3
循环语句
- while
- for
- do while
while循环的执行流程:
while循环
我们已经掌握 if 语句:应为这个语句只会循环一次
但我们实际生活中,同一件事情我们往往需要完成很多次,所以C语言中引入了while语句,可以循环很多次
while语句的语法结构是:
while(表达式)
循环语句
in main()
{
while(1)// 1为真,0为假
printf("hehe");
return 0;
}
- 打印出 hehe 的死循环
打印1-10之间的数字
in main()
{
int i=1;
while(i<=10)
{
printf("%d\n",i);
i++;
}
return 0;
}
while循环中的break和continue
break在while循环中的作用:
在循环中只要遇到break就直接终止循环!
int main()
{
int i=1;
while(i<=10)
{
if(5==i)
break;
printf("%d\n",i);
i++;
}
return 0;
}
- i=1<10 进入while循环中,进入if 判断 i !=5,打印、增加,一直到 i=5进入if 判断成功,遇到break直接终止循环,所以屏幕上打印出1、2、3、4
continue在while循环中的作用:
continue终止本次循环,在continue后面的语句不在执行,直接进入下一次while循环中
- i=1<10进入while循环,进入 if 判断 i!=5,打印、增加,一直到 i=5,进入if 判断成功,遇到continue 跳过后面语句,进入下一循环,直到 i>10,跳出循环。所以屏幕上打印出1、2、3、4、6、7、8、9、10
for 循环
语法:
for(表达式1;表达式2,表达式3)//建议写成前闭后开
循环语句
表达式1为初始部分,表达式2是条件判断部分,表达式3为调整部分
情景:
因为while无法将初始、判断、调整放在一起,所以用 for 循环
应用:
for循环的流程图:
由上图可以清楚的看到 for 循环的执行流程
for 循环中的 break 和 continue
for循环中的break和while中的break意义相同
int main()
{
int i=0;
for(i=0;i<=10;i++)
{
if(5==i)
break;
printf("%d",i);
}
return 0;
}
屏幕上打印出来时:1、2、3、4
for循环中的continue与while中的意义形同,但在其他方面也有不同
- 由上图,我个人的理解是,图1是i++在continue的前面,所以可以打出1、2、3、4、6、7、8、9、10;图2是i++在continue后面,所以打印出1、2、3、4后死循环
for循环控制变量的一些建议
1.不可在for循环体内修改循环变量,防止for循环失去控制
- 因为在 for 循环内的 if 语句中将 i赋值为5,使得这个代码成为死循环一直打印 hehe 和 haha
2.建议在 for 语句循环控制变量的取值采取 “前闭后开的写法”
- 因为这样写的话,10有一定的意义,比如:10次循环,10次打印,10个元素
for循环的变种
1.变种一:
- for 循环的初始话、判断、调整都可以省略
- 如果判断省略,那判断条件恒为正
判断可以省略,但是不能随便省略
- 这个循环中因为 j 的判断条件被省略,所以每次循环 j 不会被重新赋值,当 j >10时,最里面的 for 语句不再执行,所以屏幕上只能打印出 10 个 hehe
2.变种二:
int main()
{
int x, y;
for(x=0,y=0;x<2 && y<5; ++x; ++y)
{
printf("hehe");
}
return 0;
}
- 这个代码中有两个变量 x,y 要同时满足,这个代码才可以被执行,所以这个代码打印两个hehe
一道笔试题:
- 因为在 for 语句的判断处,k 被赋值为0,0为假,所以不循环
- 如果 k 被赋值为非0,则为死循环
do while 循环
do语句的语法:
do
循环语句;
while(表达式);
执行流程图:
实例:打印1-10的数字
- 也可以根据条件状语从句理解
- 因为 do while语句上来就干,再判断循环,所以至少打印一次
do while语句中的 break 和 continue 和前面的可以同一思路理解
go to语句
C语言中提供了可以随意滥用的go to语句和标记跳转的标号
从理论上 go to 语句是没有必要的,实践中没有 go to 语句也可以容易写出代码
但是它可以终止程序在某些深度嵌套的结构的处理过程,例如:一次跳出两层或多层循环
int main()
{
again;
printf("hello bit");
goto again;
return 0;
}
- again放在哪里,go to就跳到哪里
int main()
{
printf("hello bit");
goto again;
printf("你好");
again;
printf("hehe");
return 0;
}
- 这里打印出来是没有 你好 的
- goto 语句在代码里是可以跳来跳去的,可能会使代码的执行流程被打乱
goto 语句并不是一无是处:
- 这里要跳出,用 break 只能跳出一层,而用 goto 可以一次 跳出
下面是使用 goto 语句的一个例子:
一个关机程序
- 设置一个关机命令 shutdown-t-s60,60s后关机
- system-执行系统命令 ,给定以后就开始60s倒计时的操作
- 然后给用户一个友好的提示”请注意您的电脑将在1分钟后关机,请输入:我是猪 就取消关机
- 然后用 if 判断输入的是否与 我是猪 相等,,若相等则取消关机
- 若输入错误,则用 goto 再给提示一下
可以搜索百度,把这个文件以服务装在朋友的电脑上,把属性改成自动,然后就变成开机一分钟后关机,然后你可以很装逼地帮朋友解决,哈哈哈哈哈
到这里,分置于循环语句就总结完了
紧随鹏哥脚步,认真学好C语言
如果有什么错误的地方,请务必指出!