诚城的成长 诚城的成长
首页
  • 高数基础
  • 数一

    • 高等数学
    • 线性代数
    • 概率论与数理统计
  • 820

    • 数据结构
    • 计算机操作系统
  • 英一

    • 单词
    • 语法
    • 阅读理解
    • 作文
  • 政治

    • 马克思主义基本原理
    • 毛泽东
    • 近代史
    • 思修
    • 时事
  • openpose
  • html5
  • css3
  • UI

    • Tailwind Css
    • Element-Plus
    • UniApp
  • 框架

    • Vue3
  • 拓展包

    • 包管理工具
    • 包开发
  • 开发语言

    • C语言
    • PHP
    • Phyton
  • 框架

    • Laravel
  • 会计

    • 初级经济法基础
    • 初级会计实务
  • 软考

    • 信息系统项目管理师
  • 博客

    • vitepress
    • vuepress
  • manim
  • git
  • vsCode
  • latex
  • docker
  • axios
  • vim
  • mac
  • Jetbrains

    • phpstorm
    • clion
突发奇想
GitHub (opens new window)

诚城

我有N个梦想……
首页
  • 高数基础
  • 数一

    • 高等数学
    • 线性代数
    • 概率论与数理统计
  • 820

    • 数据结构
    • 计算机操作系统
  • 英一

    • 单词
    • 语法
    • 阅读理解
    • 作文
  • 政治

    • 马克思主义基本原理
    • 毛泽东
    • 近代史
    • 思修
    • 时事
  • openpose
  • html5
  • css3
  • UI

    • Tailwind Css
    • Element-Plus
    • UniApp
  • 框架

    • Vue3
  • 拓展包

    • 包管理工具
    • 包开发
  • 开发语言

    • C语言
    • PHP
    • Phyton
  • 框架

    • Laravel
  • 会计

    • 初级经济法基础
    • 初级会计实务
  • 软考

    • 信息系统项目管理师
  • 博客

    • vitepress
    • vuepress
  • manim
  • git
  • vsCode
  • latex
  • docker
  • axios
  • vim
  • mac
  • Jetbrains

    • phpstorm
    • clion
突发奇想
GitHub (opens new window)
  • C语言简介
  • 环境与工具安装
  • 输出与输入
  • 数据类型
  • 运算

  • 条件判断与循环
    • 条件判断
      • 三元运算
      • if
      • else
      • else if
      • switch
    • 循环
      • for
      • while
      • do while
      • 选择循环中止
      • 无限循环
  • 内存
  • 转义字符
  • 其他
  • C程序实例
  • C语言
诚城
2021-12-29
目录

条件判断与循环原创

# 条件判断

C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。

# 三元运算

表达式1 ? 表达式2 : 表达式3 ;

当表达式1为true时,执行表达式2否则执行表达式3。

# if

if(表达式){ 
    // 表达式值为 true 时才执行本花括号内的语句
}

# else

else必须搭配在if或else if之后,放在整个结构的最后。

if(表达式){
  // 表达式值为 true 时才执行本花括号内的语句
  ……
} else {
  // 表达式为 false 时执行本括号内的语句。
  ……
}

# else if

在if之后,else之前。

if(表达式1){
  // 表达式1值为 true 时才执行本花括号内的语句
  ……
} else if(表达式2){
  // 表达式2值为 true 时才执行本花括号内的语句
  ……
} else if(表达式……){ // 可以无限个 else if 
  // 表达式……值为 true 时才执行本花括号内的语句
  ……
} else {
  // 以上表达式均为为 false 时执行本括号内的语句。
  ……
}

# switch

switch(表达式) //表达式的值只能是整型或字符型
{
    // 常量表达式其实就是 表达式 的值枚举。
    case 常量表达式1:语句1; 
    case 常量表达式2:语句2;
    ...
    case 常量表达式n-2:
    case 常量表达式n-1:语句n-1; // 当多个case没有语句时将执行后面 case 的语句
    case 常量表达式n:语句n;
    default:语句n+1; 
}

# switch选择中止

#include <stdio.h>

int main() {
    int i;
    do {
        if(i)printf("------------------------------------------------------------\n");
        printf("请选择输出模式(输入对应数字):\n");
        printf("1.输出字符          2.输出字符串    \n");
        printf("3.输出整型数字      4.输出浮点型数字\n");
        printf("5.重新选择          6.退出程序\n");
        printf("------------------------------------------------------------\n");
        fflush(stdout);
        scanf("%d",&i);
        switch (i) {
            case 1:
            case 2:
                printf("输出字符或字符串。\n");
                break;
            case 3:
            case 4:
                printf("输出整数或小数。\n");
                break;
            case 5:
                printf("重新选择。\n");
                continue;
            default: // default 不需要 break 更不能使用 continue!!
                printf("啥也没干。\n");
        }
    } while (i!=6);
    printf("程序结束。");
    return 0;
}

# 循环

# for

for ( init; condition; increment )
{
   statement(s);
}
  • init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
  • 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
  • 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
  • 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

