C语言简明分析选择结构和循环结构的使用

目录
  • 一、程序中的选择结构(if)
  • 二、switch多分支选择语句
  • 三、while循环结构
  • 四、do...while 与 for
  • 五、break和continue

一、程序中的选择结构(if)

if的用法

上代码:

#include <stdio.h>
int main()
{
    short a = 1;
    short b = 2;
    int c = a - b;
    if( c > 0 )
    {
        printf("a > b\n");
    }
    else
    {
        printf("a <= b\n");
    }
    return 0;
}

下面为输出结果:

if ... else ...剪裁与组合

裁剪

  • if 可以不带 else 分支,条件为真时,则执行对应的语句
  • if 和 else 都可以不使用 { } ,此时每个分支只对应一条语句

组合

  • else 后的语句可以是另一个 if ...else ...
  • 多个 if ...else ...组合在一起可描述多路选择分支

上代码:

#include <stdio.h>
int main()
{
    short a = 2;
    short b = 2;
    int c = a - b;
    if( c > 0 )
        printf("a > b\n");
    else if( c == 0 )
        printf("a == b\n");
    else
        printf("a < b\n");
    return 0;
}

下面为输出结果:

小结

  • 分支结构是程序设计语言中的重要结构
  • C语言中通过 if ...else ...对代码进行分支执行
  • 可以对 if ... else ...进行剪裁和组合,描述更多的执行分支
  • if 分支可以独立存在,else 分支不能独立存在,必须跟在 if 之后
  • else 和最近的 if 匹配(就近原则)

二、switch多分支选择语句

switch-更简洁的多分支选择结构

上代码:

#include <stdio.h>
int main()
{
    int a = 1;
    int b = 2;
    char sign = 0;
    printf("Input a sign: ");
    scanf("%c", &sign);
    switch(sign)
    {
        case '+':
            printf("%d + %d = %d\n", a, b, a + b);
            break;
        case '-':
            printf("%d - %d = %d\n", a, b, a - b);
            break;
        case '*':
            printf("%d * %d = %d\n", a, b, a * b);
            break;
        default:
            printf("Unsupported Sign: %c\n", sign);
    }
    return 0;
}

下面为输出结果:

switch 实验小结

  • switch 仅能适用于离散变量或值(整数值)
  • case 是分支入口,匹配成功后执行 case 下的语句
  • 当语句全部执行后,需要使用 break 跳出执行分支
  • default 分支不是必须的(类似于 else 分支不是必须的)

switch 语句的分支合并技巧

上代码:

#include <stdio.h>
int main()
{
    int num = 0;
    printf("Input a number: ");
    scanf("%d", &num);
    switch( num )
    {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("%c\n", 'A' + (num - 1));
            break;
        default:
            printf("Invalid Input\n");
    }
    return 0;
}

下面为输出结果:

小结

  • switch 是一种更简洁的分支选择结构
  • switch 仅能适用于整数(小数不可用)
  • case 是分支入口,匹配成功后执行case下的语句
  • 当语句全部执行后,需要使用 break 跳出执行分支
  • 多个 case 可合并在一起,执行相同的语句

三、while循环结构

while - 循环结构的直接支持

上代码:

#include <stdio.h>
int main()
{
    int sum = 0;
    int i = 1;
    while( i <= 100 )
    {
        sum = sum + i;
        i = i + 1;
    }
    printf("sum = %d\n", sum);
    printf("i = %d\n", i);
    return 0;
}

下面为输出结果:

进阶while循环

  • 循环体可能一次也不执行(如: while( 0 ) )
  • 循环条件必须被改变,否则循环永远不会结束(如:while( 1 ) )
  • if 语句(不带 else )可以看作特殊的循环(最多执行1次循环体)
  • if 语句与 while 语句可相互组合嵌套实现复杂功能

上代码:

#include <stdio.h>
int main()
{
    int sum = 0;
    int i = 1;
    while( i <= 1000 )
    {
        if( (i % 3) == 0 )
        {
            sum = sum + i;
            printf("i = %d\n", i);
        }
        i = i + 1;
    }
    printf("sum = %d\n", sum);
    return 0;
}

下面为部分输出结果:

小结

  • 循环结构是程序设计语言中的重要结构
  • C语言中通过while 对代码进行循环执行
  • 可以对if while进行剪裁和组合,实现更复杂的功能
  • 循环体中需要有代码改变循环条件,否则循环不会结束
  • while语句之间可以相互嵌套,构成多重循环
  • while语句和if语句之间也可以相互嵌套

