day3-分支和循环

本文介绍了Python中的if-elif-else多分支结构、if嵌套、三目运算符及for和while循环的应用。通过实例展示了不同场景下如何选择合适的控制结构。

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

总结

if多分支结构

  • 1.if-elif-else

应用场景:针对不同的条件实现不同的操作。(不同的条件之间满足:如果其中一个条件已经满足了,就没有再判断其他条件的必要)

语法:
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3

else:
代码段N

注意:后面的条件是在前面的条件不成立的前提下进行判断的

# symbol为+时就+2,为-时就-2,为*时就*2,为%时就%2,否则不能操作
symbol = '%'
num = 20
if symbol == '+':
    num += 2, print(num)
elif symbol == '-':
    num -= 2, print(num)
elif symbol == '*':
    num *= 2, print(num)
elif symbol == '%':
    num %= 2, print(num)
else:
    print('不能操作')

if嵌套和三目运算符

    1. if嵌套

      在if语句中有其他的if语句

if 条件语句:
    if 条件语句:
        代码段
    else:
        代码段
else:
    代码段

#练习:如果num是奇数就打印奇数,否则打印偶数,如果个位数为0,打印10的倍数

num = 51
if num % 2 == 0:
    print('偶数')
    if num % 10 == 0:
        print('10的倍数')
else:
    print('奇数')
  • 2.三目运算符

1)C的三目运算符:
表达式1?表达式2:表达式3 - 判断表达式1的值是否为真,如果是整个运算的结果是表达式2,否则整个运算结果是表达式3

int result = 10>20?30:40
printf(&result)

2)python的三目运算符
表达式2 if 表达式1 else 表达式3 - 判断表达式1的值是否为True,如果是整个运算的结果是表达式2,否则整个运算结果是表达式3

相当于

if 100 > 20:
    result = 30
else:
    result = 40
print(result)
# 练习:根据年龄值打印是否成年
age = 17
result = '成年' if age >= 18 else '未成年'
print(result)

for循环

  • 1.for循环

语法:

for 变量 in 序列:

​ 循环体

说明:
1)for - 关键字;固定写法
2)变量 - 和定义变量的时候变量名的要求和规范一样;(如果这个变量在循环体中不使用,变量名可以用_代替)
3)in - 关键字;固定写法
4)序列 - python中容器型数据类型,例如:字符串、列表、元组、集合、字典、迭代器、生成器、range等…
5) : - 固定写法
6)循环体 - 和for保持一个缩进的一条或者多条语句;需要重复执行的代码

执行过程
让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体。
(for循环的执行次数,看序列中元素的个数)

  • 2.range函数 - 产生指定范围的数字序列

range(N) - 产生一个[0,N)的数字序列,例如:range(4)- 产生0,1,2,3
range(M, N) - 产生一个[M, N)的数字序列(M<N,并且M和N都是整数);
range(M,N,step) - 产生一个[M, N)的数字序列,每次数值增加step;例如range(-3, 3, 2)

# 练习1: 计算1+2+3+4....+100的和
sum = 0
for x in range(1, 101):
    sum += x
    print(sum)
# 练习2.统计1000以内能够被3整除的数的个数
# 方法一
result = 0
for x in range(1000):
    if x % 3 == 0:
        result += 1
print(result)

# 方法二
y = 0
for x in range(0, 1000, 3):
    y += 1
print('ww', y)
# 练习3:打印1000以内能被3整除并且个位数是2的所有数

for x in range(1000):
    if x % 3 == 0 and x % 10 == 2:
        print(x, end=' ')

while循环

  • 1.while循环

语法:
while 条件语句:
循环体(代码)

说明:
1)while - 关键字:固定写法
2)条件语句 - 任何有结果的表达式都可以(赋值语句不行)
3) : - 固定写法
4) 循环体 - 和while保持一个缩进的一条或者多条语句;需要重复执行的代码

执行过程:
先判断条件语句是否为True,如果是就执行循环体,执行完再判断条件是否为True,一直循环,直到条件语句为False

# 练习:打印五次'hello world'
x = 0
while x < 5:
    print('hello world')
    x += 1
  • 2.for循环和while循环的选择

如果循环次数确定 - for循环
如果循环次数不确定 - while循环

x = input('请输入:')
while x != '0':
    x = input('请输入:')
