c语言循环第一句不写,C++学习(十)(C语言部分)之 分支语句

本文详细介绍了C语言中的分支结构,包括if-else、switch语句和三目运算符的使用,通过实例演示了如何实现条件判断、嵌套分支及选择性执行。涵盖了基本逻辑控制和条件表达式的各个方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include // std 标准  io ---->  input  output  输入 输出  printf scanf getchar ......

#include // system libary库

//预处理命令 可以当做注释用

#if 0 //#if 条件 如果调件满足 后面的这段程序会被编译

#elif 1 //else if条件2

#else // else

#endif // 作为结束的标记

一、c语言中有三大流程

1、顺序结构 从上往下 依次执行 最基础的结构

例如:

将下列语句 依次执行 输出

f20de7398eb4e30014715cc898695eef.png

a0fd35443a8d94e28a2ada0b34df62b4.png

2、循环结构  就是一个一直执行的过程

比如:一直吃  就是循环

3、分支结构  就是一个带有选择性的

比如:“你今天吃饭还是不吃饭?” 根据当前情况进行选择   吃或者不吃就是分支

二、分支

分支

1、if else

> < = !=

! && ||

数字也可以作为条件

格式:

if(饿){吃;}//只有if没有else

if(条件)(语句1)//有if和else

else(语句2)

嵌套 if的()或者else的()里面还有if--->嵌套

if(条件1){语句2} //多层分支

else if(条件2){语句2}//可以有多个else if

......

else if(条件n){语句n}

else {语句}

先判断if if成立执行语句1 直接跳出

if不成立 判断else if 语句2 条件2成立执行语句2

注意点:

1、有if不一定有else 但是有else必定有if

2、if 语句后面不要加分号

如果if满足不执行任何语句可以加分号

3、关于{}的省略

不加{} if只匹配离他最近的一句

如果{}只有一句 那么可以省略{}

刚刚开始写 不熟练就不要省略了

4、条件的写法

if(20==x) 涉及到 == 的时候 常量放左边 避免少写=

最简单的例子:

d8db9e22838706adb5afbf7dcea065ac.png

b3b4104a545581afa6319a8e48a29a5f.png

如上图的程序 因为x=1,不满足x>2的条件 所以直接执行后面的语句

如果改为x=3则会执行 括号里面的语句

b1715b37eb6ea958565d11d58dd687b8.png

215f422003e189d74b923f67a1ae3fe9.png

有else的语句://else是可以省略的

ffb95046a5004cb3f9efcb61f5f51fd3.png

83e90182d4eb84fec8ef7ecf6003c612.png

25e847e25c0678afa302f167f5632ba5.png

55e24ae4764e7c85c7838ae3de86665a.png

所以 条件不同时 就会执行不同的语句

条件嵌套例子;

30a7fc1522b509e66f36cbbfc1d332af.png

当前语句会执行49行这一句

3f0153b99874701cef5f5a171f741c8b.png

改变一下条件 男士改为女士

650ee6d3845e811f94674223a29d5c9c.png

当前会执行第53行的语句

085fa34a75f7ebadda8cf77b24fca501.png

多层嵌套;

8d95f0054b44489b70f0536db8108911.png

1c1636bdb26dad5992bbf21d9f7b1037.png

d7b529744ec8938eb9c11ea87ba22c80.png

在改代码中 一个 = 表示赋值   ==  表示等于

根据设置断点 逐语句调试 最终执行的是第85行代码 然后跳出循环

de2d76e47041d2f41c23cd4b8a21e9b0.png

用数字做判断条件 0为假 其他数字为真

9136d05eac825f008c933cbef451991b.png

59339bede2ccb25c07d71872dfde3a66.png

因为条件为假 所以不执行里面的语句

9e47a65645dd90a9428c0cc1898a4f2f.png

2c4beb25454866bbad2f238cffb263f1.png

如果在if后面加分号

839d9949c57bdeab0cd53bdabdd479bf.png

0e8137d478b6457d7e6321cce3e580d3.png

他就会直接执行后面的语句

所以 if(o);   就等价于  if(0){}

有关{}的省略

adbe8bd4c685806e9ac8d9f1beab83d9.png

4934938bed7b8cac3daf67d08b4596ef.png

省略{}后

6c60abc32cb9ca23a82d7ee2b4882cad.png

92b58ae05db7477c3f2c65c7cae917b0.png

说明 if 只控制第一句

2、switch

用于枚举出所有的选项

格式;

switch(变量)

{括号不能省略

default: 语句;break;//可以放在其他位置 也可以省略

case 常量1;break;

case 常量2;break;

...

}

//比较case后面的常量的值 和变量的值 相等就执行

都不相等 就执行default

所有可能的选项都能列举出来就用switch (可以和枚举搭配)

所有分支全部可以用if,但是某些情况下switch更加简洁

注意 1:default可以放任何地方 也可以不写 但是一个switch里面只能有一个default

2:case后面的值不能相同 case后面只能是整型和单个字符 不可以是 小数和字符串(中文算字符串)

3:break case和default后面

先匹配对应的case 或者default 然后一直往后执行 直到遇到break结束

例如:

1a953445145c018af6289f26b1459816.png

94f46d5eb87d68f1dce5cb08a48c8385.png

当我们删除后面的break时

0e603dd7b4ca09d67a2f1303e3fd9560.png

2ebb1bdd24f54eabe636234b49cfc1db.png

之所以会输出这样的结果是因为 当代码week=5 匹配到第138行时  开始执行 但是因为138行的break没有的 所以不会停下来 继续往后面执行 知道遇到break时调出循环

