零基础快乐学习C/C++——04

分支语句和循环语句

1.1 分支

1.1.1 语句的概念

分号隔开的是一条语句

int a = 0;//这是一条语句
;//这也是一条语句

1.1.2分支语句

  1. if语句
    if(表达式)
    语句;
int age = 10;
if(age<18)
	printf("未成年\n");
else
	printf("成年\n");
//多分支
int age = 10;
if(age<18)
	printf("未成年\n");
else if(age>=18 && age<28)
	printf("青年\n");
else if(age>=28 && age<50)
	printf("壮年\n");
else 
	printf("老年\n");

如果需要多条语句,需要用{ }括起来
悬空else:还应注意一点,else与其离得最近的if匹配

int main(){
int a = 0;
int b = 2;
if(a == 1)
	if(b == 2)
		printf("hehe\n");
	else
	//注意 这里的else跟离得最近的if匹配
		printf("haha\n");
	return 0;
}

并不输出haha或者hehe,如果想要让else跟最上面的if匹配,可以用大括号

int main(){
int a = 0;
int b = 2;
if(a == 1)
{
	if(b == 2)
		printf("hehe\n");
}
	else
	//注意 这里的else跟离得最近的if匹配
		printf("haha\n");
	return 0;
}

输出为haha

int num = 4;
if(num = 5)//这里的 = 是赋值 == 判断相等
{
	pirntf("呵呵\n");
}
//最后打印出来呵呵
int num = 4;
if(5 == num)//建议这么写
{
	pirntf("呵呵\n");
}
//最后打印出来呵呵
小例子

.输出1-100之间的奇数

#include<stdio.h>
int main(){
	int i = 1;
	while(i<=100)
	{
		if(i%2 == 1)
			printf("%d ",i);
		i++;
	}
	return 0;
}
  1. switch语句
    常用于多分支语句
    switch(整型表达式)//必须是整型
    {
    语句项:
    }
关于入口和出口

case决定入口;break决定出口

其中语句项是什么呢?
//是一些case语句,如下
case 整型常量表达式:
语句;
举个例子

int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
	printf("星期一\n");
	break;
case 2:
	printf("星期二\n");
	break;
case 3:
	printf("星期三\n");
	break;
case 4;
	printf("星期四\n");
	break;
case 5:
	printf("星期五\n");
	break;
case 6:
	printf("星期六\n");
	break;
case 7:
	printf("星期日\n");
	break;
//如果不加break,那么比如输入3,那么会打印3之后的 4567
}
//case后面的break不是非得加上
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4;
case 5:
	printf("工作日\n");
	break;
case 6:
case 7:
	printf("休息日\n");
	break;
	//如果输入非法(输入的不是1-7),可以用default
default:
	printf("输入错误\n");
	break;

1.2循环

1.2.1while循环

while语法结构
while(表达式)
循环语句;

//while循环
//打印1到10的数字
int i = 1;
while(i<=10){  //当有两条语句的时候,就用大括号
	printf("%d",i);
	i++;
}
//while循环中的break continue关键字

int i = 1;
while(i<=10){  //当有两条语句的时候,就用大括号
	if(i == 5)
		break;
	printf("%d",i);
	i++;
}
//最后打印出来1234

int i = 1;
while(i<=10){  //当有两条语句的时候,就用大括号
	if(i == 5)
		continue;//i=5的时候重新跳到判断部分了
	printf("%d",i);
	i++;
}
//也是打印出来1234 但是进入死循环,i=5的时候又跳到上面,i的值一直无法改变
综上,break的作用是停止后期的所有循环,直接终止循环;continue的作用是终止本次循环,直接跳转到while语句的判断部分,进入下一次循环的入口判断
int ch = 0;
//ctrl + z可用于结束
//EOF -end of file -- -1
while((ch = getchar())!=EOF)
{
	putchar(ch);
}

以下例子并未得到理想输出原因是因为再输入密码的时候,还敲了一下回车,导致输入缓冲区中有\n,所以getchar读取了这个\n
在这里插入图片描述
如何得到理想效果,把输入缓冲区的字符读完就可以,因此可以利用while循环