if 语句可以看作只循环一次的 while 语句

while语句可以看作扩展的 if 语句

while(...)
    if(...)
        while(...)
        {
        }

四、do...while 与 for

do...while 循环结构

do...while 的构成与执行

  • do 是循环的开始,while 是循环的结束
  • do..while 可以看做一条语句,需要以分号结束
  • do...while 是否继续循环依赖于括号中的循环条件
  • do...while 至少执行一次循环体

上代码:

#include <stdio.h>
int main()
{
    int sum = 0;
    int input = 0;
    int i = 0;
    while( i > 100 )
        printf("while( i > 0 )\n");
    do
        printf("do...while( i > 0 )\n");
    while( i > 100 );
    do
    {
        printf("Input: ");
        scanf("%d", &input);
        sum = sum + input;
    } while( sum < 100 );
    printf("sum = %d\n", sum);
    return 0;
}

下面为输出结果:

这里注意一个问题:while 和 do...while 的区别,可以看到 i 为 0 时,while 循环里面的不会执行,而 do...while 会执行一次。

循环结构的套路

  • 初始化循环变量
  • 在循环体中改变循环变量
  • 判断循环条件是否为真

真:执行循环体

假:结束循环

for循环结构(更简洁的循环结构)

for ( 0.初始化循环变量; 1.循环条件; 3.改变循环变量 )

{

2.循环体;

}

可以用下面的图表示:

上代码:

#include <stdio.h>
int main()
{
    int esum = 0;
    int osum = 0;
    int i = 0;
    for(i=1; i<=100; i=i+2)
    {
        osum = osum + i;
        esum = esum + (i + 1);
    }
    printf("osum = %d\n", osum);
    printf("esum = %d\n", esum);
    return 0;
}

下面为输出结果:

for循环注意事项

  • for循环的各个部分(0,1,2,3)都是可选的
  • 花括号可省略,省略花括号则循环体仅为一条语句
  • for( ...; ...; ... )其中的分号不可省略

for ( 0.初始化循环变量; 1.循环条件; 3.改变循环变量 )

{

2.循环体;

}

上代码:

#include <stdio.h>
int main()
{
    int sum = 0;
    int i = 1;
    for(; i <= 100; )
    {
        sum = sum + i;
        i = i + 1;
    }
    printf("sum = %d\n", sum);
    return 0;
}

下面为输出结果:

小结

  • do...while是至少执行一次循环体的循环结构
  • do...while 先执行循环体再判断循环条件
  • for是 while的进化,在写法上更加精简
  • for 与 while 相同,先判断循环条件再执行循环体

五、break和continue

再论break

  • break 能够强制结束当前结构,阻止程序向下执行
  • switch分支选择结构, break立即结束switch
  • 循环结构,break立即结束循环(忽略循环条件的真假)

上代码:

#include <stdio.h>
int main()
{
    int sum = 0;
    int i = 1;
    while( 1 )
    {
        sum = sum + i;
        if( i == 100 )
            break;
        i = i + 1;
    }
    printf("sum = %d\n", sum);
    printf("i = %d\n", i);
    return 0;
}

下面为输出结果:

再上一段代码:

#include <stdio.h>
int main()
{
    int target = 30;
    int input = 0;
    for(;;)
    {
        printf("Input: ");
        scanf("%d", &input);
        if( input == target )
            break;
        else if( input < target )
            printf("It's small!\n");
        else if( input > target )
            printf("It's big!\n");
    }
    printf("Target = %d\n", input);
    return 0;
}

下面为输出结果:

break遵循最近匹配原则

  • break 总是与离它最近的对应关键字匹配
  • 关键词指的是在C语言中有特殊含义的单词,如:while,for,switch等。
  • 注:C语言中的变量名不能是关键字

上代码:

#include <stdio.h>
int main()
{
    int i = 0;
    for(i=1; i<=10; i=i+1)
    {
        switch( i % 2 )
        {
        case 0:
            printf("%d is even number!\n", i);
            break;
        case 1:
            printf("%d is odd number!\n", i);
            break;
        }
    }
    return 0;
}

下面为输出结果:

可以看到,break 对应的是 switch ,而不是 for,这就是 break 的最近匹配原则。

再上一段代码:

#include <stdio.h>
int main()
{
    int k = 0;
    int input = 0;
    printf("Input: ");
    scanf("%d", &input);
    switch( input % 2 )
    {
        case 0:
            printf("case 0\n");
            for(k=0; k<=2; k=k+1)
                if( k )
                    break;
        break;
        case 1:
            printf("case 1\n");
        break;
    }
    return 0;
}

