循环语句和分支语句

目录

1.分支语句(选择结构)

1.1 if语句

1.2 switch语句

1.2.1 在switch语句中的break

1.2.2 default子句

2. 循环语句

2.1while循环

 2.1.1while语句中的break和continue

2.2 for循环

2.2.1 for循环中的break和continue

2.2.2 一些for循环的变种

2.2.3 for循环练习

2.3 do...while()循环

2.3.1 表达式

 2.3.2 do语句的特点

3. goto语句

4.  关于getchar putchar

4.1 getchar 获取一个字符

4.2 putchar 打印一个字符(%s)


1.分支语句(选择结构)

1.1 if语句

语法结构

单分支:

if(表达式)

        语句;

双分支:

if(表达式)

        语句1;

else

        语句2;

多分支:

if(表达式1)

        语句1;

else if(表达式2)

        语句2;

else

        语句3;

如果表达式结果为真,则语句执行.

如果条件成立,要执行多条语句,应该使用代码块{}.

注意: 

1.else的匹配:else是和它离得最近的if配对

2.if语句的表达式中 常量放左边更易发现错误

3.  0表示假,非0表示真

1.2 switch语句

语法结构

switch(整形表达式)

{

        语句项;

}

 语句项是一些case语句

eg:

case 整形常量表达式:

        语句;

1.2.1 在switch语句中的break

在switch语句中,没有办法实现直接分支,搭配break使用才能实现真正的分支

break语句的实际效果是把语句列表划分为不同的分支部分

编程好习惯:在最后一个case语句的后面加上一条break语句.

注:switch语句中表达式的类型只能是整形和枚举类型

1.2.2 default子句

每个switch语句中只能出现一条default子句,但它可以出现在语句列表的任何位置(没有顺序要求),而且语句流会像执行一个case标签一样执行default子句

2. 循环语句

while      for       do while

2.1while循环

语法结构:

while(表达式)

{

        循环语句;

}

 2.1.1while语句中的break和continue

1. break在while循环中的作用:永久终止循环

#include<stdio.h>
int main()
{
	int i =1;
	do
	{
		if (i == 6)
			break;
		printf("%d ", i);
		i++;
	} while (i <= 10);

	return 0;
}

此代码的打印结果是 1 2 3 4 5

2. continue在while循环中的作用:用于终止本次循环.也就是本次循环中的continue后面的代码不会再执行,而是直接跳转到while语句的判断部分,开始进行下一次循环的入口判断

#include<stdio.h>
int main()
{
	int i =1;
	do
	{
		if (i == 6)
			continue;
		printf("%d ", i);
		i++;
	} while (i <= 10);

	return 0;
}

此段代码的打印结果是 1 2 3 4 5 ...死循环

2.2 for循环

语法结构

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

{

        循环语句;

}

表达式1: 为初始化部分,用于初始化循环部分

表达式2: 为条件判断部分,用于判断循环是否终止

表达式3: 为调整部分,用于循环条件的调整

 

:for循环的判断部分省略时,就意味着此判断恒为真.

建议:

1.不可在for循环内修改循环变量,防止for循环失去控制

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

2.2.1 for循环中的break和continue

for循环中也可以出现break和continue,他们的意义和在while循环中是一样的

2.2.2 一些for循环的变种

1.for循环中的初始化部分,判断部分,调整部分省略

导致无限循环打印"呵呵"

int main()
{

    for(;;)
    {
        printf("呵呵\n");
    }
    return 0;
}

2.初始化部分省略

第一次进入循环时,第二个for循环打印10个"呵呵",j=10.

因为省略了初始化部分,所以第二个for循环将不再打印

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

3.使用多余一个变量控制循环

仅打印两个"呵呵"

int main()
{
	int x, y;
	for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
	{
		printf("呵呵\n");
	}
	return 0;
}

2.2.3 for循环练习

int main()
{
	int i = 0;
	int k = 0;
	for (i = 0, k = 0; k = 0; i++, k++)
	{
		k++;
		printf("呵呵");
	}
	return 0;
}

此段代码无打印结果,因为条件判断语句中的"="是赋值,并非判断,所以循环0次 

2.3 do...while()循环

2.3.1 表达式

do

        循环语句

while(表达式);

 2.3.2 do语句的特点

循环至少执行一次,使用的场景有限,所以不经常使用

3. goto语句

goto语句不能跨函数跳转

C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。
从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。
但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程

goto语言真正适合的场景如下:

for(...)
  for(...)
 {
    for(...)
   {
      if(disaster)
        goto error;
   }
 }
  …
error:
if(disaster)
    // 处理错误情况

4.  关于getchar putchar

4.1 getchar 获取一个字符

int main()
{
	int ch = getchar();
	putchar(ch);
	return 0;
}

4.2 putchar 打印一个字符(%s)

int main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF)
	{
		putchar(ch);
	}
	return 0;
}

当需要输入多组数据时

while(scanf("%d",&ch)!=EOF)

while(scanf("%d",&ch)==1)

while(~scanf("%d",&ch))

两个字符串的比较应该使用"strcmp",而不是"=="

eg:  strcmp(password,"abcd")==0;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值