【玩转C语言】第四讲--->操作符与循环语句

🔥 博客主页🔥 :【 坊钰_CSDN博客

欢迎各位点赞👍 评论**✍收藏⭐**

引言:

大家好,我是坊钰,为了让大家深入了解C语言,我开创了**【玩转C语言系列】** ,将为大家介绍C语言相关知识,另外,还会不定时更新**【C语言训练题库】,想学好C语言的宝子们,一定要收藏**起来,一起努力吧!

点赞!收藏!以防以后找不到了!!!

目录

[1. if 语句](#1. if 语句)

[1.1 语法形式](#1.1 语法形式)

[1.2 else 语句](#1.2 else 语句)

[1.3 分支中包含多条语句](#1.3 分支中包含多条语句)

[1.4 嵌套if 语句](#1.4 嵌套if 语句)

[1.5 else 语句悬空问题](#1.5 else 语句悬空问题)

[2. 关系操作符](#2. 关系操作符)

[3. 条件操作符](#3. 条件操作符)

[4. 逻辑操作符 && || !](#4. 逻辑操作符 && || !)

[4.1 取反操作符 !](#4.1 取反操作符 !)

[4.2 与运算符 &&](#4.2 与运算符 &&)

[4.3 或运算符 ||](#4.3 或运算符 ||)

[4.4 闰年的判断](#4.4 闰年的判断)

[5. switch 语句](#5. switch 语句)

[5.1 switch 计算除以3后的余数](#5.1 switch 计算除以3后的余数)

[5.2 switch 中的 break 语句](#5.2 switch 中的 break 语句)

[5.3 switch 语句中的 default 语句](#5.3 switch 语句中的 default 语句)

[5.4 case 和 default 的顺序问题](#5.4 case 和 default 的顺序问题)

[6. while 循环](#6. while 循环)

[6,1 语法结构](#6,1 语法结构)

[6.2 while 循环实践](#6.2 while 循环实践)

[7. for 循环](#7. for 循环)

[7.1 for 循环语法形式](#7.1 for 循环语法形式)

[7.2 for 循环执行流程](#7.2 for 循环执行流程)

[​编辑 7.3 for 循环的实践](#编辑 7.3 for 循环的实践)

[8. do-while 循环](#8. do-while 循环)

[8.1 语法形式](#8.1 语法形式)

[8.2 执行流程](#8.2 执行流程)

[8.3 循环实践](#8.3 循环实践)

[9. 小结](#9. 小结)


1. if 语句

1.1 语法形式

if 语句的语法形式如下:

cs 复制代码
if (表达式)

 语句;

表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行

C语言中,0 表示为假,非 0 表示为真

例:

cs 复制代码
//判断一个数是否为奇数

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(num % 2 == 1)
 printf("%d 是奇数\n", num);
 return 0;
}

1.2 else 语句

如果上述不为奇数,为偶数,那就要用到 else 语句了

if else 语句语法形式

cs 复制代码
if (表达式)

 语句1;
else 

 语句2;

若表达式为真,执行语句1 ,若表达式为假,执行语句2;

上述判断奇数的代码可以优化一下

cs 复制代码
#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(num % 2 == 1)
 printf("%d 是奇数\n", num);
 else
 printf("%d 是偶数\n", num);
 return 0;
}

1.3 分支中包含多条语句

看下面的代码,猜猜输出的是什么?

cs 复制代码
#include <stdio.h>
int main()
{
	int a = 10;
	if (a > 5)
		printf("haha");
		printf("hhhh");
	return 0;
}

答案是输出 haha;

因为,if 语句后只能执行一条语句,如果想要两条都执行,那要加上大括号 例:

cs 复制代码
#include <stdio.h>
int main()
{
	int a = 10;
	if (a > 5)
        {
		   printf("haha");
		   printf("hhhh");
        }
	return 0;
}

这样就打印两条语句了

1.4 嵌套if 语句

if 里面也可以嵌套if 语句

cs 复制代码
#include <stdio.h>
int main()
{
	int n = 10;
	if (n>0)
	{
		if (n>5)
		{
			printf("haha");
		}
		else
		{
			printf("hehe");
		}
	}
	else
	{
		printf("hello");
	}
	return 0;
}

1.5 else 语句悬空问题

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

cs 复制代码
#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 ,可以记住这样⼀条规则, else 总是跟最接近 的 if 匹配

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

cs 复制代码
#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;
}

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

2. 关系操作符

C语言主要的关系操作符有下面6个

  • > 大于运算符
  • < 小于运算符
  • >= 大于等于运算符
  • <=小于等于运算符
  • == 相等运算符
  • != 不相等运算符

关系操作符通常返回 0 或 1 ,表示真假

比如: (20>10) ----> 返回 1 ,(10>20) ---> 返回 0

注意: 相等运算符(==) 和 赋值运算符(=) 两个不一样

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

要表达 1 < 2 < 3 时的用法:

cs 复制代码
//错误用法

1 < 2 < 3

//正确用法

1 < 2 && 2 < 3

3. 条件操作符

条件操作符也叫三目操作符,需要接受三个操作数的

cs 复制代码
exp1 ? exp2 : exp3

条件操作符的计算逻辑是:

  1. 如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果
  2. 如果 exp1 为假, exp3 计算,计算的结果是整个表达式的结果

例:求两个数中的最大值

cs 复制代码
#include <stdio.h>
int main()
{
    int n = 0;
    int m = 0;
    scanf("%d %d", &n, &m);
    int max = m > n ? m : n;
    printf("%d", max);
    return 0;
}

4. 逻辑操作符 && || !

逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下⾯三个运算符

  • ! :逻辑取反运算符(改变单个表达式的真假)
  • && :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)
  • || :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)

4.1 取反操作符 !

如果 a 为真的,那 !a 就是假的,反之 a 为假的,那 !a 就是真的

4.2 与运算符 &&

cs 复制代码
(exsp 1) && (exsp 2) && (exsp 3)

注意:如果 exsp 1 为假( 0 ),那后面两个 exsp 2 和 exsp 3 都不计算了

如果exsp 1 为真,则依次往下计算

4.3 或运算符 ||

cs 复制代码
(exsp 1) || (exsp 2) || (exsp 3)

注意:如果 exsp 1 为真( 1 ),那后面两个 exsp 2 和 exsp 3 都不计算了

如果exsp 1 为假,则依次往下计算

4.4 闰年的判断

输闰年判断的规则:

  1. 能被4整除并且不能被100整除是闰年
  2. 能被400整除是闰年
cs 复制代码
#include <stdio.h>

//代码1 
int main()
{
 int year = 0;
 scanf("%d", &year);
 if(year%4==0 && year%100!=0)
 printf("是闰年\n");
 else if(year%400==0)
 printf("是闰年\n");
 return 0;
}

//代码2 
int main()
{
 int year = 0;
 scanf("%d", &year);
 if((year%4==0 && year%100!=0) || (year%400==0))
 printf("是闰年\n");
 return 0;
}

5. switch 语句

除了 if 语句外,C语言还提供了 switch 语句来实现分支结构

switch 语句是⼀种特殊形式的 if...else 结构,用于判断条件有多个结果的情况。它把多重的 else if 改成更易用、可读性更好的形式

cs 复制代码
switch (expression) 
{
 case value1: statement

 case value2: statement

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

5.1 switch 计算除以3后的余数

练习:输入任意⼀个整数值,计算除3之后的余数

cs 复制代码
#include <stdio.h>

int main()
{
 int n = 0;
 scanf("%d", &n);
 switch(n%3)
 {
     case 0:
     printf("整除,余数为0\n"); 
         break;
     case 1:
     printf("余数是1\n"); 
         break;
     case 2:
     printf("余数是2\n"); 
         break;
 }
 return 0;
}
  • case 和后边的数字之间必须有空格
  • 每⼀个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个switch语句

5.2 switch 中的 break 语句

我们如果把上述代码中的break全都去掉,看看结果

cs 复制代码
#include <stdio.h>
int main()
{
        int n = 0;
        scanf("%d", &n);
        switch (n % 3)
        {
        case 0:
            printf("整除,余数为0\n");

        case 1:
            printf("余数是1\n");
       
        case 2:
            printf("余数是2\n");

    }
    return 0;
}

所以在 switch 语句中 break 语句是非常重要的,能实现真正的分支效果。 当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了

5.3 switch 语句中的 default 语句

cs 复制代码
#include <stdio.h>
int main()
{
        int n = 0;
        scanf("%d", &n);
        switch (n)
        {
        case 0:
            printf("输入数为 0\n");

        case 1:
            printf("输入数为 1\n");
       
        case 2:
            printf("输入数为 2\n");

        default :
                printf("输入错误,请重新输入\n");

    }
    return 0;
}

5.4 case 和 default 的顺序问题

在 switch 语句中 case 子句和 default 子句有要求顺序吗? default 只能放在最后吗?

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

6. while 循环

6,1 语法结构

cs 复制代码
while(表达式)

{
    语句;
}

6.2 while 循环实践

例:打印 1~10 数字

cs 复制代码
#include <stdio.h>
int main()
{
    int a = 1;
    while (a <= 10)
    {
        printf("%d ", a);
        a++;
    }
    return 0;
}

7. for 循环

7.1 for 循环语法形式

cs 复制代码
for(表达式1; 表达式2; 表达式3)
   {
     语句;
   }
  • 表达式1 用于循环变量的初始化
  • 表达式2 用于循环结束条件的判断
  • 表达式3 用于循环变量的调整

7.2 for 循环执行流程

7.3 for 循环的实践

练习:在屏幕上打印1~10的值

cs 复制代码
#include <stdio.h>
int main()
{
    for (int i = 1; i <= 10; i++)
    {
        printf("%d ", i);
    }
    return 0;
}

8. do-while 循环

8.1 语法形式

cs 复制代码
do
 语句;
while(表达式)

8.2 执行流程

8.3 循环实践

在屏幕上打印1~10的值

cs 复制代码
#include <stdio.h>
int main()
{
    int a = 1;
    do
    {
        printf("%d ", a);
        a++;
    } while (a <= 10);
    return 0;
}

9. 小结

以上就是关于【玩转C语言】第四讲的内容了,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持!

相关推荐
zym大哥大6 分钟前
Python学习笔记
笔记·python·学习
CV-deeplearning7 分钟前
如何用python调用C++处理图片
开发语言·c++·python
IT猿手22 分钟前
2024最新算法:吸血水蛭优化器(Blood-Sucking Leech Optimizer,BSLO)求解23个函数,MATLAB代码
开发语言·算法·matlab·优化算法·最新算法
穷苦书生_万事愁36 分钟前
python学习 - 设计模式 - 状态模式
python·学习·设计模式
wang_book1 小时前
SVN学习(001 svn安装)
运维·学习·svn
微服务技术分享1 小时前
Spring框架的最新进展:2023年Spring Boot和Spring Cloud功能更新
java·开发语言
子蛟1 小时前
关于PHP中删除JSON指定元素unset和array_splice的区别
开发语言·json·php
一百七十五1 小时前
python函数——闭包
开发语言·python
流浪者与猴1 小时前
【C++】函数模板与类模板
开发语言·c++·算法
hahaha 1hhh1 小时前
mybatis-plus 实体中空字段更新不上
java·开发语言·数据库