C语言学习过程总结(6)——if语句

if语句和语句中的各种符

在C语言中有循序结构、选择结构、循环结构三大结构,这三大结构可以包含日常所见的所有事情,要不说编程语言是生活的高度抽象呢

我们可以使用if、switch实现分支结构、使用for、whlie、do while实现循环结构

1.if语句

if的语法形式如下

if(表达式)

     语句

表达式成立,语句执行,不成立语句则不执行

也就是表达式结果非零(真)执行,为零(假)则不执行

例:输入一个整数,判断是否为奇数 

//输入一个整数,判断其是否为奇数
#include<stdio.h>
int main() {
	int a = 0;
	scanf("%d", &a);
	if (a % 2 == 1) {
		printf("%d为奇数", a);
	}
	return 0;
}

流程图:

else

一个数不是奇数就是偶数,判断是奇数还是偶数就可以用if......else......

语法形式:

if(表达式)

     语句1

else

      语句2


#include<stdio.h>
int main() {
	int a = 0;
	scanf("%d", &a);
	if (a % 2 == 1) {
		printf("%d为奇数\n", a);
	}
	else
		printf("%d为偶数\n", a);
	return 0;
}

 注意:if和else都只默认控制一条语句

if(age >= 18)

printf("成年了\n");

printf("可以谈恋爱了\n");

上面这个if中,无论age是否大于等于18,都会打印“可以谈恋爱了”

如果需要if控制两条语句,就需要用{} 

if(age >= 18){

printf("成年了\n");

printf("可以谈恋爱了\n");

}

这样的话两条语句就都被if所控制

else后面也是如此

嵌套if 

if else语句中,else可以和另一个if语句连用,构成多重判断

 比如整数就分为了正负数和0,这时候判断就需要用多重判断

#include<stdio.h>
int main() {
	int a = 0;
	scanf("%d", &a);
	if (a == 0)
		printf("输入的数字是零");
	else if (a > 0)
		printf("输入的数字是正数");
	else
		printf("输入是数字是负数");
	return 0;
}

嵌套if语句可以实现更多复杂逻辑的判断 

 例:

输⼊⼀个⼈的年龄

如果年龄<18岁,打印"少年"

如果年龄在18岁⾄44岁打印"⻘年"

如果年龄在45岁⾄59岁打印"中⽼年"

如果年龄在60岁⾄89岁打印"⽼年"

如果90岁以上打印"⽼寿星"

#include<stdio.h>
int main() {
	int age = 0;
	while (1) {
		scanf("%d", &age);
		if (age < 18)
			printf("少年\n");
		else if (age < 44)
			printf("青年\n");
		else if (age < 59)
			printf("中老年\n");
		else if (age < 89)
			printf("老年\n");
		else
			printf("老寿星\n");
	}
	return 0;
}

运用的while实现了多次输入,这个循环后续也会讲到的

当出现多个if和else的时候,else总是跟最近的if匹配

例:

#include<stdio.h>
int main() {
	int a = 0;
	int b = 0;
	if (a == 1)
		if (b == 2)
			printf("123\n");
	else
			printf("321\n");
	return 0;
}

结果是什么呢?

是321?

结果是没有结果,什么都不好输出,因为else跟最近的,而不是对齐的if,在第一个if(a == 1)的判断时,结果为假,所以后面的语句不会执行,自然也没有结果输出

在代码中加入大括号可以很好的帮助我们去理清逻辑关系,要知道代码并不是越短越好是越能懂越好。 

2.关系操作符

主要用于比较大小关系

>

<

>=

<=

==  等于

!=   不等于 

上诉关系如果成立,则表达式返回1(真),不成立则返回0(假)

*注意:相等运算符==和赋值运算符=是不一样的运算符 

为了避免这种错误可以吧变量写在等号右边

if(3 == x)

这时候用等号就会报错 

*多个运算符连用语法不错但通常达不到预想结果

如:i < j < k

因为运算符是从左往右运行,所以计算机的认为是(i < j)< k

先将i与j比较,得到返回值0或者1,再将0或1与k比较

为了到达我们所预想的

i < j && j < k

如年龄在18到30之间

18 <= age && age <= 30 

3.条件操作符

三目操作符

a1 ?a2 :a3

逻辑为:如果a1为真,a2计算;如果a1为假,a3计算

常用例子两数比大小

#include<stdio.h>
int main() {
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int max = a > b ? a : b;
	printf("%d\n", max);
	return 0;
}

 4.逻辑操作符:&&   ||  !

!:逻辑取反,即不...

&& :与/并且      全真则真,一假即假

|| : 或/或者        全假则假,一真即真

例:判断闰年

1.能被4整除并且不能被100整除

2.能被400整除 

#include<stdio.h>
int main() {
	//法1
    int year = 0;
	scanf("%d", &year);
	if (year % 4 == 0 && year % 100 != 0)
		printf("%d是闰年", year);
		if (year % 400 == 0)
			printf("%d是闰年", year);
	return 0;
	//法2
	int year = 0;
	scanf("%d", &year);
	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
		printf("%d是闰年", year);
	
	return 0;

}

短路

这可不是电路短路哦,博主的理解是最短路径

C语言对于逻辑运算符的执行,总是先对左侧的表达式求值,再对右边的表达式求值

如果左边的满足逻辑运算符条件,则右边的不在计算,这就是短路

如:

if(month >= 3 && month <= 5)

当month大于等于3不成立时,左边表达式结果为0 ,即整个表达式结果为0

对于&&,左为0则右不执行,整体为0 

if(month == 12 || month == 1 || month == 2) 

如果month等于12,最左边表达式结果为1,整个表达式结果为1

对于||,左为1则右不执行,整体为1

 说白了,就是两个逻辑运算符性质的一个体现

#include<stdio.h>
int main() {
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	//i = ++a && ++b && d++;
	//i = a++ && ++b && d++;
	i = ++a || ++b ||d++;
	printf("%d\n%d\n%d\n%d\n", a, b, c, d);

	return 0;
}

结束语

今天除了讲if语句外,主要是讲解了一下语句中的各类操作符,这对于我们后续学习switch、

for...有很大的帮助

希望大家可以喜欢! 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值