所以会打印出两个结果

三目 也可以作为分支

?:

if(条件){语句1;}

else{语句2;}

条件?语句1:语句2  // 稍微简单点

x=3>4?3:4;

等价于

if(3>4){x=3;}

else{x=4;}

181e0c136a751486afe0df3bbd724766.png

1d688d24467a13793522a8e6e7e4b482.png

同一个问题 两种处理方式   上面的是if else语句  下面的是三目运算

调试代码如下:

1 /*

2 1、顺序结构 从上往下 依次执行

3 2、循环结构 一直吃

4 3、分支结构 吃或者不吃

5

6

7 分支

8 1、if else

9 > < = !=

10 ! && ||

11 数字也可以作为条件

12

13 格式:

14 if(饿){吃;}//只有if没有else

15

16 if(条件)(语句1)//有if和else

17 else(语句2)

18

19 嵌套 if的()或者else的()里面还有if--->嵌套

20

21 if(条件1){语句2} //多层分支

22 else if(条件2){语句2}//可以有多个else if

23 ......

24 else if(条件n){语句n}

25 else {语句}

26 先判断if if成立执行语句1 直接跳出

27 if不成立 判断else if 语句2 条件2成立执行语句2

28

29 注意点

30 1、有if不一定有else 但是有else必定有if

31 2、if 语句后面不要加分号

32 如果if满足不执行任何语句可以加分号

33 3、关于{}的省略

34

35 2、switch

36 格式;

37

38 switch(变量)

39 { 括号不能省略

40 default:语句;break;//可以放在其他位置 也可以省略

41 case 常量1;break;

42 case 常量2;break;

43 ...

44 }

45 //比较case后面的常量的值 和变量的值 相等就执行

46 都不相等 就执行default

47

48 所有可能的选项都能列举出来就用switch (可以和枚举搭配)

49 所有分支全部可以用if,但是某些情况下switch更加简洁 三目也简单

50

51 注意 1:default可以放任何地方 也可以不写 但是一个switch里面只能有一个default

52 2:case后面的值不能相同 case后面只能是整型和单个字符 不可以是 小数和字符串(中文算字符串)

53 3:break case和default后面

54 先匹配对应的case 或者default 然后一直往后执行 直到遇到break结束

55

56 三目 也可以作为分支

57 ?:

58

59 if(条件){语句1;}

60 else{语句2;}

61 条件?语句1:语句2 // 稍微简单些

62 x=3>4?3:4;

63

64 等价于

65

66 if(3>4){x=3;}

67 else{x=4;}

68

69 */

70

71 #include

72 int main()

73 {

74

75 /*

76 int weight = 103;

77 char sex = 'W';

78 if (weight <=100)//条件满足 执行()中的语句

79 {

80 printf("吃饭\n");//语句1

81 }

82 else//条件不满足 执行else中的语句 else是可以省略的

83 {

84 if (sex == 'M')//男士

85 {

86 printf("吃饭\n");//体重大于100 并且sex是男士

87 }

88 else

89 {

90 printf("节食\n");

91 }

92

93 }

94 */

95

96 /*

97 int week = 5;//表示周五

98 if (week == 1)

99 {

100 printf("周一\n");

101 }

102 else if(week==2)

103 {

104 printf("周二\n");

105 }

106 else if (week == 3)

107 {

108 printf("周三\n");

109 }

110 else if (week == 4)

111 {

112 printf("周四\n");

113 }

114 else if (week == 5)

115 {

116 printf("周五\n");

117 }

118 else if (week == 6)

119 {

120 printf("周六\n");

121 }

122 else if (week == 7)

123 {

124 printf("周末\n");

125 }

126 else//当上面的条件全部不成立的话就执行该语句

127 {

128 printf("输入错误!!!\n");

129 }

130 */

131

132 /*

133 if (0)//条件为假

134 //{

135 printf("hello world!\n");//不加{} if只匹配离他最近的一句

136 printf("你好世界!\n");

137 //}

138 */

139

140 /*

141 int week = 5;

142 switch (week)

143 {

144 default: printf("错误\n"); break;

145 case 1: printf("周一\n"); break;

146 case 2: printf("周二\n"); break;

147 case 3: printf("周三\n"); break;

148 case 4: printf("周四\n");// break;

149 case 5: printf("周五\n"); //break;

150 case 6: printf("周六\n"); break;

151 case 7: printf("周末\n"); break;

152 }

153 */

154

155 /*

156 int x = 1, y = 2, z = 3;//找到最大值

157 int max;

158 if (x > y)

159 {

160 //x比y大

161 if (x > z)

162 {

163 max = x;//x最大

164 }

165 else

166 {

167 max = z;

168 }

169 }

170 else

171 {

172 if (y > z)

173 {

174 max = y;

175 }

176 else

177 {

178 max = z;

179 }

180 }

181 printf("%d\n",max);

182 */

183

184 /* 三目运算

185 max = x > y ?( x > z ? x : z) :( y > z ? y : z);

186 printf("%d\n", max);

187

188 */

189

190 getchar();//接收一个字符 防止闪屏

191 return 0; //函数结束

192 }

193

194

195

196

197 //预处理命令 可以当做注释用

198 #if 0 //#if 条件 如果调件满足 后面的这段程序会被编译

199

200 #elif 1 //else if条件2

201

202 #else // else

203

204 #endif // 作为结束的标记

2018-06-18 13:09:38

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值