c中分支结构程序

文章详细介绍了C语言中if语句的使用,包括基本的条件判断、奇偶数判断、非零判断以及相等运算符的应用。同时,还讲解了else语句的作用,如何根据条件执行不同的处理。此外,文中提到了关系运算符、嵌套if语句、条件运算符以及switch语句的使用,展示了如何通过这些结构来实现更复杂的逻辑判断,如计算最大值、判断季节和整数除法的余数。最后,强调了在适当情况下switch语句相对于if语句的优势。
摘要由CSDN通过智能技术生成

if语句

if语句·其一

其实每天我们都通过自己的判断来决定自己的行动。例如:今天要下雨了,所以我带了伞。下面我们就通过程序来判断,如果输入的整数不能被5整除,就显示出相应的信息。
代码如下:

#include<stdio.h>

int main()
{
	int n = 0;
	printf("请输入一个整数:");
	scanf("%d", &n);

	if (n%5==0)
	{
		puts("输入的整数可以被5整除。");
	}
	return 0;
}

if(表达式)语句

这样的语句称为if语句。
if语句会让程序执行如下处理
判断表达式的值,如果结果不为0,则执行相应的语句。
括号内对条件进行判断的表达式称为控制表达式。
而当输入的整数不能被5整除的时候,后续语句不会被执行,屏幕上不会显示任何的内容。

奇数的判定

通过判断输入的数能否被2整除,就可以确定输入的数是否是奇数。代码如下:、

#include<stdio.h>

int main()
{
	int n = 0;
	printf("请输入一个整数:");

	scanf("%d", &n);

	if (n%2!=0)
	{
		printf("%d是一个奇数", n);
	}
	return 0;
}

如果输入的是一个偶数那么程序不会显示任何的内容。

if语句·其2

在判断输入的数能否被5整除的时候,当输入的值不能被5整除的时候,不显示任何的内容。这样会让使用者不放心,所以代码可以改为下面的形式。

#include<stdio.h>

int main()
{
	int n = 0;
	printf("请输入一个整数:");
	scanf("%d", &n);

	if (n % 5 == 0)
	{
		puts("输入的整数可以被5整除。");
	}
	else
	{
		puts("输入的整数不能被5整除。");
	}
	return 0;
}

本程序中使用的是下列的形式:
if(表达式) 语句;else 语句;
else是”否则“的意思。

奇数·偶数判断

那么如何对一个输入的数是奇数还是偶数进行判断并输出呢,看下面的代码:

#include<stdio.h>

int main()
{
	int n = 0;
	printf("请输入一个整数:");

	scanf("%d", &n);

	if (n % 2 != 0)
	{
		printf("%d是一个奇数", n);
	}
	else
	{
		printf("%d是一个偶数", n);
	}
	return 0;
}

总结:
如果只有当某条件成立的时候才进行处理,则使用不用加else的if语句;如果是根据某条件的成立与否进行不同的处理,则使用带有else的if语句。

非0判断

判断输入的值是否为0;
代码如下:

#include<stdio.h>

int main()
{
	int n = 0;

	printf("请输入一个整数:");
	scanf("%d", &n);

	if (n)
	{
		puts("该整数不是0。");
	}
	else
	{
		puts("该整数是0。");
	}
		
	return 0;
}

if语句根据控制表达式的值是否为0来控制程序的流程。

相等运算符

输入两个数判断是否相等。
代码如下:

#include<stdio.h>

int main()
{
	int n = 0;
	int m = 0;
	printf("请输入两个整数:");
	scanf("%d %d", &n,&m);

	if (n == m)
	{
		puts("它们相等。");
	}
	else
	{
		puts("它们不相等。");
	}
	return 0;
}

==运算符,会对左右两侧的操作数进行比较,如果相等着为1,不相等则为0。

余数的判断

判断输入的整数的个位数是否为5,并显示相应信息的程序。
代码如下:

#include<stdio.h>

int main()
{
	int n = 0;
	printf("请输入一个整数:");
	scanf("%d", &n);

	if ((n % 10) == 5)
	{
		puts("该整数的个位数是5。");
	}
	else
	{
		puts("该整数的个位数不是5。");
	}
	return 0;
}

关系运算符

上面我们说到了两分支的程序流程,现在我们看以下三分支的情况。输入一个整数,判断该整数的符号。
代码如下:

#include<stdio.h>

int main()
{
	int n = 0;
	printf("请输入一个整数:");
	scanf("%d", &n);

	if (n==0)
	{
		puts("该整数为0");
	}
	else if (n > 0)
	{
		puts("该整数为整数");
	}
	else
	{
		puts("该整数为负数");
	}
	return 0;
}

比较两个数大小的运算符称为关系运算符。如下所示:
image.png
大家需要注意的是,将<=运算符和>=运算符中的等号放在左侧(=<和=>),或者在<与=之间有空格都是不对的。

嵌套的if语句

image.png
image.png

#include<stdio.h>

int main()
{
	int n = 0;
	printf("请输入一个整数:");
	scanf("%d", &n);
	
	if (n>0)
	{
		if (n % 2 == 0)
		{
			puts("该数为偶数。");
		}
		else
		{
			puts("该数为奇数。");
		}
	}
	else
	{
		puts("该数不是正数。");
	}
	return 0;
}

判断

表达式(极少部分情况除外)都有值,程序执行的时会对表达式的值进行检测,这就是判断。

计算较大值

输入两个整数,显示出其中较大的值。代码如下:

#include<stdio.h>

