C语言分支与循环

C语言是结构化的程序设计语言,结构是顺序、选择、循环这三种结构。在C语言中,用if,switch来实现分支;for,while,do while 来实现循环。

1.1if语句

1 if(表达式)
2   语句

当表达式成立(为真),那么语句就执行;表达式不成立(为假),语句就不执行。(C语言中,0表示假,非0表示真)。比如输入一个数,判断正数

1 inlcude<stdio.h>
2 int main()
3 {
4    int i=0;
5    scanf("%d",&i);
6    if(i>0)
7    printf("正数");
8    return 0; 
9 } 

1.2else语句

如果一个数不是正数,那还会是负数,判断正负数的时候怎么办呢?

这个时候就要用到if...else...语句了,语法形式如下:

1 if(表达式)
2    语句1
3  else
4    语句2

 比如输入一个数,判断正负数。

1 inlcude<stdio.h>
2 int main()
3 {
4    int i=0;
5    scanf("%d",&i);
6    if(i>0)
7    printf("正数");
8    else
9    printf("负数");
10   return 0;
11 } 
1.3默认在 if else 语句中默认都只控制⼀条语句,比如:
1 #include <stdio.h>
2 int main()
3 {
4 int age = 0;
5 scanf("%d", &age);
6 if(age >= 18)
7 printf("成年了\n");
8 printf("没有实名限制了\n");
9 return 0;
10 }

上述代码,不管输入的是<18还是>18,“没有实名限制了”都会打印在屏幕上,这就是因为if只能控制一条语句,printf("没有实名限制了\n")是不受if控制的;当我们要if语句同时控制两条语句时,用{}把要控制的语句括起来就可以了,else也一样。

1 #include <stdio.h>
2 int main()
3 {
4 int age = 0;
5 scanf("%d", &age);
6 if(age >= 18)
7 {
8   printf("成年了\n");
9   printf("没有实名限制了\n");
10 }
11  else
12 {
13  printf("未成年\n");
14  printf("有实名限制\n");
15 }
16 return 0;
17 }

1.4嵌套if

在if else语句在中,else可以与另一个if语句连用,比如:

1 #include<stdio.h>
2 int main()
3 {
4	int i = 0;
5	scanf("%d", &i);
6	if(i==0)
7	{
8		printf("你输入的数是0\n");
9	}
10	else
11	{
12		if (i > 0)
13		{
14			printf("正数\n");
15		}
16		else
17			printf("负数");
18	}
19	return 0;
20 }

1.5悬空else

如果有多个 if else ,要记住⼀条规则, else 总是跟最接近的 if 匹配。比如下面
i=1不成立,但是程序并没有打印heihei,这是因为if和最近的else配对,所以第一个if就不成立,程序后面就不执行,所以为了避免出现这种问题,最好还是添加{}将每个if else语句括起来。
2.1 switch语句
switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重
else if 改成更易⽤、可读性更好的形式。
1 switch (expression) 
2 {
3 case value1: statement
4 case value2: statement
5 default: statement
6 }

在上述代码中,根据expression不同的值,执行相应的分支。特别要注意的是:switch后的expression必须是整型表达式;case后面的值,必须是整型常量表达式。比如下列:输入一个数,计算除3之后的值。

1 #include <stdio.h>
2 int main()
3 {
4 int n = 0;
5 scanf("%d", &n);
6 switch(n%3)
7 {
8 case 0:
9 printf("整除,余数为0\n"); 
10 break;
11 case 1:
12 printf("余数是1\n"); 
13 break;
14 case 2:
15 printf("余数是2\n"); 
16 break;
17 }
18 return 0;
19 }
特别要注意的是:case 和后边的数字之间必须有空格 ; 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。s witch后面的表达式只是去对应开始执行case*,是switch的起点,如果要让程序只执行一个case,就需要添加break,就不执行后面的case。若是没有相应的值,就执行default。switch语句中,case子句和default子句没有顺序要求,但是通常将default放在最后。
#第一次写博客,有不对的地方,欢迎大家指正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值