四、循环判断

【1】分支结构语句

1.if-else

​ 基本结构
​ if(表达式)
​ {
​ 语句块1;
​ }else
​ {
​ 语句块2;
​ }
​ 执行顺序:判断表达式是否成立,如果成立则执行语句块1,否则执行语句块2.

练习1:从终端输入一个字符,实现大小写字母转换。
分层结构:
if(表达式1)
{
    语句块1;
}else if(表达式2)
{
    语句块2;
}else
{
    语句块3;
}  

练习2. 输入三角形边长,求面积(开平方sqrt)
s = 1/2 * (a+b+c);
__________________
area = √s*(s-a)(s-b)(s-c)

提供开方函数如下:
#include <math.h>
double sqrt(double x);
功能:开根号
参数: @x :被开根号的值
返回值:开根号后返回的结果
编译时注意连接math库 即gcc xxx.c -lm

嵌套结构:
if(表达式1)
{
    if(表达式2)
    {
        语句块1;
    }else
    {
        语句块2;
    }
}else
{
    语句块3;
}	

注意: 1.if-else省略括号时,仅匹配下面一条语句。
2.if后面可以没有else,但是else紧跟if。

作业题2:时钟代码思路分析:
时 24
分 60
秒 60

月 12
日 大 1 3 5 7 8 10 12 – 31
小 4 6 9 11 – 30
2
闰年 – 29
平年 – 28
普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年
(如2004年、2020年等就是闰年)。

世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年
(如1900年不是闰年,2000年是闰年)。
(year%4 == 0 && year % 100 !=0) || (year%400 == 0)

2.switch-case

基本结构
switch(变量或表达式)
{
case 常量1:语句块1;break;
case 常量2:语句块2;break;
case 常量3:语句块3;break;

case 常量n:语句块n;break;
default:语句块n+1;
}
练习:从终端输入1-7,打印对应星期几。
练习:实现简易计算器,能进行加减乘除运算。 (用switch-case实现)
要求:输入 1 + 1
输出 2

【2】循环结构语句

1.for

​ 基本结构:

	  for(表达式1;表达式2;表达式3)
	  {
	      语句块;
	  }

​ 表达式1:赋初值
​ 表达式2:循环终止条件
​ 表达式3:增值或减值语句

执行顺序:先执行表达式1赋初值,再判断表达式2是否成立,成立则执行语句块,
执行完语句块后,执行表达式3,再次判断表达式2是否成立,成立则再次执行语句块,
依次循环,直到表达式2不成立时,循环结束。

练习1:求100以内最大能被17整除的数
练习2:输出200-400之间能被3整除且个数数字为6的整数。
练习3:从键盘输入两个数据n和a,计算a+aa+aaa+aaaa+n个a的结果。
例如:n = 3 a = 2
2 + 22 + 222 = 246

	       a   
		   a +  a*10
		   a + (a + a*10)*10
		   a + ((a + a*10)*10)*10
		   
		   s = a + s * 10

break:跳出整个循环。

for循环嵌套
for(表达式1;表达式2;表达式3) n
{
for(表达式1;表达式2;表达式3) m
{
语句块; n*m
}
}
练习:3、4、5三个数能组成多少互不相同且无重复的数
345
354
435
453
534
543
练习:已知a、b、c都是一位整数,求三位整数abc、cba的和为1333时,
a、b、c的值分别是多少。

图形题:
练习:终端输入行数,打印以下图案
例如: 输入 5




​ **
​ *
练习:终端输入行数,打印以下图案
例如: 输入 5
​ *
​ **




for循环嵌套:外层循环控制行数,内层循环控制个数。

for循环的其他表现形式:

表达式1;
for(;表达式2;表达式3)
{
语句块;
}

表达式1;
for(;表达式2;)
{
语句块;
表达式3;
}

for(;😉 //死循环
while(1)

2.while

while(表达式)
{
语句块;
}
执行顺序:判断表达式是否成立,如果成立则执行语句块,否则跳出循环。

3.do…while

do
{
语句块;
}while(表达式);
执行顺序:
先执行语句块,再判断表达式是否成立,如果表达式成立则再次执行语句块,依次循环;
直到表达式不成立则跳出循环。

4.goto

标签:
语句块;
goto 标签;

注: 1.标签一般用大写字母标识。
2.只能在函数体内部跳转
3.破坏代码顺序性,影响系统稳定性,不推荐使用。

5.循环控制语句

break:跳出整个循环。
continue:跳出本次循环,继续下次循环,continue后面语句不执行。

面试题:

​ 找到所有水仙花数:水仙花数是一个三位数,个位、十位、百位的立方和等于其本身。
​ 假设123 如果 111 + 222 + 333 == 123 那么123就是个水仙花数

123 / 100 = 1
123 / 10 % 10 = 2
123 % 10 = 3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值