int ret = 0;
int ch = 0;
char password[20] = 0;
printf("请输入密码:");
scanf("%s",password);//输入密码放到password数组中
//注意此时需要把输入缓冲区中都读空才能进行下步操作
while((ch=getchar()) !='\n')
{
	;//因为只需要让他一直读,所以不用写什么语句
}
printf("请确认<Y/N>");
ret = getchar();//Y/N
if(ret == 'Y')
{
	printf("确认成功\n");
}
else
{
	printf("放弃确认\n");
}

1.2.2 for循环

  1. for和while循环对比
    对于while循环,比如对于i的初始化,对于i的判断,对于i的调整,都有些繁琐,一旦代码量大的时候,会导致一些书写错误,所以for循环是目前大多数程序猿主流的
  2. for循环语法
    for(表达式1;表达式2;表达式3)
    循环语句;
    其中,表达式1–初始化部分(int i = 0;)
    表达式2–条件判断部分(i < 10)
    表达式3–调整部分(i ++)
    小案例
//用for循环打印1-10的数字
int i = 0;
for(i=1;i<=10;i++)
{
	printf("%d",i);
}

for循环的执行流程是什么
在这里插入图片描述
初始化–>判断–>循环体—>调整---->判断

  1. for循环中的break和continue的用法
//用for循环打印1-10的数字
int i = 0;
for(i=1;i<=10;i++) 
{
	if(i == 5)
		break;//跳出循环
	printf("%d",i);
}
//与while循环中一致
//用for循环打印1-10的数字
int i = 0;
for(i=1;i<=10;i++) 
{
	if(i == 5)
		continue;//
	printf("%d",i);
}
//输出1234678910

在这里插入图片描述
把while和for中continue用法进行对比,当i=5时,在for循环中将会跳过printf—>转到调整部分,i = 6;而在whi循环中,直接跳过了printf和i++(也就是while循环没有机会调整)–>转到判断,i = 5,所以产生死循环

  1. for循环语法建议
    建议for语句的循环控制变量的取值采用“前闭后开区间”写法
    也就是比如for(i=0;i<10;i++)这里0为闭区间,10为开区间

  2. for循环的变种

for(;;)//for循环的初始化,判断,调整都可以省略,但是判断条件被省略,恒为正,可能会导致死循环
for(x = 0,y = 0;x<2 && y<5; ++x,y++)//两个循环变量

在这里插入图片描述
如果随意省略, 就会出现上例,只能打印10个hehe

//请问循环多少次
int i = 0;
int k = 0;
for(i=0,k=0;k=0;i++,k++)
	k++;
//注意这里的判断是k=0,这个表达式结果为0,0为假,不进入循环,所以循环了0次

1.2.3 do…while循环

int i = 1;
do
{
	printf("%d",i);
	i++;
}
while(i<=10);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在这个问题中,用户提供了两段代码,分别是引用\[1\]和引用\[2\]。这两段代码都是用来在一个数组中查找指定数的位置。 引用\[1\]是一个C++代码示例,它使用了iostream和stdio.h头文件,并使用了命名空间std。代码中使用了一个while循环来不断读取输入的n值,然后创建一个大小为n的整型数组a,并通过for循环读取数组的元素。接下来,代码读取了一个整数m,并使用for循环遍历数组a,查找是否有与m相等的元素。如果找到了相等的元素,则将其位置赋值给变量t,并跳出循环。最后,根据t的值输出结果。 引用\[2\]是另一个C代码示例,它使用了stdio.h头文件。代码中同样使用了一个while循环来不断读取输入的n值,然后创建一个大小为n的整型数组a,并通过for循环读取数组的元素。接下来,代码读取了一个整数m,并使用for循环遍历数组a,查找是否有与m相等的元素。如果找到了相等的元素,则将其位置赋值给变量count,并将flag设置为1,表示找到了。最后,根据flag的值输出结果。 综上所述,这两段代码都是用来在一个数组中查找指定数的位置。它们的实现方式略有不同,但都能达到相同的目的。 #### 引用[.reference_title] - *1* [1143: 零起点学算法50——数组中查找数](https://blog.csdn.net/weixin_43965597/article/details/113104995)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [问题 C: 零起点学算法82——数组中查找数](https://blog.csdn.net/chenhannan0024/article/details/127568844)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值