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 ⼦句放在最后处理的。

目录
相关文章
|
2月前
|
C语言
【C语言】循环语句
C语言中循环语句的相关知识点
27 2
【C语言】循环语句
|
12天前
|
C语言
【C语言篇】分支语句详解(超详细)
在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要顺序是满⾜实际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理的。
|
12天前
|
机器学习/深度学习 C语言
【C语言篇】循环语句详解(超详细)
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳出循环.
|
23天前
|
C语言
C语言的循环语句
C语言的循环语句
27 6
|
23天前
|
C语言
C语言分支语句
C语言分支语句
15 4
|
23天前
|
编译器 C语言
C语言函数的学习
掌握函数的使用是学习C语言的关键一环,理解和应用这些基本的函数概念将使你能够更有效地利用C语言的强大功能。
10 0
|
3月前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
3月前
|
存储 编译器 C语言
c语言学习历程【1】
c语言学习历程【1】
38 1
|
2月前
|
Linux C语言
【编程小实验】C语言实现:无限循环写入文本文件,支持Ctrl+C中断与数据追加(附完整源码)
在Linux中,文件I/O(输入/输出)是程序与文件进行交互的基本方式,包括读取文件内容和向文件写入数据。这通常通过标准的C库函数来实现,下面是一些基本的文件读写操作和代码示例。
|
3月前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
33 0