C语言分支和循环(一)

        C语⾔是结构化的程序设计语⾔,其中结构是指顺序结构、选择结构、循环结构。我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。

一、if 语句

1、if语句

语法形式:
        if语句  (表达式成立(为真)执行语句否则不执行)
        if(表达式)
        语句
例如:判断输入的整数是否为奇数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int i = 0;
	printf("请输入一个正整数:\n");
	scanf("%d", &i);
	//对表达式进行判断:输入的数字进行除2取余,若余数为1则是奇数
	if (i % 2 == 1)
	{
		printf("输入的数字为奇数");
	}
	return 0;
}
2、if else语句

语法形式:

        if(表达式)
                语句1
        else
                语句2
例如:判断输入的整数是奇数还是偶数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int i = 0;
	printf("请输入一个正整数:\n");
	scanf("%d", &i);
	//对表达式进行判断:输入的数字进行除2取余
	//若余数为1则是奇数
	if (i % 2 == 1)
	{
		printf("输入的数字为奇数\n");
	}
	//若余数不为1,则是偶数
	else
	{
		printf("输入的数字为偶数\n");
	}
	return 0;
}
3、if else嵌套语句

语法形式:
        if(表达式)
                语句1
        else if(表达式)
                语句2
        else
                语句3
例如:输入一个整数,判断是正数还是负数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int i = 0;
	printf("请输入一个整数:\n");
	scanf("%d", &i);
	if (i > 0)
	{
		printf("输入的数字为正数\n");
	}
	else if (i < 0)
	{
		printf("输入的数字为负数\n");
	}
	else 
	{
		printf("输入的数字为0\n");
	}
	return 0;
}

语法形式:
        if (表达式)
        {
            if(表达式)
                语句1
            else
                语句2
        }
        else
            语句3
例如:输入一个整数,若是正整数在进行判断是奇数还是偶数,若不是正整数则判断其为负数。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int i = 0;
	printf("请输入一个整数:\n");
	scanf("%d", &i);
	if (i > 0)
	{
		if (i % 2 == 1)
		{
			printf("输入的数字为奇数\n");
		}
		else 
		{
			printf("输入的数字为偶数\n");
		}
	}
	else 
	{
		printf("输入的数字为负数\n");
	}
	return 0;
}

注意:1.默认在 if 和 else 语句中默认都只控制⼀条语句,若想控制多条语句要加花括号;
           2.如果有多个 if 和 else ,else 总是跟最接近的 if 匹配;

二、关系操作符

        C 语⾔⽤于⽐较的表达式,称为 “关系表达式”,⾥⾯使⽤的运算符就称为“关系运算符”。
主要关系运算符有:
       

小于运算符<a<b
小于等于运算符<=a<=b
大于运算符>a>b
大于等于运算符>=a>=b
相等运算符==a==b
不相等运算符!=a!=b

注意:1.关系表达式常用于:if或while结构;
           2.关系表达式通常返回1或0来表示真假(C语言中0表示假,非0表示真);
           3.==是相等运算符,=是赋值运算符,多个关系运算符不宜连用;

三、条件操作符

条件操作符又称作三目操作符,

语法形式:epx1?epx2:epx3
条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果exp1 为假, exp3 计算,计算的结果是整个表达式的结果。

例如:利用关系表达式实现找到两个数中较大的数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;	int b = 0;
	scanf("%d %d", &a, &b);
	int m = 0;
	//判断a是否大于b,若大于则将a的值赋给m并输出,否则将b的值赋给m并输出
	m = a > b ? a : b;
	printf("%d\n", m);
	return 0;
}

四、逻辑操作符:&& , || , ! 

逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有下⾯三个运算符。 
! :逻辑取反运算符(改变单个表达式的真假)
&& :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。 
|| :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。

例如:判断输入年份是否为闰年

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int year = 0;
	scanf("%d", &year);
	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
		printf("%d年是闰年\n", year);
	else
		printf("%d年不是闰年\n", year);
	return 0;
}

五、switch语句

switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。

语法形式:

        witch (expression) { 
                case value1: statement 
                case value2: statement 
                default: statement } 

上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值, 就执⾏ default 分⽀。
注意:switch 后的 expression 必须是整形表达式case 后的值,必须是整型常量表达式

if语句和switch语句的对⽐
例如:计算输入值除3后的余数
使用if语句
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a % 3 == 0)
	{
		printf("%d能被3整除,余数为0\n", a);
	}
	else if (a % 3 == 1)
	{
		printf("%d不能被3整除,余数为1\n", a);
	}
	else
		printf("%d不能被3整除,余数为2\n",a);
	return 0;
}
使用switch语句
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	switch (a%3)
	{
	case 0:
		printf("%d能被3整除,余数为0\n", a);
		break;
	case 1:
		printf("%d不能被3整除,余数为1\n", a);
		break;
	case 2:
		printf("%d不能被3整除,余数为2\n", a);
		break;
	default:
		break;
	}
	return 0;
}

注意:

  1. case 和后边的数字之间必须有空格;
  2. 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。如果某⼀个 case 语句的后边没有break 语句,代码会继续向下执⾏,有可能执⾏其他 case语句中的代码,直到遇到 break 语句或者 switch 语句结束。break 也不是每个 case 语句都得有,要具体实际情况合理使用。
  3. switch后面的表达式中的值无法匹配代码中的case语句时,要么不做处理,要么在switch语句加入default子句。(switch后边expression结果不是value时,就会执行default子句)
  4. 在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要顺序是满⾜实际需求的就可以。不过通常是把 default ⼦句放在最后处理的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

半颗星辰、

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

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

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

打赏作者

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

抵扣说明:

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

余额充值