循环语句--2022/3/25学习笔记(C语言)

本文是关于C语言循环语句的学习笔记,包括while、for、do while循环的使用,详细解释了各种循环语句的语法和注意事项,并提供了示例。还提到了getchar()函数的使用以及与输入相关的缓冲区清理。文章最后设有练习题和解答。

22/3/25学习笔记(Part 5)

while循环语句

在这里插入图片描述
(注释:continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接会跳转到wile语句的判断部分,进行下一次循环的入口判断。但break是用于永久的终止循环。)

  • 案例
    在这里插入图片描述
    (注释:输入函数(scanf,getchar等等)都是从与键盘中的缓冲区取的数据,密码已经拿走,剩下的\n直接被放入getchar,即ch里,于是自动打出确认成功。)
    在这里插入图片描述
    所以要在下一次输入之前,清除缓冲区
    在这里插入图片描述
    当输入密码有空格之后的其他字符时,会残留在缓冲区:

在这里插入图片描述
所以此时需要将缓冲区进行while循环用getchar清理
补充:清理到'\n'为止。

for循环语句

for循环语句语法为:

for(表达式1;表达式2;表达式3)
//表达式1即初始化
//表达式2即判断语句
//表达式3即调整语句
    循环语句;

在这里插入图片描述

  • for循环中break的用法:
    在这里插入图片描述

  • for循环中continue的用法:跳过该条令,其他继续循环。
    在这里插入图片描述

  • 注意:不可在for循环体内修改循环变量,防止for循环失去控制。并且for语句的循环控制变量的取值采用“前闭后开”的区间写法。

  • for循环变种之一(省略语句):

 int main()
 {
   for(;;)
   //三条语句皆可省略
   //判断部分的省略 = 判断部分恒为真
   {
   printf("质胜文则野,文胜质则史,文质彬彬,然后君子。\n");
   }
   return 0;//该循环会进入死循环。
 }

以下代码块:将会打印出九个“允执其中”。

int main()
{
 int a = 0;
 int b = 0;
 for(a=0; a<3;a++)
  {
    for(b=0; b<3; b++)
      {
         printf("允执其中\n");
       }
   }
 return 0;
 }

以下代码块,只会打印出三个“毋意,毋必,毋固,毋我”。

int main()
{
int a = 0;
int b = 0;
for(; a<3;a++)
 {
   for(; b<3; b++)
     {
        printf("毋意,毋必,毋固,毋我\n");
      }
  }
return 0;
}
  • for循环变种之二(用多个变量控制):
 int main()
 {
  int x, y;
  for(x=0, y=0; x<21 && y<23; x++, y++)
  {
  printf("思想就是对思想的思想。\n";)
  }
  return 0;
  }
 

do while循环语句

do while语法如下:

do
    循环语句
    while(表达式);

在这里插入图片描述

  • do while先斩后奏,先执行后判断。
  • 当do while循环语句中运用continue时,会进入死循环。
    在这里插入图片描述
  • do while至少执行一次,所以很少使用。

Little tips

  • getchar()

1.getchar是用于获取一个用户键盘输入的字符。只能接收一个字符,其函数值就是从输入设备获取到的字符。
在这里插入图片描述
(注释:该代码块不会忽视enter键(回车键))

2.getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCII码,出错返回-1,输入的字符不会回显在屏幕上。getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行。

  • 当输入CTRL+Z时,**getchar()**就读取结束。

  • putchar(),即输出一个字符

int main()
{
	int ch = getchar();
	putchar(ch);//输出一个字符
	return 0;
}
  • EOF = end of file(文件结束标志) ,即-1

  • 在上文For循环中,例用break时候,用到了if(a == 70),要注意在此需使用两个“=”,即为“==”,表示判断,当为一个“=”时表赋值。

  • gets() 能读包含空格的一行数据。

⭐题目

  1. 该代码块是什么意思?
#include<stdio.h>
int main()
{
     int ch = 0;
     while((ch = getchar()) ! = EOF)
     putchar(ch);
     return 0;
}
  1. 该代码块是什么意思?
 int main()
{
    int ch = 0;
	while((ch=getchar())!=EOF)
	{
		if(ch<'0'|| ch>'9')
			continue;	
		putchar(ch);
	}
	return 0;
}
  1. 请问该循环要循环多少次?
#include<stdio.h>
int main()
{
 int i = 0;
 int k = 0;
 for(i=0, k=0; k=0; i++, k++)
     k++;
 return 0;
}

⭐答案

  1. 这块代码的意思为:输入一个字符,当它不是-1时便输出它。
    其中,getchar旨在获取一个字符,!旨在反逻辑操作,EOF旨在为-1,即终止。
    代码意思为,输入一个字符并赋值给ch,当它不是-1的时候就输出这个字符。
  2. ch=getchar()的意思为“ch被赋值为getchar的返回值”。getchar的返回值为ASCII值,0的ASCII值为48,9的ASCII值为57,即输入的不是数字字符执行cuntinue,即跳过,不显示。当输入的为数字时,显示。
    3.零次。因为“k = 0”是赋值,在判断语句被赋值为0,0为假,所以不会进入循环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值