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.绪论

2.if else

3.switch

4.while循环

5.for循环

6.do while循环


1.绪论

本节学习内容:

分支语句

  • if
  • switch

循环语句

  • while
  • for
  • do while

2.if else语句

语法结构:

第一钟:

if(表达式)

语句1;

第二种:

if(表达式)

语句1;

?else

语句2;

第三种:

if(表达式1)

语句1;

else if(表达式2)

语句2;

else

语句3;

代码例子-->用if else语句写出年龄分段如下:

? ? ? ? ? ? ? ? ? ? ? ? ?age<18为少年

? ? ? ? ? ? ? ? ? ? ? ? ?age在18到26为青年

? ? ? ? ? ? ? ? ? ? ? ? ?age在26到40为中年

? ? ? ? ? ? ? ? ? ? ? ? ?age在40岁以上为老年

int main()
{
	int age = 0;
	scanf("%d",&age);
	if (age < 18)
		printf("少年");
	else if (age >= 18 && age < 26)
		printf("青年");
	else if (age >= 26 && age < 40)
		printf("中年");
	else
		printf("老年");
	return 0;
}

代码执行如下图:?

?注:else与最近的if语句为一组!!!

3.switch语句

语法结构:

switch(表达式)
{

case :语句;(break;)

case :语句;(break;)

}

代码例子-->判断星期几

当没有break时:

int main()
{
	int day = 0;
	scanf("%d",&day);
	switch (day)
	{
	case 1: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");
	}
	return 0;
}

代码运行如图:

?当有break时:

代码运行如图:

所以我们可以看出break的作用-->在switch语句中,跳出该语句

现在我们想想怎么让代码1-5输出工作日,6-7为休息日呢?

我们可以将代码改成如下所示:

int main()
{
	int day = 0;
	scanf("%d",&day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:printf("工作日\n"); break;
	case 6:
	case 7:printf("休息日\n"); break;
	}
	return 0;
}

?那现在我们来讲讲switch中其他情况的语句--->default

比如上代码当我们输入8,9......等不符合的时候就不会输出什么,但我们想让他输出“输入错误”改怎么写?

我们可以修改如下:

switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:printf("工作日\n"); break;
	case 6:
	case 7:printf("休息日\n"); break;
	default:printf("输入错误"); break;
    }

4.while循环

语法结构:

while(表达式)

语句;

代码练习-->在屏幕上打印1-10,但是要求当i=5的时候代码跳出

int main()
{
	int i = 0;
	while (i <=10)
	{
		printf("%d\n", i);
		i++;
		if (i == 5)
			break;
	}
	return 0;
}

所以我们可以看出break的作用-->在while循环中,终止循环

那我们想想如果把break换成continue并且把if语句放在i++前面,那么会发生什么?

代码执行如图所示:

那是为什么呢?当i=5的时候我们没有跳出循环没有执行i++,所以i一直为死循环?

因此,我们可以发现,continue的作用-->跳过本次循环

现在我们来分析下下面的代码

int ch = 0;
	while ((ch = getchar() )!= EOF)
	{
		putchar(ch);
	}
return 0;

代码运行如下:

?

那么我们怎么让这个代码停下来呢?ctrl+z-->读取结束

getchar返回的是该字符的ASCII码值,如果遇到错误或文件结束则返回EOF(end of file)--->-1,是文件结束标志。getchar的返回类型为int型!!!!

代码例子-->密码的输入与确认

char password = { 0 };
	printf("请输入密码:");
	scanf("%s", &password);
		printf("请确认密码(Y/N)");
		int ch = getchar();
		if (ch =='Y')
			printf("确认成功");
		else
			printf("确认失败");
	return 0;

我们会发现我们还没有输入Y,他就会直接输出确认失败。这是为什么呢?

假如我们输入12345\n,那么scanf会把12345拿走,那么getchar就会把剩下的\n拿走,所以就会直接走else。

那么怎么解决这个问题?-->清除缓冲区的\n

在getchar前面再加个getchar();

那么当我们密码输入12345 abcde时会出现什么呢?

我们会发现会出现和之前一样的错误,这又是为什么呢?

scanf会把空格前面的12345拿走,而getchar只能消耗一个字符。

因此我们要清理缓冲区!!代码修改如下:

char password = { 0 };
	printf("请输入密码:");
	scanf("%s", &password);
	printf("请确认密码(Y/N)");
	int x=0;
	while ((x = getchar()) != '\n')
	{
		;
	}
	int ch = getchar();
	if (ch == 'Y')
		printf("确认成功");
	else
		printf("确认失败");
	return 0;

?5.for循环

语法结构:

for(表达式1;表达式2;表达式3)

? ? ?语句;

for (int i = 0; i < 10; i++)
	{
		if (i == 5)
			continue;
		printf("%d ", i);
	}

代码运行结果为0 1 2 3 4 6 7 8 9

从上我们可以发现continue的作用->跳过该次循环

建议--->采用左闭右开的方式写for循环

eg:for(i=0;i<10;i++)

下面我们来判断以下这个代码循环多少次?

int main()
{
    int i=0;
    int k=0;
    for(i=0,k=0;k=0;k++,i++)
      k++;
    return 0;
}

答案是0次.

因为这里的判断语句是k=0,意思是将0赋值给k,所以为假,因此循环次数为0次。

6.do while循环

语句结构:

do

? ? ? 循环语句;

while(表达式);

特点:循环体至少执行一次!!!

今日代码练习题--->求n!

int main()
{
	int n = 0;
	int x = 1;
	scanf("%d", &n);
	for (int i = 1; i <=n; i++)
	{
		x *= i;
	}
	printf("%d", x);
	return 0;
}

代码练习题-->1!+2!+.....+n!

int main()
{
	int sum = 0;
	int n = 0;
	int x = 1;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
	{
		x *= i;
		sum = sum + x;
	}
	printf("%d", sum);
	return 0;
}

代码练习题-->按序查找一个数

int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int k = 7;
	int n = sizeof(arr) / sizeof(arr[0]);
	int left = 0;
	int right = n - 1;
	int mid = 0;
	while (left <= right)
	{
	    mid = (left + right) / 2;
		if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else if (arr[mid]>k)
			right = mid - 1;
		else
		{
			printf("%d", arr[mid]);
			break;
		}
	}
	if (left > right)
		printf("没找到!");
	getchar();
	getchar();
	return 0;
}

代码练习题-->如何实现该结果:

?

#include<windows.h>
int main()
{
	char arr1[] = { "welcome to bit!!!!!!" };
	char arr2[] = { "####################" };
	int left = 0;
	int right = sizeof(arr1)-1;
	while (left <= right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		
		printf("%s\n", arr2);
		Sleep(1000);//睡眠一秒
		left++;
		right--;
	}
	return 0;
}

其中Sleep函数需要引入头文件windows.h!!

那么本节学习就结束啦!!!

这里还是一个正在学习的小白,如果代码或者理解有问题还希望多多包涵并且私信我>_<。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:01:39  更:2021-11-18 11:01:41 
 
开发: 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年11日历 -2024/11/24 6:51:32-

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