分段函数求法(if和switch)

文章目录


题目描述:
计算函数值。如果x≥100或x<36,则输出y无定义的信息。
首先是整型变量的设置以及x的输入
在这里插入图片描述

int x,y
printf("请输入x:>");
scanf("%d",&x);

其次对输入的x进行判断
x≥100或x<36,或在c语言中用 “||”表示

if(x >= 100 || x < 36)
{
	printf("输入无效\n"):
	return ;
}

在这里插入图片描述

当我们输入的值在上述范围内时程序会直接跳出结束,我们可以用while循环来使程序一直运行。

while(!)
{
	printf("请输入x:>");
	scanf("%d",&x);
	if(x >= 100 || x < 36)
	{
		printf("输入无效,请重新输入\n"):
		continue;
	}
}

在这里插入图片描述

当输入无效时continue跳出,重新进入循环,重新输入重新判断。
当输入有效x后,根据x进行相关函数的计算;有两种方法可以实现计算(if语句和switch语句)
方法一
if语句
根据输入的x进行判断,再进入相应的语句中

		if (x >= 81 && x < 100)
		{
			y = x + 2;
		}
		if (x >= 64 && x < 81)
		{
			y = 2 * x + 3;
		}
		if (x >= 49 && x < 64)
		{
			y = 2 * x + 4;
		}
		if (x >= 36 && x < 49)
		{
			y = 4 * x + 5;
		}

根据输入的x输出对应的y值
在这里插入图片描述

以下是运行过程的整个代码

#include<stdio.h>
int main()
{
	while (1)
	{
		int x, y;
		printf("请输入x:>");
		scanf("%d", &x);
		if (x >= 100 || x < 36)
		{
			printf("输入无效...\n");
			continue;
		}
		else
		{
			if (x >= 81 && x < 100)
			{
				y = x + 2;
			}
			if (x >= 64 && x < 81)
			{
				y = 2 * x + 3;
			}
			if (x >= 49 && x < 64)
			{
				y = 2 * x + 4;
			}
			if (x >= 36 && x < 49)
			{
				y = 4 * x + 5;
			}
		}
		printf("y=%d\n", y);
		break;
	}
	return 0;
}

不难发现用if分支实现求解过程很容易理解,但是连续使用if语句是整个代码看起来过于复杂,因此我们可以使用switch语句来简化上述过程。
方法二
switch语句
前面部分跟上述一样不同的是else语句后面,但是我们应如何得到case语句中的整形常量表达式

int t = (x >= 36) + (x >= 49) + (x >= 64) + (x >= 81);

当输入的x与判断条件匹配时,得到1,反之为0;
当81≤x<100时,t=1;
当64≤x<81时,t=2;
当49≤x<64时,t=3;
当36≤x<49时,t=4;
这种判断可以通过t的值得出case的整形常量表达式。
代码如下:

		int t = (x >= 36) + (x >= 49) + (x >= 64) + (x >= 81);
		switch (t)
		{
		case 1:
			y = x + 2;
			break;
		case 2:
			y = 2 * x + 3;
			break;
		case 3:
			y = 2 * x + 4;
			break;
		case 4:
			y = 4 * x + 5;
			break;

运用switch解决了if语句的复杂
全部代码:

   #include<stdio.h>
int main()
{
	while (1)
	{
		int x, y;
		printf("请输入x:>");
		scanf("%d", &x);
		if (x >= 100 || x < 36)
		{
			printf("输入无效...\n");
			continue;
		}
		else
		{
			int t = (x >= 36) + (x >= 49) + (x >= 64) + (x >= 81);
		switch (t)
		{
			case 1:
				y = x + 2;
				break;
			case 2:
				y = 2 * x + 3;
				break;
			case 3:
				y = 2 * x + 4;
				break;
			case 4:
				y = 4 * x + 5;
				break;
		}
		printf("y=%d\n", y);
		break;
	}
	return 0;
}

运行结果在这里插入图片描述
总结:通过不同种方法巧妙化简代码的复杂性以及重复性,但是并不是所有的switch语句比if简单,根据实际情况再选择使用,做到简化代码,举一反三,为以后的代码打下坚实基础。这种方法也可用于计算个人所得税……

在这里插入图片描述

  • 14
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小 王

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

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

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

打赏作者

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

抵扣说明:

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

余额充值