明解C语言入门篇第三章 3-1if语句

本文介绍了C语言中的条件控制结构,包括if、else、if-else语句,以及相等运算符(==,!=)、关系运算符。同时,讲解了逻辑运算符(&&,||)的概念和短路求值特性,并通过实例展示了如何利用这些结构进行整数的奇偶性、约数关系、符号判断等逻辑判断。此外,还提到了条件运算符(三目运算符)的使用及其在求解最大值、最小值等问题上的应用。
摘要由CSDN通过智能技术生成

知识点总结:

1.if语句

定义:判断表达式的值,若结果不为0,则执行相应的语句

格式:if() {}  括号内对条件进行判断的表达式称为控制表达式

2.else语句:当表达式为0时执行else语句

只有当某条件成立时才进行处理则只使用if语句,若根据条件成立与否进行不同的处理,则使用if-else语句

3.相等运算符:这两种运算符统称为相等运算符

1.    ==   运算符

对左右两侧的操作数进行比较,若相等则结果为1,若不相等则结果为0(结果是int型整数)

2.    !=   运算符

如果a和b的值不相等则为1,相等则为0(结果的类型是int)

4.关系运算符

 5.嵌套的if语句:

情况1.if()

else   if()

           else

情况2:

6.条件运算符

1)只有条件运算符属于三目运算符,其他的运算符都是单目或三目运算符

2)格式:a ? b : c

 7.使用条件运算符求三个数最大值三种情况:见题型19

1.max 1 = (a > b ? a : b) > c ? (a > b ? a : b) : c

先对a和b进行比较 再对c进行比较 / 若a或b大于c, 则第二部分取值为a或b

若a和b均小于c,则直接跳至最后1个表达式,c为最小值

2.max 2 = a > b ? (a > c ? a : c) : (b > c ? b : c)

先对a和b进行比较,若a大则a与c比较取最大值,若b大则b与c比较取最大值

3.max 3 = (a > b ? a : b) ? (a > c ? a : c) : (b > c ? b : c)

先对a和b比较取最大值,若a大则与c比较取最大值,若b大则与c比较取最大值

8.复合语句

1.在{ }大括号内并排书写的语句称为复合语句或程序块

2.在结构上被看作是单一的语句,可包含语句,声明(声明要放在最开始的位置)

见题型20

以下均为复合语句

9.逻辑运算符

 &&逻辑与运算符

a&&b :若a和b的值都不为0,则结果为1,否则结果为0(结果的类型为int)-可理解为a并且b。

||逻辑或运算符

a||b :若a和b都为0,则表达式的结果为0,否则结果为1(结果的类型为int )-可理解为a或者b

 

短路求值:在仅根据左操作数的判断结果就可知逻辑表达式的判断结果的情况下,不会对右操作数进行判断,称为短路求值

&&运算符在左操作数判断结果为0时不会对右操作数进行判断

||运算符在左操作数的判断结果不为0时不会对右操作数进行判断

分类题型

1.判断能否被5整除:

代码3-1:

no%5- no不能被5整除时余数不为0,则执行if语句

int main()
{
	int no; 
	printf("请输入1个整数: "), scanf("%d", &no);
	
	if (no % 5)
		puts("输入的数不能被5整除");
	return 0;
}

2.奇数的判定:

通过判断输入的整数能否被2整除,可确认该数是否为奇数

代码3-2

若输入奇数,则不能被2整除,余数不为0,执行if语句。

int main()
{
	int no;
	printf("请输入1个整数"), scanf("%d", &no);
	if (no % 2)
		puts("输入的整数是奇数");

	return 0;
}

3.奇偶判断

通过判断输入整数能否被2整除,不能整除则为奇数,能整除则为偶数

代码3-4

不能整除则执行if语句为奇数,能整除余数为0执行else语句为偶数

int main()
{
	int no;
	printf("请输入1个整数"), scanf("%d", &no);
	if (no % 2)
		puts("该整数是奇数");
	else
		puts("该整数是偶数");
	return 0;
}

4.判断两个数的约数关系

A除以B余数是0,则A是B的倍数,B是A的约数。A能被B整除,B能整除A

练习3-1

A不能整除B时,余数不为0,则执行if语句。否则执行else确定约数关系

int  main()   //A除以B余数是0,则A是B的倍数,B是A的约数。A能被B整除,B能整除A
{
	int A, B;
	printf("整数A :"), scanf("%d", &A);
	printf("整数B :"), scanf("%d", &B);
	if (A % B)
		puts("A不是B的约数");  //余数不为0时,则A不是B的约数
	else
		puts("A是B的约数");
	return 0;
}

5.判断输入的整数值是否为0

控制表达式直接为需要输入的变量

代码3-5

若整数为0,则执行else,若不为0,则执行if

int main()
{
	int num;
	printf("请输入1个整数"), scanf("%d", &num);
	if (num)
		puts("该整数不是0");
	else
		puts("该整数是0");
		return 0;
}