<think>好的,我现在需要回答用户关于C语言分支结构循环结构的语法及用法的问题。用户要求结构清晰,分步解释,并提供示例,同时生成相关问题。首先,我需要回顾自己掌握的C语言知识,并查看用户提供的引用内容,确保回答准确且符合参考资料。 首先,用户提到的引用[1]、[3]、[4]、[5]涉及分支循环结构的基础知识。引用[1]概述了三大结构,引用[3]详细讲解了分支语句如ifswitch,以及循环结构如while、for、do-while。引用[4]强调了循环结构在处理重复任务的优势,而引用[5]提供了switch的示例代码。这些内容都是回答的重要依据。 接下来,我需要将分支循环结构分开讲解。分支结构包括if语句switch语句。对于if语句,要说明基本语法、else的使用、多条件分支悬空else问题。引用[3]中提到了这些点,特别是嵌套if悬空else的问题,需要解释清楚。然后,switch语句的结构、casedefault的顺序,以及break的作用,引用[5]中的示例可以很好地说明这一点。 循环结构部分,用户需要覆盖while、fordo-while循环。引用[2][4]讨论了循环的应用场景基本工作原理,比如表达式控制重复执行。需要分别说明每种循环的语法、适用场景,并给出示例代码。例如,while循环适合不确定循环次数的情况,for循环适合已知次数,do-while至少执行一次。同时,要注意对比它们的不同,如引用[3]提到的forwhile的区别。 在编写示例代码时,要确保语法正确,比如if后的条件需要括号,循环结构中的变量初始化更新。例如,在switch的例子中,每个case后面是否有break会影响流程,引用[5]中的例子展示了正确的使用方式。另外,循环示例要包括基本的变量初始化、条件判断迭代步骤。 用户可能容易混淆的地方,比如switch中不加break导致的贯穿现象,或者do-while与while的区别,需要特别指出。同时,引用[4]提到的使用循环代替多重分支来处理重复任务的情况,可以作为一个应用场景的例子,比如统计休息日的天数。 最后,生成的相关问题需要围绕分支循环的扩展知识,比如优化、应用场景、对比分析等,确保问题具有针对性,帮助用户深入理解。 现在需要检查各部分是否符合要求:使用中文,数学公式用$...$,独立公式用$$...$$,但当前问题可能不涉及数学公式,所以可能不需要。代码块使用正确的语法高亮,例如用python的示例,但用户的问题是关于C语言,所以需要调整代码块的语言标识。同时,确保引用标识正确添加,比如在提到分支结构时引用[^1],循环结构引用[^2][^4]等。 可能存在的遗漏点:是否覆盖了所有类型的循环分支结构?是否每个部分都有示例代码?是否引用了正确的资料?例如,在讲解switch时引用[^5],讲解循环结构时引用[^4][^2]。确保没有错误,比如代码中的语法错误,或者解释不清晰的部分。 总结,回答的结构应该分为分支结构循环结构两部分,每部分下分小点讲解语法、用法、示例,最后生成相关问题。现在开始组织内容,确保清晰易懂,符合用户要求。</think>### C语言分支循环结构详解 #### 一、分支结构 分支结构根据条件判断选择执行不同的代码块,主要包括 `if` `switch` 语句。 1. **`if` 语句** - **基本语法**: ```c if (条件表达式) { // 条件为真时执行的代码 } else { // 条件为假时执行的代码 } ``` - **多条件分支**(嵌套 `if`): ```c if (条件1) { // 条件1为真时执行 } else if (条件2) { // 条件2为真时执行 } else { // 其他情况执行 } ``` - **悬空 `else` 问题**:`else` 始终与最近的未匹配 `if` 配对[^3]。 - **示例**:判断数字正负: ```c int num = 5; if (num > 0) { printf("正数"); } else if (num < 0) { printf("负数"); } else { printf("零"); } ``` 2. **`switch` 语句** - **语法**: ```c switch (表达式) { case 常量1: // 执行代码 break; case 常量2: // 执行代码 break; default: // 默认执行代码 } ``` - **注意**:`break` 用于跳出 `switch`,否则会“贯穿”执行后续 `case` 代码[^5]。 - **示例**:根据星期数输出名称(引用自[^5]): ```c int day = 3; switch (day) { case 0: printf("星期天"); break; case 1: printf("星期一"); break; // ... 其他case default: printf("输入错误"); } ``` --- #### 二、循环结构 循环结构用于重复执行代码块,包括 `while`、`for` `do-while` 循环。 1. **`while` 循环** - **语法**: ```c while (条件表达式) { // 循环体 } ``` - **适用场景**:循环次数未知,例如读取用户输入直到满足条件[^2]。 - **示例**:计算1到5的: ```c int i = 1, sum = 0; while (i <= 5) { sum += i; i++; } ``` 2. **`for` 循环** - **语法**: ```c for (初始化; 条件表达式; 更新) { // 循环体 } ``` - **适用场景**:循环次数已知,例如遍历数组[^3]。 - **示例**:打印1到5: ```c for (int i = 1; i <= 5; i++) { printf("%d ", i); } ``` 3. **`do-while` 循环** - **语法**: ```c do { // 循环体 } while (条件表达式); ``` - **特点**:至少执行一次循环体。 - **示例**:输入验证: ```c int num; do { printf("请输入正数:"); scanf("%d", &num); } while (num <= 0); ``` --- #### 三、对比与应用场景 | 结构类型 | 适用场景 | |----------------|--------------------------------------------------------------------------| | **`if`/`else`** | 简单条件判断,多分支嵌套 | | **`switch`** | 多路分支且条件为离散值(如枚举、整数) | | **`while`** | 不确定循环次数(如文件读取) | | **`for`** | 已知循环次数(如数组遍历) | | **`do-while`** | 至少执行一次且需后续判断(如用户输入验证) | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值