首页 > 其他分享 >Day4-控制语句

Day4-控制语句

时间:2024-07-26 13:55:20浏览次数:18  
标签:语句 控制 goto int Day4 while 循环 表达式

1. 分支语句

1.1 顺序语句,分支语句,循环语句
分支语句
    if()~else~
    switch
循环语句
    for()
    while()~
    do~while()
    goto
辅助控制语句
    continue
    break
    return
1.2 if~else语句的使用
if语句概述
    if(表达式)
        语句块1
    else
        语句块2
常见形式
    简化形式
        if(表达式)语句块  例如: if(x>y) printf("%d",x);
    阶梯形式
        if(表达式1) 语句块1
            else if(表达式2) 语句块2
                else if(表达式3) 语句块3
                    ...
                    else 语句块n
    嵌套形式
        if()
            if() 语句块1
            else    语句块2
        else
            if() 语句块3
            else 语句块4
将百分制成绩转换成等级制成绩,有A,B,C,D四个等级,包含输入检测
​
(demo1): 嵌套形式实现代码
(demo2): 阶梯形式实现代码
1.3 switch语句
多分支选择结构 switch
switch语句的基本形式
    switch(表达式){
        case 常量表达式1:语句块1;break;
        case 常量表达四2:语句块2;break;
        ...
        case 常量表达式n:语句块n;break;
        default: 语句块n+1
    }
switch语句的使用:
    每个常量表达式的值必须各不相同,否则会出现矛盾
    当常量表达式的值与case后面的常量表达式值相等时,执行此case后边的语句
    若没有break结束语句,则将case匹配成功后边的代码全部执行直到switch结束或遇到break语句
    switch中的表达式可以是整型、字符型表达式或枚举
    case常量:只起语句标号的作用
    default:当与所有的case均不匹配时,执行此代码

demo3

2. 循环语句

2.1 for语句
一般形式:
    for(表达式1;表达式2;表达式3){
        ...
    }
执行过程:
    先执行表达式1;
    再执行表达式2,若为真执行循环体,然后再执行表达式3,为假则跳出循环体执行后续代码
注意:
    表达式1可省略,但循环之前应给循环变量赋值
    表达式2可省略,将陷入死循环
    表达式3可省略,但在循环体中增加使循环变量值改变的语句
    表达式省略,但分号‘;’不可省略
​
使用for循环语句实现1到100的累加:demo8
案例:使用for循环打印九九乘法表:demo9
#include <stdio.h>
int main(int argc,char *argv[])
{
    int i,j;
    for(i = 1;i<10;i++){
        for(j = 1;j <= i;j++){
            printf("%d*%d=%d  ",j,i,i*j);
        }
        printf("\n");
    }
    return 0;
}
​
/*
打印结果
linux@ubuntu:~/C/day04$ gcc demo9.c -Wall
linux@ubuntu:~/C/day04$ ./a.out 
//上两行为Ubuntu下编译源代码命令和执行代码命令,以下才为代码执行结果
1*1=1  
1*2=2  2*2=4  
1*3=3  2*3=6  3*3=9  
1*4=4  2*4=8  3*4=12  4*4=16  
1*5=5  2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  
*/

2.2 while语句
while语句构成循环:
    基本形式
        while(表达式){
            ....
        }
特点:
    先进行条件判断,再进行循环
​
使用goto跳转语句实现1到100的累加:demo5
2.3 do-while语句
do-while语句:
    基本形式
        do{
            ...
        }while(表达式);
特点:
    先进行循环在进行条件判断,即无论如何都会先执行一次循环体
    
使用goto跳转语句实现1到100的累加:demo6

2.4 goto语句
跳转语句:goto
    当函数有很多个出口,使用goto把这些出口集中到一处是很方便的
优点:
    无条件跳转易于理解
    可以减少嵌套
    可以避免那种忘记更新某一个出口点的问题
    算是帮助编译器做了代码优化
goto语句结构:
    goto 节点标志(开始跳转点)
    ...
    节点标志(跳转到的点,可以在goto的前边也可以在goto的后边)
​
使用goto跳转语句实现1到100的累加:demo4
2.5 程序举例
//打印所有的“水仙花”数。即一个三位数,其各位数字立方和等于该数本身:demo7

