分支与循环

目录

http://t.csdn.cn/glAWwhttp://t.csdn.cn/glAWw一、分支语句

1.1 if 语句

1、 单分支

2、 双分支 

3、 多分支 

4、 悬空语句

5、if语句书写形式对比

 6、练习:

1.2 switch

1、对比if 和 switch

2、 switch 后表达式和case常量表达式的类型

3、 break的省略

4、default语句 

练习:

二、循环语句

2.1 while

1、 死循环

2、 基本写法

3、 break与continue

2.2 for

1、一些建议:

2、 两个循环变量

2.3 do while

2.4 练习

1、计算n的阶乘

 2、阶乘求和

三、goto语句


参考该笔记: 

http://t.csdn.cn/glAWwhttp://t.csdn.cn/glAWw一、分支语句

1.1 if 语句

非0为真,0为假

1、 单分支

if(表达式)//表达式为真则执行
		语句;

//举例:
int age=10;
if (age>=18)
	printf("成年\n");//结果什么都不显示

2、 双分支 

if(表达式)
		语句1;//表达式为真则执行
else
		语句2;//表达式为假则执行

//举例
int age=10;
if (age>=18)
	printf("成年\n");
else
	printf("未成年\n");

3、 多分支 

//形式3:多分支
if(表达式1)
		语句1;
else if(表达式2)
		语句2;//如果没用{ }则只能控制一条语句!!!如果下面还有语句则不受其控制!!!
else
		{
		语句3;
		语句4;
		}//用{ }可以执行多条语句;{}叫做代码块

//举例:
int age=60;
if (age<18)
	printf("少年\n");
//else if (18<=age<26)//这种写法是错误的
//因为执行过程是这样的:age=60是大于18,所以为真,“18<=age”这一部分就变成了1,
//1<26,所以此语句为真
else if (age>=18 && age<26)//正确写法 并且:&&
	printf("青年\n");
else if (age>=26 && age<40) 
	printf("中年\n");
else if (age>=40 && age<60) 
	printf("壮年\n");
else if (age>=60 && age<100) 
	printf("老年\n");
else 
	printf("神仙\n");

4、 悬空语句

int main()
{
	int a=0,b=2;
	if(a==1)
		if(b==2)
			printf("haha\n");
	else
		printf("xixi\n");
	return 0;
}

结果是:什么都不打印
因为else和最近的一个if匹配
上述代码相当于:

int main()
{
	int a=0,b=2;
	if(a==1) //a为假了,if语句进不去,下面的内容也不执行
	{
		if(b==2)
			printf("haha\n");
		else
			printf("xixi\n"); //else与其离的最近的、未匹配的if匹配,缩进在一块了
	}
	return 0;
}

5、if语句书写形式对比

//都是条件成立返回x,否则返回y;但是代码2比代码1可读性强,不会产生误解

//代码1
if (condition)
{
	return x;
}
return y;

//代码2
if (condition)
{
	return x;
}
else
{
return y;
}

赋值/等号:常量放在左边 

//代码3
if (a==1)
printf("hehe");
//如果误写成if(a=1),输出结果是一样的,但是代码逻辑错误
//为了避免这种错误,采用代码4的写法

//代码4
if (1==a) //常量放在左边
printf("haha");

 6、练习:

1.判断一个数是否为奇数

//判断一个数是否为奇数
int main()
{
	int a ;
	scanf("%d",&a); //&&&!!!!  %d后面不用加\n
	if (a % 2 == 1)
		printf("%d是奇数", a);
	else
		printf("%d不是奇数", a);

	return 0;
}

2.输出1-100之间的奇数 

//输出1-100之间的奇数
int main()
{
    int 1 = 0;
	for (i = 1; i < 101; i++)
		if (i % 2 == 1)
			printf("%d\n",i);
	return 0;
}

1.2 switch

1、对比if 和 switch

  • 用if语句输出星期几
