IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C语言初阶】选择语句和循环语句 -> 正文阅读

[C++知识库]【C语言初阶】选择语句和循环语句

  • 目录:
    一.选择语句:

            1.if else语句
            2.switch语句(附break的使用)
    

二.循环语句:

           1.for循环
           2.while循环
           3.do while循环
           4.break和continue在循环语句中的使用

(一)选择语句
1.if 语句的基本表达为:

      if(表达式1)
          语句1;

理解起来就是当表达式1为真时,程序执行语句1,否则执行语句2
我们用代码来理解一下:

#include<stdio.h>
int main() {
	int i = 2;
	if (i=1)
		printf("hello");
	return 0;
}

按照我们的理解 , i 赋值为 2 , 但是 i f 的表达式为 i = 1 \color{Red}{按照我们的理解,i赋值为2,但是if的表达式为i=1} 按照我们的理解,i赋值为2,但是if的表达式为i=1
所以说这个程序应该什么都不打印,结果真的是这样吗?我们看看结果:
在这里插入图片描述
这里居然把hello打印出来了,为什么呢?是这样的,i=1本身为真了,所以就打印hello了.
在if语句里面表达式应该用赋值运算符来看,而不应该用关系运算符(点击就可以看)

我们尽量写成 i f ( 1 = = i ) , 因为当我们写成 i f ( 1 = i ) 时 \color{Purple}{我们尽量写成if(1==i),因为当我们写成if(1=i)时} 我们尽量写成if(1==i),因为当我们写成if(1=i)
这个语句编译器会报错 , 因为 i 怎么能赋值给 1 呢 ? \color{Purple}{这个语句编译器会报错,因为i怎么能赋值给1呢?} 这个语句编译器会报错,因为i怎么能赋值给1?
所以我们应该写成下面这样:

#include<stdio.h>
int main() {
	int i = 2;
	if (1==i)
		printf("hello");
	return 0;
}

这样就什么都不会打印,如何写成if(2==i),就会打印hello
1.1 if语句还有多语句的:

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

当一个分支语句有多个if else语句时,if 总是和最近else匹配
来个栗子:

#include<stdio.h>
int main() {
	int m = 1;
	int n = 2;
	if (2==m)//为假了,不会执行后面的if else语句了,所以什么都不会打印
	if (1==n)
		printf("hello");
	else
		printf("world");
	return 0;
}

2. s w i t c h 语句 \color{red}{switch语句} switch语句的基本表达式为:

  switch(整型表达式)
  {
  case 整型常量表达式:
       语句;
  case 整型常量表达式:
       语句;
       ~~~
  }         

接下来我们用代码来感受一下switch的使用:

#include<stdio.h>
int main() {
	int month = 0;
	scanf("%d", &month);
	switch (month)
	{
	case 1://记住case后面的为整型常量的表达式,如果写成1.0这种就不行
		printf("一月\n");
	case 2:
		printf("二月\n");
	case 3:
		printf("三月\n");
	case 4:
		printf("四月\n");
	case 5:
		printf("五月\n");
	case 6:
		printf("六月\n");
	case 7:
		printf("七月\n");
	case 8:
		printf("八月\n");
	case 9:
		printf("九月\n");
	case 10:
		printf("十月\n");
	case 11:
		printf("十一月\n");
	case 12:
		printf("十二月\n");
	}
	return 0;
}

我们的目的呢?希望输入数字几,就打印几月出来.但结果时这样吗?
当我们输入1会得到什么呢?
在这里插入图片描述
这里month为1,就会从case 1进去,依次打印后面的月份,如果我们要想达到目的,应该在printf后面加上break, b r e a k 的作用就是结束 s w i t c h 的循环 , 就是说不在执行下面的 c a s e 语句 \color{Red}{break的作用就是结束switch的循环,就是说不在执行下面的case语句} break的作用就是结束switch的循环,就是说不在执行下面的case语句,代码结果如下:

#include<stdio.h>
int main() {
	int month = 0;
	scanf("%d", &month);
	switch (month)
	{
	case 1:
		printf("一月\n");
		break;
	case 2:
		printf("二月\n");
		break;
	case 3:
		printf("三月\n");
		break;
	case 4:
		printf("四月\n");
		break;
	case 5:
		printf("五月\n");
		break;
	case 6:
		printf("六月\n");
		break;
	case 7:
		printf("七月\n");
		break;
	case 8:
		printf("八月\n");
		break;
	case 9:
		printf("九月\n");
		break;
	case 10:
		printf("十月\n");
		break;
	case 11:
		printf("十一月\n");
		break;
	case 12:
		printf("十二月\n");
		break;
	}
	return 0;
}

