C语言学习系列-->第四弹【分支和循环】(上)

简介: C语言学习系列-->第四弹【分支和循环】

前言

从本节开始,将进入C语言循环分支结构,在学习过程中,需要多敲代码,多刷题。

下面是来自牛客竞赛的小白题,学习完本节,可以进行相应的练习:

选择结构程序设计

循环结构程序设计

一、if 语句

1.1 基本 if 语句

if(条件表达式){
    //语句
}

条件表达式为真,就执行语句;条件表达式为假,就不执行语句。通俗易懂!

在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是不是0,则语句执⾏。

#include <stdio.h> 
int main(){
    int a;  //定义一个int型变量a
    scanf("%d", &a);  //读入a的值
    if(a != 0){  //如果a的值不为0
        printf("%d\n", a);  //输出a的值并输出一个回车
    }
    //若a的值为0,则不会执行任何内容,程序正常退出
    return 0;
}

1.2 else 语句

if ( 表达式 )
    语句1
else
  语句2

举个例子:

#include <stdio.h> 
int main(){
    int a;  //定义一个int型变量a
    scanf("%d", &a);  //读入a的值
    if(a != 0){  //如果a的值不为0
        printf("%d\n", a);  //输出a的值并输出一个回车
    }
    else{
        printf("a的值为0!\n");  //若a的值为0,输出"a的值为0!"并输出一个回车
    }
    return 0;
}

1.3 else if 语句

if(条件表达式1){
        //语句1
    }
    else if(条件表达式2){
        //语句2
    }
    else{
        //语句3
    }

举个例子:

#include <stdio.h> 
int main(){
    int a;  //定义一个int型变量a
    scanf("%d", &a);  //读入a的值
    if(a > 100){  //如果a的值大于100
        printf("%d\n", a - 100);  //输出a - 100的值并输出一个回车
    }
    else if(a > 0 && a <= 100){  //如果a的值大于0且a的值小于等于100
        printf("%d\n", a + 100);  //输出a + 100的值并输出一个回车
    }
    else if(a == 0){  //若a的值为0
        printf("a的值为0!\n");  //输出"a的值为0!"并输出一个回车
    }
    else{
        printf("a的值为小于0!\n");  //若a的值不满足以上所有条件,输出"a的值小于0!"并输出一个回车
    }
    return 0;
}

1.4 嵌套 if 语句

在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。

#include <stdio.h> 
int main(){
    int a;  //定义一个int型变量a
    scanf("%d", &a);  //读入a的值
    if(a > 0){
        if(a > 100){  //如果a的值大于100
            printf("%d\n", a - 100);  //输出a - 100的值并输出一个回车
        }
        else{
            printf("%d\n", a + 100);  //输出a + 100的值并输出一个回车
        }
    }
    else if(a == 0){  //若a的值为0
        printf("a的值为0!\n");  //输出"a的值为0!"并输出一个回车
    }
    else{
        printf("a的值为小于0!\n");  //若a的值不满足以上所有条件,输出"a的值小于0!"并输出一个回车
    }
    return 0;
}

以上就是嵌套if语句的语法,有了嵌套if语句,就可以完成更多复杂逻辑的判断。

1.5 else 悬空问题

如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。

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

上⾯的代码排版,让 else 和第⼀个 if 语句对⻬,让我们以为 else 是和第⼀个if匹配的,当 if语句不成⽴的时候,⾃然想到的就是执⾏ else ⼦句,打印 haha ,但实际上 else 是和第⼆个 if进⾏匹配的,这样后边的 if…else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不成⽴,嵌套 if 和 else 就没机会执⾏了,最终啥都不打印。

如果我们希望else确实和第⼀个if匹配,可以这样修改代码:

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

只要带上适当的⼤括号,代码的逻辑就会更加的清晰,所以⼤家以后在写代码的时候要注意括号的使⽤,让代码的可读性更⾼。

二、关系操作符