#include <stdio.h>
#include <math.h>
int main(int argc,char *argv[])
{
    int i = 100, a, b, c;
    //while
    printf("----------------while-----------\n");
    while(i < 999){ 
        a = i%10;
        b = (i/10)%10;
        c = i/100;
​
        if(a*a*a + b*b*b + c*c*c == i)
            printf("%d+%d+%d = %d\n",c*c*c,b*b*b,a*a*a,i);
        i++;
    }
    
    //do...while
    printf("----------do..while----------\n");
    i = 100;
    do{     
        a = i%10;
        b = (i/10)%10;
        c = i/100;
​
        if(pow(a,3)+pow(b,3)+pow(c,3) == i)
            printf("%d\n",i);
        i++;
    }while(i <= 999);
​
    //for
    printf("------------for------------\n");
    for(i = 100; i <= 999; i++){
        a = i%10;
        b = (i/10)%10;
        c = i/100;
​
        if(pow(a,3)+pow(b,3)+pow(c,3) == i)
            printf("%d\n",i);
    }
    //goto
    printf("----------goto----------\n");
    i = 100;
loop:
        a = i%10;
        b = (i/10)%10;
        c = i/100;
​
        if(pow(a,3)+pow(b,3)+pow(c,3) == i)
            printf("%d\n",i);
        i++;
        if(i<999)
            goto loop;
​
    return 0;
}
​
​
/*
打印结果:
linux@ubuntu:~/C/day04$ gcc demo7.c -Wall -lm
linux@ubuntu:~/C/day04$ ./a.out 
//上两行为Ubuntu下编译源代码命令和执行代码命令,以下才为代码执行结果
----------------while-----------
1+125+27 = 153
27+343+0 = 370
27+343+1 = 371
64+0+343 = 407
----------do..while----------
153
370
371
407
------------for------------
153
370
371
407
----------goto----------
153
370
371
407
*/
/*打印特殊字符(demo10)

F 
_FE 
__FED 
___FEDC 
____FEDCB 
_____FEDCBA
*/
#include <stdio.h>
int main(int argc,char *argv[])
{
    char ch = 'F';
    int i,j;
    for(i = 0;i<6;i++){
        for(j = 0;j<i;j++){
            printf("_");
        }
        ch = 'F';
        for(j = 0;j<=i;j++,ch--){
            printf("%c",ch);
        }
        puts("");
    }
    return 0;
}
​
/*
打印结果:
linux@ubuntu:~/C/day04$ gcc demo10.c -Wall
linux@ubuntu:~/C/day04$ ./a.out 
//上两行为Ubuntu下编译源代码命令和执行代码命令,以下才为代码执行结果
F
_FE
__FED
___FEDC
____FEDCB
_____FEDCBA
​
*/

3. 辅助控制语句

3.1 break语句
用于从循环体内跳出循环体,即提前结束循环
    break只能用在循环语句和switch语句  
/*程序练习:demo11
打印100以内的素数(素数:在大于1的自然数中,除了1和此整数自身外,没法被其他自然数整数的数)
*/
#include <stdio.h>
#include <math.h>
​
int main(int argc,char *argv[])
{
    int n = 100;
    int i,j,m;
    
    printf("2 3 ");
    for(i = 2;i < n ;i++){
        m = (int)sqrt(i);
        for(j = 2;j <= m;j++){
            if(i % j == 0) break;
            if(j == m) printf("%d ",i);
        }
    }
    printf("\n");
    return 0;
}
​
/*
打印结果:
linux@ubuntu:~/C/day04$ gcc demo11.c -Wall -lm
linux@ubuntu:~/C/day04$ ./a.out 
//上两行为Ubuntu下编译源代码命令和执行代码命令,以下才为代码执行结果
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 
​
*/
3.2 continue语句
结束本次循环,接着判定下一次是否执行循环
注意continue于break的区别
    continue只结束本次循环,而break终止本层循环(即当且仅当结束一个循环体)
/*
程序练习:
打印10以内,不能被3整除的数
*/
#include <stdio.h>
int main(int argc,char *argv[])
{
    int i = 1;
    for(;i<10;i++){
        if(i % 3 == 0) continue;
        printf("%d ",i);
    }
    puts("");
    return 0;
}
/*
打印结果
linux@ubuntu:~/C/day04$ gcc demo12.c -Wall
linux@ubuntu:~/C/day04$ ./a.out 
//上两行为Ubuntu下编译源代码命令和执行代码命令,以下才为代码执行结果
1 2 4 5 7 8 
*/

