首页 > 其他分享 >C语言进阶- 2

C语言进阶- 2

时间:2023-07-06 19:32:04浏览次数:25  
标签:语句 include 进阶 int C语言 while 循环 main

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;
}

标签:语句,include,进阶,int,C语言,while,循环,main
From: https://blog.51cto.com/u_16168627/6644523

相关文章

  • 高可用 ZooKeeper 集群部署(进阶中级)
    高可用ZooKeeper集群部署(进阶中级)免密登录[root@master~]#ssh-keygen[root@master~]#ssh-copy-idroot@slave1[root@master~]#ssh-copy-idroot@slave2[root@master~]#sshslave1Lastlogin:TueMay2322:10:272023from192.168.100.1[root@slave1~]#exit......
  • Hive 组件(进阶中级)
    Hive组件(进阶中级)1.实验一:Hive组件部署1.实验任务一:环境需求1.1.步骤一:解压安装文件[root@master~]#lsanaconda-ks.cfgjdk-8u152-linux-x64.tar.gzapache-hive-2.0.0-bin.tar.gzmysql-5.7.18.ziphadoop-2.7.1.tar.gzstudent.csvhbase-......
  • HBase 分布式部署(进阶中级)
    1.HBase分布式部署(进阶中级)1.实验任务一:部署前期准备1.1.步骤一:安装部署hadoopha分布式环境1.2.步骤二:解压安装文件[root@master~]#cd[root@master~]#lsanaconda-ks.cfgjdk-8u152-linux-x64.tar.gzhadoop-2.7.1.tar.gzzookeeper-3.4.8.tar.gzhb......
  • 2. HTML 进阶之HTTP请求
    1)请求组成请求由三部分组成请求行请求头请求体可以用telnet程序测试2)请求方式与数据格式get请求示例GET/test2?name=%E5%BC%A0&age=20HTTP/1.1Host:localhost%E5%BC%A0是【张】经过URL编码后的结果post请求示例POST/test2HTTP/1.1Host:localho......
  • C语言代码美学:让你惊叹的经典示例
    C语言的输出功能非常强大,通过printf函数可以实现各种赏心悦目的输出效果。刚开始使用printf时可能会遇到一些问题,比如输出格式不正确,出现一些奇怪的符号。这是因为printf函数中有一些特殊的规定字符,比如换行符\n、换页符\f、回车符\r、制表符\t等。下面我们来介绍一些常用的输......
  • c语言结构体指针初始化
    结构体定义结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。结构是C编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构体中的数据成员可以是基本数据类型(如int、float、char等),也可以是其他结构体类型、指针类型等......
  • java进阶3:GC 的背景与一般原理
    为什么会有GC其最本质的原因是因为内存资源的稀缺性。我们计算机最核心的资源是CPU和内存,CPU是随着计算机一直存在的东西,核数有限但是一直存在;但内存比较稀缺,A占满了,B就不能用了,我们怎么可以共享使用这个内存呢,这就是GC产生的原因了。背景:在传统的编程语言中,程序员需要手动分配和释......
  • 阿里技术专家深入讲解,SpringMVC入门到进阶,错过再无
    前言SpringMVC是一个实现了WebMVC设计模式的轻量级Web框架。它与前辈Struts2框架一样,都属于MVC框架,因为其使用和性能等方面比Struts2更加优异,所以SpringMVC是现在比较主流的MVC框架。先简单概括一下SpringMVC的主要特点:灵活性强,容易与其他框架集成;提供了前端控制器Dispatch......
  • C语言学习笔记
    C语言学习笔记1.初识C语言常见类型长度单位:字节=比特全局变量和局部变量全局变量:定义在花括号外的变量局部变量:定义在花括号内的变量局部变量和全局变量的名字重合时,局部变量优先C语言规定变量要定义在当前代码块的最前面*计算两数之和:#include<stdio.h>intmain()......
  • k8s进阶面试
    docker与k8s的区别,分别适用于什么场景?docker只负责生成容器,没有其他功能,但部署简单,方便测试等,k8s附带的有各种功能:探针、污点、资源限制、高可用等,如果生产中的服务达到一定规模且需保证全链路监控及高可用,k8s是最佳选择docker的底层实现原理?如何运行一个容器?六种命名空间的共......