• > ⼤于运算符
• < ⼩于运算符
• >= ⼤于等于运算符
• <= ⼩于等于运算符
• == 相等运算符
• != 不相等运算符

关系表达式常⽤于 if 或 while 结构。

注意,相等运算符与赋值运算符 = 是两个不⼀样的运算符,不要混淆。

另⼀个需要避免的错误是:多个关系运算符不宜连⽤

三、逻辑操作符

逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有下⾯三个运算符。
• ! :逻辑取反运算符(改变单个表达式的真假)。
• && :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。
• || :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。

注:C语⾔中,⾮0表⽰真,0表⽰假

逻辑取反运算符

⽐如,我们有⼀个变量叫 flag ,如果flag为假,要做⼀个什么事情,就可以这样写代码:

if(!flag)
{
 printf("do something\n");
}

如果 flag 为真, !flag 就是假,如果 flag 为假, !flag 就是真
所以上⾯的代码的意思就是 flag 为假,执⾏if语句中的代码。

四、switch 语句

4.1 作用

执行多条件分支语句。

4.2 语法

switch(expression){
    case value1:执行语句1; break;
    case value2:执行语句2; break;
    ...
    default: 执行语句n; break;
}

注:
• switch 后的 expression 必须是整型表达式
• case 后的值,必须是整形常量表达式

•case 和后边的数字之间必须有空格
•每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。

4.3 switch语句中的case和default的顺序问题

在 switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实
际需求的就可以。
不过我们通常是把 default ⼦句放在最后处理的。

目录
相关文章
|
4月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
94 5
|
1月前
|
C语言
【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】
本文档介绍了编程任务的详细内容,旨在运用枚举法求解硬币等额 - 循环控制语句(`for`、`while`)及跳转语句(`break`、`continue`)的使用。 - 循环嵌套语句的基本概念和应用,如双重`for`循环、`while`嵌套等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台将对编写的代码进行测试,并给出预期输出结果。 5. **通关代码**:提供完整的代码示例,帮助理解并完成任务。 6. **测试结果**:展示代码运行后的实际输出,验证正确性。 文档结构清晰,逐步引导读者掌握循环结构与嵌套的应用,最终实现硬币兑换的程序设计。
51 19
|
1月前
|
算法 C语言
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
77 18
|
1月前
|
Serverless C语言
【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
57 18
|
1月前
|
C语言
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
52 13
|
1月前
|
存储 C语言
【C语言程序设计——循环程序设计】利用数列的累加和求 sinx(头歌实践教学平台习题)【合集】
项的累加和,一般会使用循环结构,在每次循环中计算出当前项的值(可能基于通项公式或者递推关系),然后累加到一个用于存储累加和的变量中。在C语言中推导数列中的某一项,通常需要依据数列给定的通项公式或者前后项之间的递推关系来实现。例如,对于一个简单的等差数列,其通项公式为。的级数,其每一项之间存在特定的递推关系(后项的分子是其前项的分子乘上。,计算sinx的值,直到最后一项的绝对值小于。为项数),就可以通过代码来计算出指定项的值。对于更复杂的数列,像题目中涉及的用于近似计算。开始你的任务吧,祝你成功!
51 6
|
1月前
|
C语言
【C语言程序设计——循环程序设计】鸡兔同笼问题(头歌实践教学平台习题)【合集】
本教程介绍了循环控制和跳转语句的使用,包括 `for`、`while` 和 `do-while` 循环,以及 `break` 和 `continue` 语句。通过示例代码详细讲解了这些语句的应用场景,并展示了如何使用循环嵌套解决复杂问题,如计算最大公因数和模拟游戏关卡选择。最后,通过鸡兔同笼问题演示了穷举法编程的实际应用。文中还提供了编程要求、测试说明及通关代码,帮助读者掌握相关知识并完成任务。 任务描述:根据给定条件,编写程序计算鸡和兔的数量。鸡有1个头2只脚,兔子有1个头4只脚。
57 5
|
4月前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
54 8
|
4月前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
70 6
|
4月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向

热门文章

最新文章