6.判断两个整数是否相等

==运算符:

代码3-6

int main()//相等运算符情况:
{
	int n1, n2;
	//printf("请输入两个整数\n整数1:\n整数2:"), scanf("%d\n%d", &n1,& n2);//怎样把结果写进一行?
	puts("请输入两个整数:");
	printf("整数1:"), scanf("%d", &n1);
	printf("整数2:"), scanf("%d", &n2);
	if (n1 == n2)
		puts("它们相等");
	else
		puts("它们不相等");
		return 0;
}

=!运算符:

代码3-7

//!=   两数结果相等则控制表达式结果为0,不相等则控制表达式结果为1
int main()
{
	int n1, n2;
	
	puts("请输入两个整数:");
	printf("整数1:"), scanf("%d", &n1);
	printf("整数2:"), scanf("%d", &n2);
	if (n1 != n2)
		puts("它们不相等");
	else
		puts("它们相等");
	return 0;
}

7.余数的判断-判断所输入的整数的个位数是否为5

判断输入整数除以10的余数是否等于5

代码3-8

%的优先级比运算符==高,在if语句中可以不加(num%10)两边的括号

//%的优先级比运算符==高
int main()
{
	int num;
	printf("请输入1个整数"), scanf("%d", &num);
	if ((num % 10) == 5)
		puts("该整数的个位数是5");
	else
		puts("该整数的个位数不是5");
	return 0;
}

8.输入1个整数,判断该整数的符号

 代码3-9

int main() // 3-9
{
int no;
printf("请输入1个整数: ");
scanf("%d", &no);

if (no > 0)
puts("该整数为正数");
else if (no == 0)
puts("该整数为0");
else
puts("该整数为负数");
}

9.显示输入整数的绝对值

使用if else语句划分正负数,再根据结果分类计算

练习3-3

int main()
{
int num;

printf("请输入1个整数" );
scanf("%d", &num );

if (num >= 0)
printf("绝对值是%d", num );
else
printf("绝对值是%d", -num);

return  0;
}*/

10.比较两个数的关系(大于,小于,相等)

使用嵌套if语句分类输出即可,在else语句下嵌套if语句

练习3-4 

int main()
{
int A, B ;
puts("请输入两个整数\n" );

printf("整数A:"),scanf("%d", &A);
printf("整数B:"),scanf("%d", &B );

if (A > B)
puts("A大于B");
else if (A == B)
puts("A等于B");
     else
     puts("A小于B");

return 0 ;
}

11.若输入整数为正,则判断该数字奇偶性

使用嵌套if语句分类输出,在if语句下再嵌套if语句

代码3-10

int main()
{
int no;
printf("请输入1个整数"), scanf("%d", &no);

if (no > 0){
  if (no % 2)
  puts("该整数为奇数");
else
  puts("该整数为偶数");
}
else
puts("您输入的不是正数\a\n");
return 0;
}

12.输入两个整数,计算较大值

代码3-11

方法1:使用关系运算符,在if语句中两种情况分别调用两次printf函数

int main()
{
	int n1, n2;
	puts("请输入两个整数");
	printf("整数1:"), scanf("%d", &n1);
	printf("整数2:"), scanf("%d", &n2);
	if (n1 > n2)
		printf("较大的数是%d\n",n1);
	else
		printf("较大的数是%d\n",n2);
	return 0;
}

方法2:将最大值存入1个变量再进行输出

//3-12,在比较大小时,设定变量,将较大的值存入变量,不用在if函数里面打印两次,打印一次即可
int main()
{
	int n1, n2,max;
	
puts("请输入两个整数");
	printf("整数1:"), scanf("%d", &n1);
	printf("整数2:"), scanf("%d", &n2);
	
if (n1 > n2)max = n1; else max = n2;
	printf("较大的数是%d\n", max);
	return 0;
}

13.计算三个数最大值(输入三个整数)

代码3-13

先将三个数中任意一个赋值给1个新的变量,再用该变量分别和另外两个数作比较

求最小值步骤相反(代码中已给出示例)

int main()
{
	int n1, n2, n3, max;
	puts("请输入三个整数");
	printf("整数1:"), scanf("%d", &n1);
	printf("整数2:"), scanf("%d", &n2);
	printf("整数3:"), scanf("%d", &n3);

	//注意:将n1赋值给max,再与n2,n3进行比较
	
	max = n1;
	/*if (max> n2) max = n2; //求最小值写法
	if (max > n3) max = n3;*/

	if ( n2 > max ) max = n2; //求最大值写法
	if ( n3 > max) max = n3;
	printf("最大值是%d\n", max);
	return 0;
}

14.条件运算符计算两个整数中的较大值

代码3-14

int main()
{
	int n1, n2,max;
	puts("请输入两个整数");
	printf("整数1:"), scanf("%d", &n1);
	printf("整数2:"), scanf("%d", &n2);
	max=(n1 > n2) ? n1 : n2;
	printf("较大的数是%d\n", max);
}

