C语言分支与循环

C语言是一种 结构化 的程序设计语言

C语言支持三种结构:

顺序结构

选择结构

循环结构

C语言有9种控制语句,可分成以下三类:

1、条件判断语句也叫分支语句:if语句、switch语句;

2、循环执行语句:do while语句、while语句、for语句;

3、转向语句:break语句、goto语句、continue语句、return语句;

一、分支语句(选择结构)

1、if  else

①结构:

<1>if(表达式)

{

语句

}

<2>if(表达式)

{

语句

}

else

{

语句

}

<3>if(表达式)

{

语句

}

else if(表达式)

{

语句

}

else

{

语句

}

②如果不加{}时,if或else只执行一条语句。如:

#include <stdio.h>
int main()
{
	int a = 9;
	if (a == 9)
		printf("perfect\n");//执行,if所控制的
	else
		printf("good\n");//不执行,else控制的
	printf("nice\n");//执行,if   else之外的语句
	return 0;
}

要想控制多条语句,需要加{}

③悬空else

if  else语句进行嵌套使用时,else与离它最近的if相组合,如果要让else与别的if相组合,就要使用{}分清层次。

④<1>if()

{

return x;

}

return y;

<2>if()

{

return x;

}

else

{

return y;

}

两者表示的代码相同,结果相同。

⑤在进行判断时,可以将常量写在双等的左边,变量写在右边,这样可以防止将双等写成等于而造成出错。

★if {} else {}是一条语句

2、switch

①结构:switch(整形表达式)//可以是int、long、char等类型,但float不是。

{

case(整型常量表达式):

break;

case(整型常量表达式):

break;

default:

break;

}

②break可以使代码跳出switch语句。

③default执行的是case之外的其余情况。

★switch语句 default只是入口,如果default在最后,且每一个case语句均没有break,那么最后也会执行default,只起到入口作用,程序不遇阻碍将一直顺序执行。

★如果输入1,那么结果是1  10  2  4,因为没有break,所以会顺序执行。

#include<stdio.h>
int main()
{
	int input = 0;
	scanf("%d",&input);
	switch (input)
	{
	case 1:
		printf("1\n");
	default:
		printf("10\n");
	case 2:
		printf("2\n");
	case 4:
		printf("4\n");
	}
	return 0;
}

二、循环语句

1、while循环

①while循环中的break,用于永久的终止循环。

②while循环中的continue,用于跳过本次循环continue后面的代码,直接返回判断部分,进行下一次循环。

③getchar得到一个字符、putchar输出一个字符、EOF是文件结束的标志(当文件读取错误或者结束时出现,EOF是-1)

④gets是得到一串字符。

当 scanf 输入一串数字后,按回车之后缓冲区就多了\n,scanf只拿走了数字,留下了\n

<1>当下一步用getchar时就会得到\n而当下一步需要得到一个数字时可以正常输入数字。

<2>当下一步用scanf时就不用考虑这个问题。

<3>scanf读字符串时遇到空格就会停止读取。

☆windows 环境按ctrl +z,getchar就返回EOF

☆scanf读字符串时要注意清空缓冲区,scanf遇到空格就不再读取数据

2、for循环

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

             循环语句;

表达式1:初始化;

表达式2:判断;

表达式3:调整;

①for循环中也存在break、continue,用法与while循环中的一样,但是也存在差异,for循环中的continue之后是跳到调整部分。而while循环中continue是跳到判断部分,如果调整部分是在continue之后,会陷入死循环,而调整部分在continue之前则与for循环中的相同。

②建议不在for循环体内修改循环变量,防止for循环失去控制。

③建议for语句的 循环控制变量的取值范围采用“前闭后开”的写法。

④for循环的变种:

<1>for(;;)

这种写法完全合法,省略了初始化、判断和调整部分,但是省略了判断部分容易导致死循环,因为判断部分省略时判断部分恒为正。

<2>for(x=0,y=0;x<2 && y<5; x++,++y)

这种写法也完全合法,由两个变量控制这个循环。

#include <stdio.h>
int main()
{
	int i = 0;
	int k = 0;
	for (i = 0, k = 0; k = 0; i++, k++)
		k++;
	return 0;
}

此代码循环几次?

循环0次,因为判断部分是赋值语句不是判断语句,而且赋的值为0,为假,不循环。

3、do while循环

格式:do

                循环语句;

        while(表达式);

①do while循环中的break和continue与while循环中的很相似。

②do while循环至少执行一次。

三、goto语句

可以进行乱跳。如:

flag:

        语句;

goto flag;

最常用的是,跳出多层嵌套(但只能在一个函数范围内跳出,不能跨函数)

四、循环题目

1、n的阶乘

2、1!+2!+3!+4!+....+n!

3、在一个有序数组中查找具体的某个数字n(二分查找)

4、编写代码,演示多个字符从两端移动,向中间汇聚

5、编写代码实现,模拟用户登录情景,并且只能登陆三次

★strcmp和==

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会算法的笨小孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值