int main()
{
	int n = 0;
	int m = 0;

	puts("请输入两个整数:");
	scanf("%d %d", &n, &m);

	if (n>m)
	{
		printf("%d是较大的数。",n);
	}
	else
	{
		printf("%d是较大的数。", m);
	}
	return 0;
}

程序中的printf函数被调用了两次。
下面是我改造的程序,把较大的值存入变量中,然后进行输出。
代码如下:

#include<stdio.h>

int main()
{
	int n = 0;
	int m = 0;
	int max = 0;

	puts("请输入两个整数:");
	scanf("%d %d", &n, &m);

	if (n>m)
	{
		max = n;
	}
	else
	{
		max = m;
	}

	printf("较大的数是%d", max);
	return 0;
}

计算三个数的最大值

这次我们输入三个整数,并显示其中的最大值。
代码如下:

#include<stdio.h>

int main()
{
	int n = 0;
	int m = 0;
	int k = 0;
	int max = 0;

	printf("请输入三个整数:");
	scanf("%d %d %d", &n, &m, &k);

	max = n;
	
	if (m > max)
	{
		max = m;
	}
	if(k>m)
	{
		max = k;
	}

	printf("较大的数是%d", max);
	return 0;
}

image.png

条件运算符

计算两个整数中的较大值。
代码如下:

#include<stdio.h>

int main()
{
	int n = 0;
	int m = 0;
	int max = 0;

	puts("请输入两个整数:");
	scanf("%d %d", &n, &m);

	max = (n > m) ? n : m;

	printf("较大的数是%d", max);
	return 0;
}

上述程序中使用了条件运算符,该运算符是需要三个操作数的三目操作符。
只有条件运算符属于三目运算符,其他的运算符都是单目或者双目运算符。
image.png

差值计算

使用条件运算符计算输入的两个整数差值,代码如下:

#include<stdio.h>

int main()
{
	int n = 0;
	int m = 0;

	puts("请输入两个整数。");
	scanf("%d %d", &n, &m);

	printf("较大的数是%d", (n > m) ? n - m : m - n);
	return 0;
}
  • 如果n>m,则判断表达式n-m所得到的值;
  • 否则为判断表达式m-n所得到的值。

也就是说最终的结果为大值减去小值。

复合语句

计算输入的两个整数中的较大值和较小值的程序代码如下:

#include<stdio.h>

int main()
{
	int n = 0;
	int m = 0;
	int max = 0;
	int min = 0;

	printf("请输入两个整数:\n");
	scanf("%d %d", &n, &m);

	if (n > m)
	{
		max = n;
		min = m;
	}
	else
	{
		max = m;
		min = n;
	}

	printf("较大的数是%d", max);
	printf("较小的数是%d", min);

	return 0;
}

本程序中的if语句,当n大于m的时候,执行if里面的语句
{max=n; min=m;}
否则执行else里面的语句
{max=m; min=n;}
像上面的语句称为复合语句,也叫程序块。

逻辑运算符

显示输入的月份所处的季节,代码如下:

#include<stdio.h>

int main()
{
	int month = 0;

	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 == 1||month==2)
	{
		printf("%d是冬季。\n", month);
	}
	else
	{
		printf("%d月不存在!!!\a\n", month);
	}
	return 0;
}

这里使用了&&运算符称为逻辑与运算符(就是两个条件都成立的情况下返回的值才不等于0)。
使用例||运算符称为逻辑或(就是只要有一个条件成立就返回的值不等于0)。
image.png

switch语句

switch语句与break语句

显示输入的整数除以3所得到的余数。代码如下:

#include<stdio.h>

int main()
{
	int n = 0;

	printf("请输入一个整数:");
	scanf("%d", &n);

	if (n % 3 == 0)
	{
		puts("该整数能被3整除。");
	}
	else if (n % 3 == 1)
	{
		puts("该整数除以3的余数是1");
	}
	else
	{
		puts("该整数除以3的余数是2");
	}
	return 0;
}

本程序中使用了两次计算n除以3的余数的表达式n%3,多次输入同一个表达式,容易造成输入错误。
下面是使用switch语句处理后的代码:

#include<stdio.h>

int main()
{
	int n = 0;

	printf("请输入一个整数:");
	scanf("%d", &n);

	switch (n%3)
	{
	case 0:
		puts("该整数能被3整除。");
		break;
	case 1:
		puts("该整数除以3的余数是1");
		break;
	case 2:
		puts("该整数除以3的余数是2");
		break;
	}
	return 0;
}

如果n%3的值为1,则程序会转向"case 1:",如下图所示:
image.png
像”case 1:“这样用来表示程序跳转的标识称为标签。
标签的值必须为常量,不可以为变量。不允许多个标签出现同为一个值。

复杂的switch语句

#include<stdio.h>

int main()
{
	int s = 0;

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

	switch (s)
	{
	case 1:
		puts("A");
		puts("B");
		break;
	case 2:
		puts("C");
	case 5:
		puts("D");
		break;
	case 6:
	case 7:
		puts("E");
		break;
	default:
		puts("F");
		break;
	}
	return 0;
}

当控制表达式的判断结果与任何一个case都不一致的时候,程序就会跳转到"default:"继续执行。
本程序的流程图;
image.png
如图所示,在没有break语句的时候,程序会落到下一条语句上。

switch语句和if语句

image.png
image.png
注意:
通过单一表达式来控制程序流程分支的时候,使用switch语句的效果通常要比使用if语句更好。

总结

image.png
image.png

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

君落华

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

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

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

打赏作者

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

抵扣说明:

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

余额充值