init 和 increment可以省略,但是对应位置的;一定不能省略!

#include <stdio.h>

int main() {
    for (int i = 0; i < 5 ; ++i) {
        printf("这个是第%d行;\n",i+1);
    }
    // 以下省略 第一个参数与第三个参数
    int j=0;// 初始化第一个参数放到外面了
    for (; j < 5; ) {
        printf("第%d行   第二次打印;\n",j+1);
        j++; // 将第三参数放到循环体里面了
    }
    return 0;
}

省略 第一、三参数,代码阅读性偏差。

# for循环中止

不建议用goto终止循环

int main() {
    for (int i = 1; i < 10 ; i++) {
        if(i == 3){
            continue;
        }
        if(i==7){
            break;
        }
        printf("这个是第%d行;\n",i);
    }
    printf("程序结束。");
    return 0;
}

更简洁的写法:

int main() {
    for (int i = 1; i < 10 ; i++) {
        if(i == 3)
            continue;//只有一条语句时,可以不用{}
        if(i==7)break;//只有一条语句时,可以不用{}
        printf("这个是第%d行;\n",i);
    }
    printf("程序结束。");
    return 0;
}

# while

只要给定的条件为真,C 语言中的 while 循环语句会重复执行while里面的内容,记得在循环体内设定结束条件。

while(condition)
{
   statement(s);
}
  • statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。
  • condition 可以是任意的表达式,当为任意非零值时都为 true。当条件为 true 时执行循环。 当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。
#include <stdio.h>

int main() {
    int a=1;
    while (a <= 5){
        printf("这是第%d行;\n",a);
        a++;// 设定结束条件,否则无限循环
    }
    return 0;
}

可以使用break``continue``goto语句跳出循环。

# while中循环中止

int main() {
  int a = 1;
  Tiaochu: // goto 语句的标记,名称随便起  尽量少用goto!!!
  while (a <= 10) {
      if (a == 3) { // 不会打印第3行
          a++;
          continue;// 跳出本次循环,继续执行下次循环
      }
      if (a == 4) { // 不会打印第4行
          a++;
          goto Tiaochu;;// goto 到自定义标记处 尽量少用goto!!!
      }
      if (a == 7) { // 最多只打印到第6行
          break;// 结束整个循环体
      }
      printf("这是第%d行;\n", a);
      a++;
  }
  return 0;
}
  • continue 告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代
  • goto 将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。

# do while

先执行do里面的内容,然后再进行while判断,若为ture泽继续执行do里面的内容,否则跳出循环。

#include <stdio.h>

int main() {
    int i,j,k;
    do {
        printf("请输入比较的基数:\n");
        fflush(stdout);
        scanf("%d",&i);
        printf("请输入要比较的数:\n");
        fflush(stdout);
        scanf("%d",&j);
        if(j >= i){
            printf("%d大于等于基数%d\n",j,i);
        } else if (j < i && j >= i/2.0 ){
            printf("%d小于%d切大于等于%.2f\n",j,i,i/2.0);
        } else {
            printf("%d小于%.2f\n",j,i/2.0);
        }
        printf("是否继续进行比较?\n");
        printf("1.按任意数字键继续     2.按“0”退出\n");
        fflush(stdout);
        scanf("%d",&k);
    } while ( k != 0);

    printf("退出比较,程序结束。");

    return 0;
}

# do-while的循环中止

#include <stdio.h>

int main() {
    int i=1, j, k;
    Tiaochu: // goto 标记点,名称随便起  尽量少用goto!!!
    do {
        printf("程序开始第%d次……\n",i);
        j = i;

        if (j == 3) {
            i++;
            continue;// j=3时,跳出本次循环,继续循环体
        }
        if (j == 5) {
            i++;
            goto Tiaochu;// j=3时,goto到标记处   尽量少用goto!!!
        }
        k = i + j;
        if (k == 16) {
            break;// 当K等于16时直接跳出本次循环体
        }
        printf("i=%d, j=%d, i+j=%d \n", i, j, k);
        i++;
    } while (1 < 10);// 最终结束条件
    printf("程序结束。");
    return 0;
}

# 选择循环中止

# break

switch 中使用

for 中使用

whilie 中使用

do whilie 中使用

# continue

跳过本次循环或选择,继续循环体的下一次循环。

switch 中使用

for 中使用

whilie 中使用

do whilie 中使用

# goto

将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。

whilie 中使用

do whilie 中使用

# 无限循环

#include <stdio.h>
 
int main ()
{
   for( ; ; )
   {
      printf("该循环会永远执行下去!\n");
   }
   return 0;
}

注意:您可以按 Ctrl + C 键终止一个无限循环

#考研#820#C语言#循环#条件判断
上次更新: 2022/08/20, 00:50:36
赋值与位移
内存

← 赋值与位移 内存→

Theme by Vdoing | Copyright © 2022-2022 carveybunt | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
×

特别申明:

本站所有内容均为个人理解或转载,如有不当之处,敬请大佬指导!