C语言的分支与循环(一)

1.if语句

语法结构:
if(表达式)
    语句;


if(表达式)
    语句1;
else
    语句2;


//多分支    
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;
#include <stdio.h>
//代码1
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年\n");
	}
}
//代码2
#include <stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年\n");
	}
	else
	{
		printf("成年\n");
	}

//代码3
#include <stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("少年\n");
	}
	else if (age >= 18 && age < 30)
	{
		printf("青年\n");
	}
	else if (age >= 30 && age < 50)
	{
		   
			printf("中年\n");
	}
	else if (age >= 50 && age < 80)
	{
		printf("老年\n");
	}
	else
	{
		printf("老寿星\n");
	}

}
//解释一下:
//如果表达式的结果为真,则语句执行。
//在C语言中如何表示真假:0表示假,非0表示真。
  • if语句如果不加{},那么就默认只控制一条语句,{}就是一个代码块

1.else的匹配原则

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("hehe\n");
	else
			printf("haha\n");
	return 0;
}
  • 按照如上方式书写的代码,实际输出的是空,因为else的匹配原则是和离它最近的if匹配,这样的书写方式很不规范,会给人造成很大的误解
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	{
		if (b == 2)
		{
			printf("hehe\n");
		}
	}
	else
	{
		printf("haha\n");
	}
	return 0;
}
  • 这样才是清晰明了的代码

2.例题

   输出1--100里面的所有奇数

#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 100)
	{
		if (i % 2 == 1)
		{
			printf("%d\n", i);
		}
		i++;
	}
	    
	return 0;
}

2.switch语句

基础语法:

switch(整型表达式[int])
{
    case 整形常量表达式:
        语句;
}

例题:判断星期几

#include <stdio.h>
int main()
{
	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;
		default:        //当输入错误时
			printf("选择错误\n");
			break;
	}
	return 0;
}
  • 如果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 6:
    case 7:
        printf("休息日\n");
        break;
    default:
        printf("选择错误\n");
        break;
    }
    return 0;
}

例题 :通过此题可以充分理解switch语句

#include <stdio.h>
int main()
{
    int n = 1;
    int m = 2;
    switch (n) //此时n=1 case1可以执行,因为没有break,所以之后的也可以执行
    {
    case 1: m++;
    case 2: n++;
    case 3:
        switch (n) //此时n=2 case1就不能执行了,但是case2可以执行
        {//switch允许嵌套使用
        case 1: n++;
        case 2:
            m++; n++;
            break;
        }
    case 4:
        m++;
        break;
    default:
        break;
    }
    printf("m = %d, n = %d\n", m, n);
    return 0;
}

 3.while循环语句

基础语法:

    while(表达式)
         循环语句;
示例:输出1--10
#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

break的作用

  在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。

continue的作用

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

具体案例

#include <stdio.h>
int main()
{
	int n = 1;
	while (n <= 10)
	{
		if (5 == n)//当n=5的时候,进入if的判断,continue就将后面的所有代码跳过,回到while的判断条件中,造成了死循环
		{
			continue;
		}
		printf("%d ", n);
		n++;
	}
		
	return 0;
}

  • 如果想要输出1---10但是没有5,那么就需要更改一下
int main()
{
	//1 2 3 4  6 7 8 9 10
	int n = 0;
	while (n < 10)
	{
		n++;
		if (5 == n)
		{
			continue;
		}
		printf("%d ", n);
	}

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值