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-lesson6(while、for、do()while、goto循环) -> 正文阅读

[C++知识库]简单点-c-lesson6(while、for、do()while、goto循环)

C_lesson6

1.循环 while

1while循环定义:先判定后执行
	while(表达式){循环语句;更新条件};
	组成:条件初始化+条件判定+条件更新
(2break:
	在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 
	while中的break是用于永久终止循环的。
(3continuecontinue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,
	而是直接跳转到while语句的判断部分,进行下一次循环的入口判断。
(4break:从控制台死循环获取字符,如何退出死循环。
     continue的例子:从输入的字符中,获取0-9

1.1 while循环

#if 0 
#include <stdio.h>
#include <windows.h>

int main()
{
	int flag = 0;//条件初始化
	while(flag<10)//条件判定
	{
		printf("%d",flag);
		flag++;//条件更新
	}
	printf("\n");
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

1.2 break:结束循环

#if 1
#include <stdio.h>
#include <windows.h>

int main()
{
	int flag = 0;//条件初始化
	while(flag<10)//条件判定
	{
		printf("%d ",flag);
		flag++;//条件更新
		if(flag>5)
		{
			break;
		}
	}
	printf("\n");
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

1.3 continue:这里一直6进行死循环,因为continue退出了本次循环,进入下一次循环。没有条件更新。

#if 1
#include <stdio.h>
#include <windows.h>
int main()
{
	int flag = 0;//条件初始化
	while(flag<10)//条件判定
	{
		if(flag > 5)
		{
			printf("%d ",flag);
			continue;
		}
		printf("%d ",flag);
		flag++;//条件更新
	}
	printf("\n");
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

1.4 解决continue因为无条件更新造成了死循环。因为continue结束了5的循环,所以运行结果是0,1,2,3,4,6,7,8,9

#if 1
#include <stdio.h>
#include <windows.h>
int main()
{
	int flag = 0;//条件初始化
	while(flag<10)//条件判定
	{
		if(flag == 5)
		{
			flag++;//条件更新 ---解决了死循环的问题
			continue;
		}
		printf("%d ",flag);
		flag++;//条件更新
	}
	printf("\n");
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

1.5 break例子:从控制台死循环获取字符,如何退出死循环。

#if 1
#include <stdio.h>
#include <windows.h>
int main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF)
	{
		putchar(ch);
	}
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

int ch = getchar();获得一个字符
putchar(ch);输出一个字
#define EOF -1
注意:
(1)break也能退出死循环
(2)ctrl+z,在对话框中输入完毕
(3)EOF -1均不能使下面程序退出死循环

#if 1
#include <stdio.h>
#include <windows.h>
int main()
{
	while(1)
	{
		int ch = getchar();
		if (ch == EOF)
		{
			printf("EOF=%d ch = %d\n",EOF,ch);
			break;
		}
		putchar(ch);
	}
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

1.6 continue实例:从输入的一堆字符中,获取0-9数

0,‘0’, '\0’三个的区别,ASCII码表是数据和图形的一种映射关系。
0 --> 0
‘0’ --> 48
‘\0’–> 0

#if 1
#include <stdio.h>
#include <windows.h>
int main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF)
	{
		if((ch<'0')|| (ch>'9'))
		{
			continue;
		}
		putchar(ch);
	}
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

2.for循环

1for循环定义:先判定后执行
	for(表达式1;表达式2;表达式3){循环语句;}
	表达式1 表达式1为初始化部分,用于初始化循环变量的。 
	表达式2 表达式2为条件判断部分,用于判断循环时候终止。 
	表达式3 表达式3为调整部分,用于循环条件的调整。
	注:
	1.不可在for循环体内修改循环变量,防止 for 循环越界,而失去控制。
	2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
	3.for死循环:for(;;){语句;}2break:结束循环
(3continue:结束本次循环,进入下一次循环
	注:for循环中的breakcontinuewhile循环类似,只不过for循环continue时不存在死循环,由于条件更新已经存在。
(4for循环变种。

2.1 break:1,2,3,4

#if 0
#include <stdio.h>
#include <windows.h>
int main()
{
	int i = 0;
	for(i=1; i<=10; i++)
	{
		if(i == 5)
		{
			break;
		}
		printf("%d ",i);
	}
	printf("\n");
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

2.2 continue:1,2,3,4,6,7,8,9

#if 1
#include <stdio.h>
#include <windows.h>
int main()
{
	int i = 0;
	for(i=1; i<=10; i++)
	{
		if(i == 5)
		{
			continue;
		}
		printf("%d ",i);
	}
	printf("\n");
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

2.3 for循环变种

第一次:x = 0,y = 0 hehe
第二次:x = 1,y = 1 hehe
第三次:x = 2,y = 2;x不成立,退出循环

#if 0
#include <stdio.h>
#include <windows.h>
int main()
{
	int x, y;
	for (x = 0, y = 0; x<2 && y<5; ++x, y++)
	{
		printf("hehe\n");
	}
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

2.4 for循环中的陷阱,注意是== 还是 =

第一次:i = 0;k = 0
第二次:i = 1;k = 2; 2 = 0相当于k为0,所以退出循环,k = 0

#if 0
#include <stdio.h>
#include <windows.h>
int main()
{
	int i = 0;
	int k = 0;
	for(i =0,k=0; k=0; i++,k++)
	{
		k++;
	}
	printf("%d\n",k);//0
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

3.do…while循环

1do...while循环的定义
	do{循环语句;更新;}while(判定条件);
(2breakcontinuewhile循环一样
(3)不管条件为真还是为假,都会先执行一次。即先执行,后判定。

3.1 do…while

#if 1
#include <stdio.h>
#include <windows.h>
int main()
{
	int i = 0;
	do{
		printf("%d ",i);
		i++;
	}while(i<10);
	printf("\n");
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

3.2 break

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

在这里插入图片描述

3.3 continue:这块和while循环一样,要注意防止死循环,更新条件一定要写在前面。

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

在这里插入图片描述

3.4 先执行,后判定。

#if 1
#include <stdio.h>
#include <windows.h>
int main()
{
	int i = 0;
	do{
		i++;
		printf("%d ",i);	
	}while(0);//条件为假也可以执行一次
	printf("\n");
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

4.练习

11.计算 n的阶乘。
(2)计算 1!+2!+3!+……+10!3)遍历查找数组元素
(4)在一个有序数组中查找具体的某个数字n。 
	编写int binsearch(int x, int v[], int n); 
	功能:在v[0]<=v[1]<=v[2]<=.<=v[n-1]的数组中查找x.5)编写代码,演示多个字符从两端移动,向中间汇聚。
(6)编写代码实现,模拟用户登录情景,并且只能登录三次。
	(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。
(7)玩数字游戏

4.1 计算 n的阶乘。

1.控制台/键盘输入的数字,比如10,其实就是字符,一个是1,一个是0.
2.而scanf(“%d”,&x);其实就是格式化输入,将1和0两个字符转为十进制数字10,然后赋值给n。则这里n里面放的就是格式化后的值。

#if 1
#include <stdio.h>
#include <windows.h>

int Factorial(int _x)
{
	//阶乘;5! = 5*4*3*2*1
	int ret = 1;
	for(; _x>0; _x--)
	{
		if(_x == 1)//1时不需要乘
		{
			printf("%d",_x);
		}
		else//2以上都需要乘
		{
			printf("%d*",_x);
		}
		ret *= _x;
	}
	return ret;

	/*int ret = 1;
	int i=1;
	for(; i<=_x; i++)
	{
		ret = ret*i; 
	}
	return ret;*/
}

int main()
{
	int x = 0;
	int result = 0;
	printf("请输入一个数:");
	scanf("%d",&x);
	printf("%d! = ",x);
	result = Factorial(x);
	printf("= %d\n", result);
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

4.2 计算 1!+2!+3!+……+10!

#if 1
#include <stdio.h>
#include <windows.h>

int Factorial(int _x)
{
	//阶乘;5! = 5*4*3*2*1
	int ret = 1;
	printf("%d! = ",_x);
	for(; _x>0; _x--)
	{
		if(_x == 1)//1时不需要乘
		{
			printf("%d",_x);
		}
		else//2以上都需要乘
		{
			printf("%d*",_x);
		}
		ret *= _x;
	}
	printf(" = %d\n", ret);
	return ret;

	/*int ret = 1;
	int i=1;
	for(; i<=_x; i++)
	{
		ret = ret*i; 
	}
	return ret;*/
}

int main()
{
	int i = 1;
	int result = 0;
	for(;i<10;i++){
		result += Factorial(i);
	}
	printf("result = %d\n", result);
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

4.3 遍历查找数组元素

#if 0
#include <stdio.h>
#include <windows.h>
//如果查找到,返回下标,如果没有查找到,返回-1.
int Find(int _arr[],int _num,int _index)
{
	int i = 0;
	for(;i<=_num;i++){
		if(_arr[i] == _index){
			return i;
		}
	}
	return -1;
}
int main()
{
	//先定义一个有序数组
	int arr[] = {1,2,3,4,5,6,7,8,9,10};
	//计算数组元素个数
	int num = sizeof(arr)/sizeof(arr[0]);
	//要查找的数
	int index = 0;
	printf("请输入要查找的数:");
	scanf("%d",&index);
	//输出查找到的下标,查找到则返回下标,没查找到返回-1
	printf("%d\n",Find(arr,	num, index));
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

4.4 二分查找法:查找的过程就是排出的过程。

思想:
1.定义一个有序数组
2.计算出数组元素的个数
3.输入你要查找的数
4.二分查找函数:
	a.传参:数组名,元素个数,查找的数
	b.二分查找,则就是对半查找,即求出mid,那就需要定义start和end
	c.如果你查找的数大于中间元素,则end不变,start=mid+1;
	  如果你查找的数小于中间元素,则start不变,end=mid-1;
	  如果查找的数等于中间元素,那就返回中间元素下标。
	  没有找到就返回-1.
	d.你并不是一次就能查找到,需要多次二分查找才能找到索要查找的数,因此需要循环,而循环的条件就是start<=end.
5.二分查找相比于遍历查找的优势:
遍历每次排除一个元素;而二分查找每次排除一半元素,大大提高了效率。
#if 1
#include <stdio.h>
#include <windows.h>
//如果查找到,返回下标,如果没有查找到,返回-1.
int BinaryLookup(int _arr[],int _num,int _index)
{
	int end = _num -1;
	int start = 0;
	while(start<=end)
	{
		int mid = end + start/2;
		if(_index<_arr[mid]){
			end = mid - 1;
		}else if(_index>_arr[mid]){
			start = mid + 1;
		}else{
			return mid;
		}		
	}
	return -1;
}
int main()
{
	//先定义一个有序数组
	int arr[] = {1,2,3,4,5,6,7,8,9,10};
	//计算数组元素个数
	int num = sizeof(arr)/sizeof(arr[0]);
	//要查找的数
	int index = 0;
	printf("请输入要查找的数:");
	scanf("%d",&index);
	//输出查找到的下标,查找到则返回下标,没查找到返回-1
	printf("%d\n",BinaryLookup(arr,	num, index));
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

4.5 编写代码,演示多个字符从两端移动,向中间汇聚。

思想:
1.定义两个相同空间的数组。
2.字符汇聚显示函数:
	a.传参:两个数组名
	b.既然要向中间汇聚,即需要知道start和end,start=0,end=strlen(arr1)-1;
	c.字符汇聚需要多次汇聚,因此需要循环来实现,而判定条件就是start<=end
	d.两个数组进行对应替换就ok;
	e:显示替换后的数组,要想看过程使用\n,要向看动态显示,即使用\r。并使用Sleep()函数。
		\n:回车+换行,而不仅仅是换行,printf("%s\n",_arr2);
		\r:回车,一个数字在同一个位置进行更新,printf("%s\r",_arr2);
#if 1
#include <stdio.h>
#include <windows.h>
void CharacterConvergenceShow(char _arr1[], char _arr2[])
{
	

	//1、while循环实现
	/*int start = 0;
	int end = strlen(_arr1) - 1;
	while(start<=end)
	{
		//用数组1替换数组2来实现数组替换
		_arr2[start] = _arr1[start];
		_arr2[end] = _arr1[end];
		start++;
		end--;
		//printf("%s\n",_arr2);

		//要想显示动态的字符汇聚,只需要将\n改成\r	
		//\n:回车+换行,而不仅仅是换行
		//\r:回车,一个数字在同一个位置进行更新.
		printf("%s\r",_arr2);
		Sleep(1000);
		
	}
	printf("\n");*/

	//for循环实现
	int start = 0;
	int end = strlen(_arr1) - 1;
	for(; start<=end; start++,end--)
	{
		_arr2[start] = _arr1[start];
		_arr2[end] = _arr1[end];
		printf("%s\r",_arr2);
		Sleep(1000);
	}
	printf("\n");
}
int main()
{
	char arr1[] ="hello world!";
	char arr2[] ="************";
	CharacterConvergenceShow(arr1,arr2);	
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

4.6 补充4.5,动态显示。

思想:
1.定义一个数组,将元素放入里面。
2.死循环让其输出每个元素个数。初始化;while1{语句;更新条件;}
	a.语句:将元素依次打印出来;因为了让其在一个位置动态显示,则\r,而不是\n.
	b.更新条件就是下标的i++;但要注意,你一直死循环的是4个元素,所以要i = i%4
	c.为了看其动态,则Sleep()函数。
#if 1
#include <stdio.h>
#include <windows.h>
void show()
{
	//定义一个数组
	const char arr1[] ="|/-\\";//\\这个其实是\,这里需要转义
	int i = 0;
	//死循环让其输出
	while(1)
	{
		printf("%c\r",arr1[i]);//将数组元素打印出来。因为是一个一个字符打印,所以使用%c,为了让其在一个位置动态显示,则\r
		i++;
		Sleep(100);
		i = i%4;//因为数组中只用4个元素,你一直要死循环执行它,所以你要i%4
	}
}

int main()
{
	show();
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

4.7 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。

思想:
1.宏定义正确的登录名和密码
2.定义两个数组,来存放所要输入的登录名和密码。
3.登录三次,那就必须用循环。
4.循环语句:
	a.首先要实现键盘输入登录名和密码;
	b.其次判断登录名、密码和你输入的登录名、密码是否一致。
		strcmp ----int strcmp ( const char * str1, const char * str2 );返回值为0时,登陆成功。
		如果一致,登陆成功;
		如果不一致,那登录失败,然后登录次数也相应减1.
	c.登录失败三次后,让等到一定时间再次尝试输入。并且实时刷新经过了多长时间。
		注意:一定要在后面给count赋值,要不进不去循环。
#if 1
#include <stdio.h>
#include <windows.h>
#pragma warning(disable:4996)

#define SIZE 128
#define LOGINCOUNT 3
#define DEF_NAME "admin"
#define DEF_PASSWORD "123456"
void Login()
{
	char admin[SIZE];
	char password[SIZE];
	//登陆次数
	int count = LOGINCOUNT;
	while(count>0)
	{
		printf("请输入登录名:");
		scanf("%s",admin);//数组名在作为函数参数时,会变成指针,所以不用加&,除了数组,其他的类型均要加地址符号。
		printf("请输入密码:");
		scanf("%s",password);

		if((strcmp(admin,DEF_NAME) == 0)&& (strcmp(password,DEF_PASSWORD) == 0))
		{
			printf("登录成功\n");
			break;
		}else{
			count--;
			printf("登录失败,你还剩余 %d 次\n",count);
		}

		if(count == 0)
		{
			int _time = 1;
			printf("等待60s重新登录\n");
			while(_time<=60)
			{
				printf("经过了%ds\r",_time);
				Sleep(1000);//1s
				_time++;
			}
			count = LOGINCOUNT;
		}
	}
}

int main()
{
	Login();
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

4.8 玩数字游戏

思想:
1.菜单函数:来解释规则。
2.玩游戏函数:
	a.系统随机生成一个1-100的数;
		srand((unsigned int)time(NULL));
		//在系统中注册一个随机数种子;
		//头文件:#include <stdlib.h> ;time的有文件#include <time.h> 
		int data = rand() % 100 + 1;
		//生成1-100随机数。
	b.因为猜数字的过程是一个循环过程,因此需要使用循环语句。
	c.键盘输入你要猜的值。
	d.键盘输入的值和系统生成的值进行对比。(猜大了、猜小了、猜中了。)猜中后就break跳出死循环。
3.主函数:
	a.调用菜单函数,告诉玩家你的游戏规则;
	b.玩家输入1或者2,来确定自己是玩游戏还是退出游戏;
		输入1,调用game函数;输入2,则退出游戏;输入其他数字,输入错误,重新输入。
	c.为了让玩家多玩几把,可以通过循环来实现。这里使用quit来决定退出,还是继续游戏。
4.注意:VS2012,一般要把初始化写在前面,要不就会报错。
#if 1
#include <stdio.h>
#include <windows.h>
#include <stdlib.h> 
#include <time.h> 

//菜单:需要写清楚规则
void Menu()
{
	printf("************************************\n");
	printf("****1:猜游戏        2:退出游戏****\n");
	printf("************************************\n");
}

void Game()
{
	int data = 0;
	//系统随机生成一个1-100数
	srand((unsigned int)time(NULL));
	data = rand() % 100 + 1;

	printf("游戏开始\n");

	//死循环来猜游戏,猜中break跳出,猜不中一直猜
	for(;;)
	{
		//输入你所猜的数字
		int num = 0;
		printf("输入1-100之间的数字:\n");
		scanf("%d",&num);
		//数值比较
		if(num > data)
		{
			printf("猜大了!\n");
		}else if(num < data)
		{
			printf("猜小了!\n");
		}else
		{
			printf("猜中了!数字是%d \n",num);
			break;
		}
	}
	printf("游戏结束\n");
}
int main()
{
	
	int	quit = 0;

	//调用菜单函数,告诉玩家游戏规则
	Menu();

	while(!quit)
	{
		int select = 0;
		printf("请输入数字(1:猜游戏   2:退出游戏):\n");
		scanf("%d",&select);

		//通过玩家输入的数字来确定调用对应的函数
		switch(select)
		{
			case 1:
				Game();
				printf("再玩一把?\n");
				break;
			case 2:
				quit = 1;
				printf("退出游戏\n");
				break;
			default:
				printf("输入错误,请重新输入\n");
				break;
		}
	}
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

5.goto语句

1goto语句:终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。
		这种情况使用break是达不到目的的。break只能从最内层循环退出到上一层的循环。
(2goto向上跳转:
	start:
		goto start;
(3goto向下跳转:
		goto end;
	end:
(4goto语句实现电脑关机

5.1 goto向上跳转,下面代码死循环输出hello world。

#if 1
#include <stdio.h>
#include <windows.h>
int main()
{
	int flag = 1;
START:
	printf("hello world\n");
	if(flag == 1)
	{
		goto START;
	}
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

5.2 goto,模拟用户登录情景,并且只能登录三次。

#if 1
#include <stdio.h>
#include <windows.h>
#pragma warning(disable:4996)

#define SIZE 128
#define LOGINCOUNT 3
#define DEF_NAME "admin"
#define DEF_PASSWORD "123456"
void Login()
{
	char admin[SIZE];
	char password[SIZE];
	//登陆次数
	int count = LOGINCOUNT;;
START:
	while(count>0)
	{
		printf("请输入登录名:");
		scanf("%s",admin);//数组名在作为函数参数时,会变成指针,所以不用加&,除了数组,其他的类型均要加地址符号。
		printf("请输入密码:");
		scanf("%s",password);

		if((strcmp(admin,DEF_NAME) == 0)&& (strcmp(password,DEF_PASSWORD) == 0))
		{
			printf("登录成功\n");
			break;
		}else{
			count--;
			printf("登录失败,你还剩余 %d 次\n",count);
		}

		if(count == 0)
		{
			int _time = 1;
			printf("等待60s重新登录\n");
			while(_time<=60)
			{
				printf("经过了%ds\r",_time);
				Sleep(100);//1s
				_time++;
			}
			count = LOGINCOUNT;
			goto START;
		}
	}
}

int main()
{
	Login();
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

5.3 goto语句向下跳转,下面代码直接跳转至END打印hello world,不输出xxxxxxxxxxxxxxxxxxxxx

#if 1
#include <stdio.h>
#include <windows.h>
int main()
{
	int flag = 1;
	if(flag == 1)
	{
		goto END;
	}
	printf("xxxxxxxxxxxxxxxxxxxxx\n");
END:
	printf("hello world\n");
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

5.4 goto语句的实例,实现电脑关机

1.关机命令:shutdown -s -t 180(三分钟后系统将关机)
	  取消关机命令:shutdown -a
	  注:dos命令:system("");来实现;比如systeminfo(电脑硬件信息);calc(计算器);osk(键盘)
2.电脑关机:使用关机指令后,要取消关机指令,输入“取消”二字,则取消关机;如果输入错误,我再给你一次机会,直到时间截止。
3.定义一个数组,存放你输入的字符;
  然后用strcmp()函数对输入的字符和“取消”进行比较,相等则执行取消关机指令,如果失败,再给你一次机会。
4.要向实现这个过程,就是用死循环来实现。这里使用gotowhile(1)

(1)while循环实现

#if 1
#include <stdio.h>
#include <windows.h>

#define SIZE 128
int main()
{
	system("shutdown -s -t 600");
	printf("电脑在600s后即将关机,输入“取消”,则取消关机。\n");

	while(1)
	{
		//输入字符
		char intput[SIZE];
		printf("输入intput:");
		scanf("%s",intput);
		//比较你输入的是否正确
		if((strcmp(intput,"取消")) == 0)
		{
			system("shutdown -a");
			printf("关机程序已经取消\n");
			//取消关机后,直接跳出循环
			break;
		}else{
			//输入错误,再输入一次,直到之间截止
			printf("输入错误,再给你一次机会,请输入“取消”\n");
		}
	}
	system("pause");
	return 0;
}
#endif

在这里插入图片描述
(2)goto语句实现

#if 1
#include <stdio.h>
#include <windows.h>

#define SIZE 128
int main()
{
	//输入字符
	char intput[SIZE];
	system("shutdown -s -t 600");
	printf("电脑在600s后即将关机,输入“取消”,则取消关机。\n");
START:
	printf("输入intput:");
	scanf("%s",intput);
	//比较你输入的是否正确
	if((strcmp(intput,"取消")) == 0)
	{
		system("shutdown -a");
		printf("关机程序已经取消\n");
	}else{
		//输入错误,再输入一次,直到之间截止
		printf("输入错误,再给你一次机会,请输入“取消”\n");
		//跳转至START处
		goto START;
	}

	system("pause");
	return 0;
}
#endif

在这里插入图片描述

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

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