嵌入式学习LV1-C语言- D4. 控制语句

D4控制语句


如果出现图片无法查看可能是网络问题,我用的GitHub+图床保存的图片,用uu加速器说不定能解决,可以参考我另外一篇文章GitHub的使用方法
GitHub使用教程含网络问题_github加速器_肉丸子QAQ的博客-CSDN博客

image-20230517205823884

控制语句

if

一般格式:

if()
{
    
}else
{
    
}

if的嵌套
  • else总是与它上面的最近的if配对,与书写格式无关。

  • 要实行强行的配对关系可以利用{ }分割关系

if()

{if() 语句块1}
else 语句块2

思考

  1. 如何判断一个年份是否是闰年?

    • 能被4整除,但不能被100整除的年份;

    • 能被100整除,又能被400整除的年份;

    #include <stdio.h>
    
    int main()
    {
        int a;
        printf("请输入年份:");
        scanf("%d", &a);
        getchar();//垃圾字符处理
        
        if( ((a%4==0) && (a%100)) || ((!(a%100)) && (a%400==0)) )//这里对100取余没有等号,是因为100取余只有0/1的结果
        {
    		printf("%d年为闰年\n", a);
        }else{
    		printf("不是闰年\n");
    	}
        
        
        return 0;
    }
    

switch

格式:

switch(表达式)
{
case 常量1:语句1 break;//常量1就是表达式的值
case 常量2:语句2 break;
default:语句n   
    break;
}

switch语句的使用:

  • 每个常量表达式的值必须各不相同,否则将会出现矛盾。

  • 当表达式的值与case后面的常量表达式值相等时,就执行此case后面的语句。

  • switch中的表达式可以是整型、字符型表达式或枚举。

  • case 常量:只起语句标号的作用。

  • break语句用于强行跳出switch体,一般每个case后面应有一个break语句,default分支后的break可以省略。

  • 多个case可以执行一组语句。

image-20230517213224240

思考:

  • switch语句中的default起什么作用,是否可以省略?

在C语言中,switch语句用于根据不同的情况执行不同的代码块。default是switch语句中的一个可选标签,表示当没有任何一个case匹配时,执行default后面的代码块。如果没有default标签,则当没有任何一个case匹配时,程序不会执行任何代码,直接跳出switch语句。

因此,default的作用是提供一个备选方案,以确保程序在所有情况下都有一个合理的执行路径。但是,default标签并非必须存在,如果确信所有情况都已经覆盖到了,也可以省略default标签。

循环语句

go to

#include <stdio.h>

int main(int argc, const char * argv[]) 
{
        int i = 1;
        int sum = 0;

_loop:
        if (i <= 100) {
                sum += i;
                i++;
                goto _loop;//这个_loop可以随意换名字
        }

        printf("1+2+...+%d=%d\n", i, sum);

        return 0;
}

  • 当函数有很多个出口,使用goto把这些出口集中到一处是很方便的,特别是函数中有许多重复的清理工作的时候。

    • 无条件跳转易于理解

    • 可以减少嵌套

    • 可以避免那种忘记更新某一个出口点的问题

    • 算是帮助编译器做了代码优化

while

格式:

while(表达式)
{
    
}
思考题

打印出所有的“水仙花”数。所谓“水仙花”数是指一个3位数,其各个位数字立方和等于该数本身。

水仙花

#include <stdio.h>

int main()
{
	int ge, shi, bai;
	int sum,a = 100;
	while(a<1000)
	{
		bai = a/100;
		shi = a%100/10;
		ge = a%10;
		sum = bai*bai*bai+shi*shi*shi+ge*ge*ge;
		if(sum == a)
		{
			printf("%d\n",a);
		}
		a++;
	}

	return 0;
}

do while

do-while语句构成循环

基本形式

do
{
    
}while()

注意do while语句一定会执行一次循环

for

格式

for( 表达式1;表达式2 ;表达式3 )
{
    
}
  • 括号里面不一定都需要填写

    • 表达式1可省略,但循环之前应给循环变量赋值
    • 表达式2可省略,将陷入死循环
    • 表达式3可省略,但在循环体中增加使循环变量值改变的语句
    1. 先求解表达式1;

    2. 求解表达式2,若为真,则执行循环体,然后执行步骤3;若为假,则执行步骤5;

    3. 求解表达式3;

    4. 转回执行步骤2;

    5. 执行for下面的语句。

思考

利用for循环打印九九乘法表

#include <stdio.h>

int main()
{
	int i,j;
	for(i = 1; i < 10; i++)
	{
		for(j = 1; j < 10; j++)
		{
			if(i > j)//通过这个判断,将每行的多余的部分忽视打印
			{
				printf("%dx%d=%d\t", j, i, i*j);//\t这里将打印的内容对齐
			}
		}
		printf("\n");
	}
	return 0;
}

实验现象:

image-20230517220358399

辅助循环语句

break

用于从循环体内跳出循环体,即提前结束循环。

break只能用在循环语句和switch语句中。

continue

结束本次循环,接着判定下一次是否执行循环

注意continue直结束本次循环,而break终止本层循环

return

  • return语句的一般形式: return ( <表达式> )

  • 主要用于终止包含它的函数的执行

  • 若终止的为主函数,则主程序结束

作业

1.打印九九乘法表(结果要三角形的九九乘法表)
2.打印出所有的“水仙花”数。所谓“水仙花”数是指一个3位数,其各个位数字立方和等于该数本身。
(编程题要注意代码规范,基本的代码规范:1.运算符前后要加空格,2.一条语句要放在一行,花括号同样单独放一行;3.代码要进行缩进对齐,可以在命令行模式下按gg=G来让代码自动对齐。)

参考文中的思考题,目录可快速查阅

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肉丸子QAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值