C语言入门知识点(4)(超详细)

在这里插入图片描述
*

笔记里面有一些代码的首字母是大写的,自己写时候要用小写,这是OneNote编写时软件的问题。此笔记仅是我个人学习的笔记,接下来会持续更新,希望对初学者有所帮助,如果发现错误,望在评论区指正。

分支结构

if语句

if

形式:

  • if (表达式)
    语句
    解释:若表达式为真/表达式结果不为0,则语句执行,否则不执行
    例子:输入一个数,判断是否为奇数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 1)
		printf("该数字是奇数\n");
	return 0;
}

else

解释:成立的话为if,不成立的话则为else
例子:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 1)
		printf("该数字是奇数\n");
	else
		printf("该数字是偶数\n");

	return 0;
}

分支中包含多条语句

解释:if 和 else 默认只包含一条控制语句,如果要控制多条语句的话,要在 if/else 后加 {},意为一个代码块
例子:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 1)
	{
		printf("该数字是奇数\n");
		printf("(-1)^(%d) = -1", num);
	}
	else
		printf("该数字是偶数\n");

	return 0;
}

嵌套if

解释:在if else语句中,else可以与另一个if语句连用,构成多重判断。一般情况下,用{}包含新的 if else 语句;也可以用简便写法(如下)
例子:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int num = 0;
	printf("请输入年纪:");
	scanf("%d", &num);
	if (num < 18)
		printf("未成年");
	else
	{
		if (num < 25)
			printf("青年");
		else 
			printf("青壮年");
	}
	return 0;
}

简便方法(将新的if语句缩写在else里面):

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int num = 0;
	printf("请输入年纪:");
	scanf("%d", &num);
	if (num < 18)
		printf("未成年");
	else if (num < 25)
			printf("青年");
		 else 
			printf("青壮年");
	return 0;
}

悬空else问题

解释:如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。
例子:

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 3;
	if (a == 1)
		if (b = 3)
			printf("%d", b);
	else
		printf("%d", b);
	return 0;
	
}
//输出空行

实际上代码:

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 3;
	if (a == 1)
		if (b = 3)
			printf("%d", b);
		else
			printf("%d", b);
	return 0;
}

通过带上{},可以让代码更加简洁:

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 3;
	if (a == 1)
	{
	if (b = 3)
		printf("%d", b);
	else
		printf("%d", b);
	}
	return 0;
}

关系操作符

:大于运算符
< :小于运算符
= :大于等于运算符
<= :小于等于运算符
== :相等运算符
!= :不相等运算符
注意:多个关系运算符不宜连用
原因:例如,i<j<k,表达式会从左到右计算,此时得到(i<j)的结果为0或者是1,再由1和0与c作比较,达不到预期的效果,应该改为:“i<j && j<k”

条件操作符 (类似双分支)

条件操作符又叫三目操作符,需要接受三个操作数。
形式:exp1 ? exp2 :exp3
解释:如果exp1为真,计算exp2,结果返回exp2计算的结果;exp1为假,计算exp3,结果返回exp3计算的结果。

逻辑操作符

!:逻辑取反运算符
&&:逻辑与运算符,并且(全真为真)
|| :逻辑或运算符,或者(全假为假)
(非0表示真,0表示假)

逻辑取反运算符 !

使用:在语句前面加 !,表示语句为假。

逻辑与运算符 &&

使用:加在两事件中间,表示并且的关系

逻辑或运算符 ||

使用:加在两事件中间,表示或者的关系

短路

解释:C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。
如果根据左操作数的结果就能知道整个表达式的结果,就不再对右边的表达式求值。这种情况称为“短路”。

switch语句

形式:

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

解释:
switch (表达式){}
结果1:执行语句
结果2:执行语句
……
default(以上结果都没有):执行语句
注意:
1.case和后面的数字必须要有空格
2.每个case语句后面必须要有break语句,才能跳出switch语句

switch语句中的break和default

因为需要break才能跳出循环,所以可以调整break的位置
有时候没有计划中的结果,需要执行“输入错误”
例如:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
	int day = 0;
	scanf("%d", &day);
	switch (day) {
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日");
		break;
	case 6:
	case 7:
		printf("休息日");
		break;
	default:
		printf("输入错误");
		break;
	}
	return 0;
}

switch中case和default的顺序问题

case和default无顺序,通常是把default放到最后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值