0
点赞
收藏
分享

微信扫一扫

C语言进阶- 2

爱读书的歌者 2023-07-13 阅读 79

1、输出0~9之间的数

#include <stdio.h>

int main()
{
	int ch=0;
	while((ch=getcharr())!=EOF)
	{
		if(ch<'0' || ch>'9')
			continue;
		putchar(ch);
	}	

   return 0;
}

for循环

使用while循环时,循环变量初始、循环判断、循环调整,可能会离得比较远,不容易修改,如下;所以就使用了for循环

#include <stdio.h>

int main()
{
	int i=0;//初始化
	//...
	
	while(i<10)//判断
	{
		
		//...
		
		i++;//循环调整
	}
   return 0;
}

for语法

for(表达式1;表达式2;表达式3)
		循环语句;

表达式1是 初始化部分,用于初始化循环变量的

表达式2是 条件判断部分

表达式3是 调整部分

建议:

1、不可在for循环体内(循环语句)修改循环变量,防止for循环失去控制

eg:在循环语句中写上 if(i=5),直接改变了i的值

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

eg:前闭后开区间如:for(i=0;i<10;i++);

       前后都闭区间如:for(i=0;i<=9;i++);

上面两个是等价的,推荐第一个是由于 第一个方便看出进行了10次循环,其他无关

eg:

#include <stdio.h>

int main()
{
	int i=0;
      //初始化 判断  调整
	for(i=1; i<=10; i++)
        ---  -----  ---
         1      2    4
	{
		printf("%d ",i);
        ----------------
               3
	}
    
    //先走第1步(初始)——>第2步(判断)--判断为真--->第3步  第4步
    (一直2、3、4步循环),直到----判断为假--->跳出
	
    return 0;
}

#include <stdio.h>

int main()
{

	for(int i=1;i<=10;i++)
	{
		printf("%d ",i);
	}
	
    return 0;
}

break、continue可以在for循环中使用,且与while循环中的作用一致

break:跳出循环;

continue:跳到循环调整部份处


使用continue时,while循环会卡死,但for不会;由于while循环中i++在循环语句中,而for循环i++在调整语句中,无论如何都会执行调整语句

如while:

while(i<=10)
{
		if(5==i)
    		continue;//当i=5时,直接跳到while条件判断部份,不会执行i++,
 i一直是5,就一直在死循环
    printf("%d ",i);
    i++;
 }

#include <stdio.h>

int main()
{

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

1、for循环的初始化、调整、判断都可以省略;但是——for循环的判断部分如果被省略,那判断条件就是:恒为真,就一直会执行

#include <stdio.h>

int main()
{
	for(;;)
	{
		printf("hehe\n");
	}
	
    return 0;

2、如果不是非常熟练,不要随便省略代码

如下正常是会打印100个“hehe”,如省略两个图示,就只会打印10个,是由于i=0,j循环时,j循环结束,j=10并未清零,之后i=2、3、4...10时j都不会再循环,所以只有1*10个“hehe”

#include <stdio.h>

int main()
{
	int i=0;
	int j=0;
	for(i=0;i<10;i++)  //省略i=0
	{
		for(j=0;j<10;j++)//省略j=0
		{
			printf("hehe\n");
		}
	}
	return 0;
}

例:下面不进行循环,由于条件判断语句:k=0, 直接k赋予/赋值 0,0为假,直接跳出循环

#include <stdio.h>

int main()
{
	int i=0;
	int k=0;
	for(i=0,k=0;k=0;i++,k++)//条件判断语句:k=0,
  直接k赋予/赋值 0,0为假,直接跳出循环
		k++;
	
	return 0;
}

举报

相关推荐

0 条评论