在这里插入图片描述
(二).循环语句
循环语句:在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环语句是由循环体及循环的终止条件两部分组成的。
1.1 f o r 循环 \color{red}{for循环} for循环的基本表达式

for(表达式1;表达式2;表达式3)
{
         语句;
}

注意:
表达式1:一般为赋值表达式,给控制变量赋初值;
表达式2:关系表达式或逻辑表达式,循环控制条件;
表达式3:一般为赋值表达式,给控制变量增量或减量。
语句:循环体,当有多条语句时,必须使用复合语句。

表达式的中间用分号隔开,表达式3后面不加分号
这是它的执行顺序:
在这里插入图片描述
1-2-3-4-2-3依次类推,直到i=11时,退出循环,于是打印1到10.
我们来一个题来练练手:

   输入一个数:
   输出这个数的阶乘:    
#include<stdio.h>
int main() {
	int i = 1;
	int n = 1;
	int fact = 1;//不能初始化为0,不然结果也是0
	scanf("%d", &n);
	for (i = 1;i<=n;i++) {
		fact = fact * i;
	}
	printf("%d", fact);
	return 0;
}
运行的步骤为:
如果我们输入5
1.当i=1时,小于5,fact=1*1=1;
2.i++,此时i为2,也小于5,fact=1*2=2;
3.i++,此时i为3,也小于5,fact=2*3=6;
4.i++,此时i为4,也小于5,fact=6*4=24;
5.i++,此时i为5,满足条件,fact=24*5=120;
6.i++,此时i为6,不满足条件,退出循环.

1.2 for循环嵌套if语句中的break和continue
上面已经说到了,break就是跳出循环体,那continue有什么作用呢?
C语言中continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,然后进行下一次是否执行循环的判定。需要注意的是continue语句只结束本次循环,而不是终止整个循环。
我们用代码来理解一下它们的用法:

#include<stdio.h>
int main() {
	int i = 0;
	for (i = 1; i < 10; i++) {
		if (5 == i)
			break;//当i为5时,跳出循环,不会再打印5了
		printf("%d ", i);
	}
	return 0;
}

在这里插入图片描述
如果把break换成continue会发生什么呢?

#include<stdio.h>
int main() {
	int i = 0;
	for (i = 1; i < 10; i++) {
		if (5 == i)
			continue;//当i为5时,continue跳过后面代码,来到for语句
		printf("%d ", i);
	}
	return 0;
}

应该打印1 2 3 4 6 7 8 9,结果是不是呢?我们来看看:
在这里插入图片描述
果然我们理解的,还是对的,我们真棒!
2. w h i l e 循环 \color{red}{ while循环} while循环

    whlie(表达式){
        语句;
      }   

while和for本质上都是循环,只是表达式放的位置不同,故相同代码,运行结果可能也会不同
先来一个简单的代码,计算1加到100的总和:

#include<stdio.h>
int main() {
	int i = 0;
	int sum = 0;
	while (i <= 100) {
		sum = sum + i;
		i++;//和for循环不同,调整语句不在括号里面
	}
	printf("sum=%d", sum);
	return 0;
}

在这里插入图片描述
如果我们用上述for循环嵌套里面的break,continue来编写while会怎么样呢?结果会不会一样呢?
break代码:

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

在这里插入图片描述
这里可以看出,当使用break时,for和while代码一样时,运算结果也一样.
continue代码:

#include<stdio.h>
int main() {
	int i =1;
	while (i < 10) {
		if (5 == i)
			continue;
		printf("%d ", i);
		i++;
	}
	return 0;
}

在这里插入图片描述
这里可以看出,程序陷入了死循环,因为当i为5时,continue跳过后面的代码,返回到while的判断句,5小于10,恒成立,依次类推,程序陷入了死循环.
所以说for和while因为调整语句的位置不同,两个循环还是存在差异的,做题时,根据自己的喜好来看吧,随便哪一个都行,或者两个都可以相互嵌套使用的.
3. d o \color{red}{do} do w h i l e \color{red}{while} while循环
do while 循环是 while 循环的变体。在检查while ()条件是否为真之前,该循环首先会执行一次do 之内的语句 ,然后在while()内检查条件是否为真,如果条件为真的话,就会重复do while这个循环,直至while ()为假。 和 while循环有相似之处,但使用方法完全不同。
do while用的很少,这里就不多说了。
最后,感谢大家的莅临。😘
请添加图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 10:47:31  更:2022-12-25 10:49:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/20 11:24:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码