下面为输出结果:

如果把case 0 下面的 break 去掉一个,那么输出结果就会变成下面这样:

这还是因为 break 的最近匹配原则,去掉一个 break 后,break匹配的就是 for 了,所以也会输出第二个 case 后面的内容。

continue一循环体终结者

  • continue 是C语言中的关键字之一
  • continue 立即结束当前循环体,直接进入下一轮条件判断
  • continue 与 break 不同,并不会结束整个循环

上代码,打印1000以内能被7整除的整数,并统计数量:

#include <stdio.h>
int main()
{
    int i = 0;
    int n = 0;
    for(i=1; i<1000; i=i+1)
    {
        if( i % 7 )
            continue;
        printf("%d ", i);
        n = n + 1;
    }
    printf("\n");
    printf("Count: %d\n", n);
    return 0;
}

下面为输出结果:

小结

  • break 忽略循环条件的真假,立即结束循环
  • break 总是与离它最近的对应关键字匹配
  • continue 结束当前循环体,直接进入下一轮条件判断
  • continue 结束循环体的单次执行,并不会结束整个循环

到此这篇关于C语言简明分析选择结构和循环结构的使用的文章就介绍到这了,更多相关C语言选择与循环结构内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 一篇文章带你了解C语言的选择结构

    目录 一.if-else语句 1.单选择 2.双选择 3.多选择 二.switch语句 总结 一.if-else语句 1.单选择 单选择通过if语句就可以实现,if语句的语法及执行流程如下: if(表达式) { 代码块(表达式返回值为真时执行) } 当程序运行到if语句时,会由表达式进行判定,诺表达式的返回值为真,则进入代码块执行语句,为假便跳过代码块继续执行.(当代码块语句仅有一句时,可以省略大括号.) 举一个简单的例子 例:判断10是否为3的倍数 int main() { int i = 1

  • C语言循环结构与时间函数用法实例教程

    本文实例展示了C语言循环结构与时间函数用法,对于C语言的学习来说是非常不错的参考借鉴材料.分享给大家供大家参考之用.具体如下: 完整实例代码如下: /********************************************** ** <Beginning C 4th Edition> Notes codes ** Created by Goopand ** Compiler: gcc 4.7.0 *****************************************

  • C语言if选择结构语句详解

    目录 一.选择结构功能 二.选择结构形式 三.选择结构分类 1.单分支选择结构 2.双分支选择结构 3.多分支选择结构 四.条件表达式 总结 一.选择结构功能 根据给定的判断条件,控制程序执行流程的语句. 二.选择结构形式 单分支:根据给定条件,决定是否执行一段语句. 双分支:根据给定条件,执行两条路径中的一条. 多分支:根据给定条件,决定执行其中一条路径. 三.选择结构分类 1.单分支选择结构 ①功能 根据给定表达式决定执行操作或者跳过操作. ②单分支if语句格式 ③一般形式 if(表达式)

  • C语言循环结构详解

    目录 break语句 continue语句 C语言循环结构 一.goto 语句(现在一般很少用) 1.语句介绍: 2.语法结构: 3.goto 语句程序示例: 二.do-while语句 1.语句介绍: 2.语法结构: 3.do-while 流程图: 4.do-while 语句程序示例: 三.while 语句 1.语句介绍: 2.语法结构: 3.while 循环流程图: 4.while 语句程序示例: 四.for 循环语句: 1.语句介绍: 2.语法结构: 3.for 循环语句流程图 4.for

  • C语言中对于循环结构优化的一些入门级方法简介

    一.代码移动 将在循环里面多次计算,但是结果不会改变的计算,移到循环外面去. 例子: 优化前: void lower1(char *s){ int i; for(i=0;i<strlen(s);++i) if(s[i]>='A'&&s[i]<='Z') s[i]-=('A'-'a'); } 优化后: void lower2(char *s){ int i; int len=strlen(s); for(int i=0;i<len;++i) if(s[i]>='

  • C语言简明分析选择结构和循环结构的使用

    目录 一.程序中的选择结构(if) 二.switch多分支选择语句 三.while循环结构 四.do...while 与 for 五.break和continue 一.程序中的选择结构(if) if的用法 上代码: #include <stdio.h> int main() { short a = 1; short b = 2; int c = a - b; if( c > 0 ) { printf("a > b\n"); } else { printf(&qu

  • Python注释、分支结构、循环结构、伪“选择结构”用法实例分析

    本文实例讲述了Python注释.分支结构.循环结构.伪"选择结构"用法.分享给大家供大家参考,具体如下: 注释: python使用#作为行注释符,使用三引号作为多行注释符 分支结构: if-else: a=int(input("你的成绩是:")) if a>60: print("你合格了!") else : print("你没及格!") if-elif-else: a = int(input("请输入一个整数&

  • Java程序流程控制:判断结构、选择结构、循环结构原理与用法实例分析

    本文实例讲述了Java程序流程控制:判断结构.选择结构.循环结构原理与用法.分享给大家供大家参考,具体如下: 本文内容: 判断结构 if 选择结构 switch 循环结构 while do-while for for each break.continue return 首发时间:2017-06-22 21:34 修改时间: 2018-03-16 17:01 判断结构: java中使用if作为判断结构 if语句有三种格式: package study.program_struct; import

  • Java基础之选择结构与循环结构

    一.选择结构 根据已知条件进行逻辑判断,满足条件后执行响应的操作 1.1基本if选择结构 1.1.1语法 if(布尔表达式){ // 代码块 } 1.1.2执行流程 对布尔表达式进行判断: 如果结果为true,执行代码块,执行完成后执行后续代码: 如果结果为false,不会执行代码块,执行后续代码 1.1.3代码展示 public class Demo1 { public static void main(String[] args) { if(1==1) { System.out.printl

  • Java选择结构与循环结构的使用详解

    目录 前言 一.选择结构 1.1 if选择结构的四种格式 1.2 switch选择结构 二.循环结构 2.1 while循环结构 2.2 do-while循环结构 2.3 for循环结构 2.4 for-each循环结构 三.控制语句 前言 大家了解了Java中的变量.数据类型和运算符后,小编给大家介绍使用选择结构和循环结构解决问题. 一.选择结构 1.1 if选择结构的四种格式 1.1.1 基本if语句—单分支判断 if(比较表达式){ 语句体: } /* 执行流程是:判断比较表达式中的值,是

  • C语言简明分析指针与引用的具体用法

    目录 1.指针 2.引用 1.指针 在计算机中,数据是存放在内存单元中的,一般把内存中的一个字节称为一个内存单元.为了更方便地访问这些内存单元,可预先给内存中的所有内存单元进行地址编号,根据地址编号,可准确找到其对应的内存单元.由于每一个地址编号均对应一个内存单元,因此可以形象地说一个地址编号就指向一个内存单元.C 语言中把地址形象地称作指针. 主要就是两个运算符:&和*. & 表示求地址,*表示求地址中的值,*也可以用来定义指针(int *p表示整型指针): int a=1; int *

  • Java分支结构和循环结构原理与用法详解

    本文实例讲述了Java分支结构和循环结构.分享给大家供大家参考,具体如下: 流程控制分类 顺序语句:从上到下按顺序依次执行 分支语句:根据条件不同,执行不同语句 循环语句:重复执行某些动作 单分支条件判断语句 条件语句 只是单独的判断条件是否成立 if选择结构是根据条件判断之后再做处理 语法 if(布尔表达式) { //如果布尔表达式为true将执行的语句 } 注意:条件必须是boolean类型 if只带一条语句可以省略{} 双分支条件判断语句 if...else...需要对条件成立和不成立的情

  • mysql代码执行结构实例分析【顺序、分支、循环结构】

    本文实例讲述了mysql代码执行结构.分享给大家供大家参考,具体如下: 本文内容: 什么是代码执行结构 顺序结构 分支结构 循环结构 首发日期:2018-04-18 什么是代码执行结构: 这里所说的代码执行结构就是多条sql语句的执行顺序. 代码执行结构主要用于触发器.存储过程和函数等存储多条sql语句中. 顺序结构: 顺序结构就是从上到下依次执行sql语句 一般默认情况下都是顺序结构 分支结构: 分支结构的执行是依据一定的条件选择执行路径,它会依据我们给定的条件来选择执行那些sql语句 mys

  • C语言循环结构深入刨析

    目录 总述 while循环 语法结构 while循环中break和continue break continue for循环 语法结构 for循环中break和continue break continue for循环中省略表达式的问题 for循环嵌套 do-while循环 goto语句 总结 总述 生活中不止处处是选择,还时常面临着重复做某事,比如呢,我们日复一日的学习.敲代码. C语言中提供了 —while循环—for循环—do-while循环来表达循环 接下来,对三种循环进行分别介绍 wh

随机推荐