3.3 return语句
return语句的一般形式:return(<表达式>)
主要用于终止包含它的函数的执行
若终止的为主函数,则主程序结束

标签:语句,控制,goto,int,Day4,while,循环,表达式
From: https://blog.csdn.net/qq_55869380/article/details/140713650

相关文章

  • 基本的DQL语句-单表查询
    一、DQL语言        DQL(DataQueryLanguage数据查询语言)。用途是查询数据库数据,如SELECT语句。是SQL语句中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为单表查询和多表联查。二、单表查询        针对数据库中的一张......
  • 跳转语句
     一、break语句在for循环中使用break:publicclassBreakExample{ publicstaticvoidmain(String[]args){   for(inti=0;i<10;i++){     if(i==5){       break;     }     System......
  • 多租户架构中的安全与访问控制
    随着云计算和SaaS(软件即服务)模式的普及,多租户架构逐渐成为软件开发中的一种重要模式。多租户架构允许多个客户(租户)共享同一应用程序实例,同时确保数据的隔离和安全性。本文将重点探讨在多租户架构中实现安全与访问控制的方法,并通过Java代码示例进行详细说明。1.多租户架构概述......
  • windows的nodejs版本控制工具:nvm nodejs以及vue的安装
    首先确保自己的电脑是首次安装nodejs相关的软件,安装nvm之前必须确保电脑无nodejs。1.nvm的安装在github上寻找合适的版本,我安装的是v1.12版本。Releases·coreybutler/nvm-windows·GitHubwindows下就下载如下图所示的nvm-setup.exe文件选择nvm的安装路径选择nodej......
  • 医院环境监测,病房压差监测控制 解决方案 @卓振思众
    在现代医院的运营管理中,环境压差监测系统如同一道隐形的屏障,默默守护着患者与医护人员的健康与安全。它不仅是一项技术的革新,更是医院对患者承诺的体现,确保在每一个角落,都能营造一个安全、清洁的医疗环境。卓振思众公司和您一起深入探讨医院环境压差监测系统的重要性,以及其在医......
  • Day46.多对多表关系
    1.多对多表关系_错误用法:分别从book表和author表考虑表关系2.多对多表关系_错误创建外键关系,结论需要创建第三张表3.多对多表关系_正确用法:创建第三张表分别和两张表建立关系4.多对多表关系_正确用法:分别对三张表添加数据,可以通过第三张表表中的字段查其他两张表的数据5.......
  • 如何在 Python 中对多行使用单个 INSERT INTO 语句?
    我目前正在开发一个DiscordPython机器人,我在其中循环遍历ForumTags列表,并为每个对象生成INSERTINTOSQL语句以将数据插入MySQL数据库。但是,我想要通过将所有这些单独的INSERTINTO语句组合到单个查询中来优化我的代码,如下所示:INSERTINTO......
  • 日撸Java三百行(day03:基本if语句)
    文章目录:一、if、then、else1.if语句的第一种格式2.if语句的第二种格式3.if语句的第三种格式二、方法(函数)的调用1.方法定义1.1最简单的方法定义1.2带参数的方法定义1.2.1单个参数的方法定义格式1.2.2多个参数的方法定义格式1.3带返回值的方法定义2.方法的调用2.1......
  • 绘制控制流图的方法步骤
    程序流图(Flowchart)是一种图形化表示程序逻辑和流程的工具。绘制程序流图可以帮助开发者理解程序的结构和执行路径。以下是绘制程序流图的基本步骤和一些关键元素:确定开始和结束:程序总是从一个明确的开始点开始,并在某个点结束。使用流程图符号:流程图使用一系列标准化的图形......
  • C语言分支语句之if的一些用法
    目录引言C语言结构1.if语句1.1if1.2else2.分支中包含多条语句3.多重选择elseif4.嵌套if5.悬空else/else与if配对问题引言C语言作为一种非常常用的编程语言,具有灵活强大的循环和分支结构。循环结构允许我们重复执行一段代码,而分支结构则允许我们根据条......