15.使用条件运算符计算两个整数的差值并显示

1)差值是大的数减小的数的结果

2)在表达式1进行两数大小的比较,分别再根据大小求差

代码3-15

int main()
{
	int n1, n2;
	puts("请输入两个整数");
	printf("整数1:"), scanf("%d", &n1);
	printf("整数2:"), scanf("%d", &n2);
	printf("它们的差是%d", (n1 > n2) ? n1 - n2 : n2 - n1);
	return 0;
}

16.计算三个整数中的最小值

练习3-6

int main()
{
	int n1, n2, n3, max;
	puts("请输入三个整数");
	printf("整数1:"), scanf("%d", &n1);
	printf("整数2:"), scanf("%d", &n2);
	printf("整数3:"), scanf("%d", &n3);
	//利用变量作中间值的写法
	max = n1;
	if (max > n2) max = n2;
	if (max > n3) max = n3;
	printf("三个数中的最小值是%d", max);

	//利用条件运算符的写法
	//printf("三个数中的最小值是%d",(n1>n2)?n2:n1)                        //要搞清楚
//
//	return 0;
//}

17.计算4个整数中的最大值

练习3-7

int main()
	{
	int n1, n2, n3, n4,max;
		printf("请输入四个整数;"),scanf("%d %d %d %d",&n1,&n2,&n3,&n4);
		max = n1;
		if (n2 > max) max = n2;
		if (n3 > max)max = n3;
		if (n4 > max)max = n4; 
		printf("四个整数中的最大值是%d", max);
		return 0;
	}

18.使用if语句求两个整数差值

//printf("它们的差是%d", b - a,a - b); //%d后对应两个实参时,会执行第一个实参

练习3-8

int main()
{
	int a, b,min ;
	printf("请输入两个整数:"), scanf("%d%d", &a, &b);
	if (a > b) min=a - b;
	min  max= b - a;
	
	printf("它们的差是%d", max);
	//printf("它们的差是%d",  b - a,a - b);   //%d后对应两个实参时,会执行第一个实参
	return 0;
}*/

19.使用条件运算符求3个整数中的最小值

练习3-9

int main()
{
	int a, b, c,min;
	printf("请输入3个整数"), scanf("%d%d%d", &a, &b, &c);
	min = a < b ? (a < c ? a : c) : (b < c ? b : c);
	
	printf("三个整数中的最小值是%d", min);
	return 0;
}

20.计算并显示输入两个整数的较大数字和较小数字(复合语句)

代码3-16

int main()
{
	int n1, n2, max, min;
	printf("请输入两个整数"), scanf("%d %d", &n1, &n2);
	//方法1
	if (n1 > n2)printf("较大的数是%d\n较小的数是%d", n1, n2);
	else printf("较大的数是%d\n较小的数是%d", n2, n1);
	//方法2:复合语句(程序块)
	
	
	if (n1 > n2) {
		max = n1;
	    min = n2;}
	else	{
		max = n2;
	    min = n1;
		}
		printf("较大的数是%d,较小的数是%d", max, min);
		//方法3:条件运算符实现
		max = (n1 > n2) ? n1 : n2;
		min = (n1 <n2) ? n1 : n2;
		printf("较大的数是%d,较小的数是%d",max,min);
	return 0;
}

题型21:显示所输入的月份所处的季节

代码3-17

int main()
{
	int month;
	printf("请输入月份"), scanf("%d", &month);
	if (month >= 3 && month <= 5)     //与运算符
		printf("%d月是春天\n", month);
	else if (month >= 6 && month <= 8)
		printf("%d月是夏天\n", month);
	else if (month >= 9 && month <= 11)
		printf("%d月是秋天\n", month);
	else if (month == 12 || month == 2 || month == 1) //或运算符
		printf("%d月是冬天\n", month);
	else
		printf("%d月不存在!!!\n", month);
	return 0;
} 

题型22:比较三个整数的相等情况

练习3-10

int main()
{
	int A, B, C;
	printf("请输入三个整数") , scanf("%d%d%d", &A, &B, &C);

	/*if (A == B == C)puts("三个值都相等"); */ //使用双目运算符判断是否可行  ***
	if (A == B && B == C)puts("三个值都相等");
	else if (A == B || B == C || A == C)puts("有两个值相等");
	else puts("三个值各不相同");

	return 0;
} 

题型23:计算两个数差值范围

练习3-11

 本题给出了条件运算符和逻辑或运算符的两种写法

int main()
{
	int A, B, value;
	printf("请输入2个整数"), scanf("%d %d", &A, &B);
	
//条件运算符写法
	value = (A > B) ? A - B : B - A;
	printf("它们的差是%d\n", value);
	if (value <= 10)puts("它们的差小于等于10");
	else puts("它们的差大于等于11");
	
//逻辑或运算符写法
	if ((A >= B && A - B <= 10) || (B >= A && B - A <= 10))
		puts("它们的差小于等于10");
	else
		puts("它们的差大于等于11");
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值