循环语句.

循环语句

目录

循环语句

1.while循环

<1>语法结构

<2>举例应用

<3>while循环中的break和continue

<4>拓展

2.for循环

<1>语法

<2>举例应用

<3>for循环中的break和continue

<4>for循环的变种

3.do while循环

<1>语法/特点

<2>举例应用

<3>do while循环中的break和continue

4.go to 语句

一个关机程序


1.while循环

<1>语法结构

<2>举例应用

打印1-10

<3>while循环中的break和continue

#include<stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		/*if (i == 5)
			break;*/     //在while循环中,break用于终止循环
		//加上后,输出结果为1-4

		/*if (i == 5)
			continue;*/    //在while循环中,作用为跳过本次循环代码,直接去判断部分,看是否进行下一次循环
		//加上后,输出结果为1-4 后有一个光标
		  
		printf("%d ", i);// \n 竖着输出-换行,无为横着输出
		         //%d 后有空格输出结果有空格
		i++;
		//输出结果为1-10
	}
	return 0;
}

添加break

break ---- 用于终止循环(永久终止循环)

 添加continue

continue ---- 跳过本此循环代码,直接去判断部分,看是否进行下一次循环

 在while循环中,continue跳过了i++,直接到判断部分,致使结果为1 2 3 4 _

<4>拓展

//getchar 获取一个字符   putchar输出一个字符
#include<stdio.h>
int main()
{
	int ch = getchar();//读取字符放入ch
	//printf("%c\n", ch);
	putchar(ch);//可替代printf("%c\n",ch);
	return 0;
}

 getchar 读取到字符的时候返回的是字符的ASCII码值,如果读取失败,返回的是EOF ---> -1

ASCII取值范围:0-127

#include<stdio.h>
int main()
{
	int ch = 0;
	//ctrl + z - getchar;
	while ((ch = getchar()) != EOF)
	{
		putchar(ch);
	}
	return 0;
}     //输入即输出,两者相同

#include<stdio.h>

int main()
{
	char password[20] = { 0 };//password本身就是地址不需要添加&
	printf("请输入密码:>");//按一下空格键可出来
	scanf_s("%s", password,20);
	printf("请确认密码(Y/N):>");
	int ch = getchar();
		if (ch == 'Y')
		{
			printf("欢迎回来\n");
		}
		else
		{
			printf("密码错误\n");
		}
	return 0;
}

 

scanf/getchar不是从键盘上直接读取数据的,而是从输入缓冲区读取,输入ASDFG\n(回车),scanf读取了ASDFG,getchar读取数据时,缓冲区还剩一个\n,getchar会把\n读走,即ch = \n,所以输出时无需确认成功\失败直接输出密码错误。

此时需要清除缓冲区的\n,使用getchar处理\n.

scanf默认读取到空格就结束了,在此时如果输入密码时存在空格会发生以下情况:

此时虽然有getchar清除缓冲区的内容,也会输出密码错误,原因:getchar读取一个字符,当输入密码为1234 56时,getchar();清除掉了4后的空格,56\n仍留在缓冲区。当getchar再次读取时读到5,输出密码错误。                                                 

此时可以考虑写一个循环,用于清理缓冲区。代码如下:

#include<stdio.h>
int main()
{
	char password[20] = { 0 };//password本身就是地址不需要添加&
	printf("请输入密码:>");//按一下空格键可出来
	scanf_s("%s", password,20);
	//清理缓冲区
	while (getchar() != '\n')
	{
		;
	}
	printf("请确认密码(Y/N):>");
	int ch = getchar();
		if (ch == 'Y')
		{
			printf("欢迎回来\n");
		}
		else
		{
			printf("密码错误\n");
		}
	return 0;
}

                                                                                                                                                                                                                                               

scanf("%[^\n]",arr]   --- 可以一直读到\n为止

2.for循环

<1>语法

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

       初始化       判断           调整

<2>举例应用

打印1-10

<3>for循环中的break和continue

#include<stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		/*if (i == 5)
			break;*/    //加上后输出结果为1-4

		/*if (i == 5)
			continue;*/      //执行i++,输出结果没有5,为1-4和6-10
		                  //不会陷入死循环,与while相比,i++的位置不相同,结果不同

		printf("%d ", i);
		//不可以在for循环体内修改循环变量,防止for循环失去控制
	}
	return 0;
}    //输出1-10

添加break

 添加continue --- 在for循环中,continue跳过本次循环,直接到判断部分,没有跳过i++,不会陷入死循环。

<4>for循环的变种

1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。

2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

//判断部分省略——判断部分恒为真
#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	for (i = 0 ; i < 3; i++)
	{
		for (j = 0 ; j < 3; j++)//如果没有i = 0,j = 0;输出结果为3行hehehe
			//一次循环后,j被赋值为3,后续无法进入循环
		{
			printf("hehehehe\n");
		}
	}
	return 0;
}    

如果将 i = 0和 j = 0 改为 i j,则输出结果为

                                                                                                                                                                                     

原因:一次循环进行后,j被赋值为3   无法进行后续循环,只打印3行hehehehe.

3.do while循环

<1>语法/特点

do

     循环语句;

while(表达式);

do语句特点:循环至少执行一次,使用的场景有限,所以不是经常使用。

<2>举例应用

打印1-10

do while()循环,先循环再判断。

<3>do while循环中的break和continue

#include<stdio.h>
int main()
{
	// do while()循环     先循环再判断
	// do   循环语句      while(表达式)
	int i = 1;
	do   //do语句的特点 :循环至少执行一次,使用场景有限,所以不经常使用
	{
		/*if (i == 5)
			break;*/   //输出结果为1-4 break为跳出循环,并非整个程序

		/*if (i == 5)
			continue;*/ //当i = 5 时 会跳过i++,进入死循环,输出1-4 光标

		printf("%d ", i);
		i++;
	} while (i <= 10);

	return 0;
	//输出结果为1-10
}

添加break

添加continue---continue跳过了i++

4.go to 语句

一个关机程序

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char arr[20] = { 0 };
	system("shutdown -s -t 60");
again:
	printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪,就取消关机\n");
	scanf("%s", arr);
	if (strcmp(arr, "我是猪") == 0)
	{
		system("shutdown -a");
	}
	else
	{
		goto again;
	}

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值