//用if语句
int main()
{
	int day = 0;
	scanf("%d", &day);
	if (day == 1)
		printf("星期1\n");
	else if (day == 2)
		printf("星期2\n");
	else if (day == 3)
		printf("星期3\n");

	return 0;
}
  • 用switch 语句输出星期几 ,要加break !! case决定入口,break决定出口
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期1\n");
		break;//break!!!
	case 2:
		printf("星期2\n");
		break;//break!!!
	case 3:
		printf("星期3\n");
		break;//break!!!
	}
	return 0;
}

2、 switch 后表达式和case常量表达式的类型

  • 可以是整型,字符型和枚举型,但不能是float等  
case 0.0 //错的

3、 break的省略

  • 并不是每个case都要用break,而是按项目需求来使用 
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
    case 4:
	case 5:
		printf("工作日\n");
		break;//case也可以不加break!!!
	case 6:
	case 7:  
		printf("休息日\n");
		break;//break!!!
	}
	return 0;
}

4、default语句 

  • case中可以放if
  • 不在case范围内用default
int main()
{
	int day = 0;
	int n = 1;//看case1,case中可以放if
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		if (n = 1)
			printf("hehe\n");
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;//并起来写,不用在每个case后面写printf,break
	case 6:
	case 7:  
		printf("休息日\n");
		break;//break!!!

	 //不在case范围内用default
	 //可以放在case前,case和default并没有严格的控制,一般建议放在case后面
	default:
		printf("输入错误\n");
		break;
	}
	return 0;
}

练习:

 在这里插入图片描述

 输出:m=5,n=3

二、循环语句

2.1 while

1、 死循环

while(1)
{
	语句;
}

2、 基本写法

//实现打印1~10
int main()
{
	int i=1;
	while(i<=10)
	{
		printf("%d ",i);
		i++;
	}
	return 0;
}
//输出结果:1 2 3 4 5 6 7 8 9 10

3、 break与continue

  • break永久终止循环,停止后期的所有循环,直接终止循环
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			break;//如果i=5则跳出循环,注意是跳出while循环不是if语句!!!
		printf("%d ", i);
		i++;
	}
	return 0;
}
//输出结果:1 2 3 4
  • continue终止循环中本次循环continue后面的代码(提前结束当前循环),直接跳到循环中的判断部分判断是否要执行下一次循环 
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			continue;//跳过本次循环continue后面的代码,再次进入循环看是否需要继续循环
		printf("%d ", i);
		i++;
	}
	return 0;
}
//输出结果:1 2 3 4 死循环
  •  i++写在if前面
int main()
{
	int i = 1;
	while (i <= 10)
	{
		i++;//i++写在if前面
		if (i == 5)
			continue;
		printf("%d ", i);
	}
	return 0;
}
//输出结果:2 3 4 6 7 8 9 10 11

EOF - end of file 

2.2 for

1、一些建议:

  1. 不可在for循环体内修改循环变量,防止for循环失去控制
  2. 建议for语句的循环控制变量的取值采用“[前闭后开区间)”写法
  3. 调整部分是可以放在循环体内的,但放入后,for循环应写成: for(初始化;条件判断;){循环体;调整部分;} 不可以两个地方同时写调整部分
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
		i = 5;//在for循环体内修改循环变量,造成死循环
	}
	return 0;
}

运行结果:
在这里插入图片描述

  •  k=0是赋值语句不是判断语句 
#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
	int i = 0;
	int k = 0;
	for (i = 0, k = 0; k = 0; i++, k++)//判断条件中k=0是赋值语句,判断结果为假,循环根本不进去
		k++;
	return 0;
}

2、 两个循环变量

#include<stdio.h>
int main() {
	int x, y;
	for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
	{
		printf("hehe\n");
	}
	return 0;
}
//输出结果:两个hehe

2.3 do while

do
	{
    循环语句;
    }
while(表达式);

2.4 练习

1、计算n的阶乘

#include<stdio.h>
int main() 
{
	int n = 0;
	int i = 0;
	int ret = 1;
	scanf("%d", &n);
	for (i = 1; i < n + 1; i++)
		ret *= i;
	printf("%d", ret);
	return 0;
}

 2、阶乘求和

三、goto语句

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值