栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言利用嵌套实现switch对if语句的简单替换(要点:利用switch判断输入数值的正负)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言利用嵌套实现switch对if语句的简单替换(要点:利用switch判断输入数值的正负)

题目如上↑

a>=0部分的替换挺简单,不多赘述,代码如下:

c=a%10;
switch(c)//c为上方a对10求整结果,即a的十位
				{
					case 0:
					case 1:
					case 2:
						m=1;//十位为0,1,2则m=1
						break;
					case 3:
						m=2;//十位为3则m=2
						break;
					case 4:
						m=3;//十位为4则m=3
						break;
					case 5:
						m=4;//十位为5则m=4
						break;
					default:
						m=5;//十位为6及以上则m=5
						break;
				}

 负数部分不用if难以区分出(由题可知若a为负数,则m恒为1)

我的思路(逆推)是(单就正负判断):

1.用switch区分正负;

2.将a对2取余(a%2)得出1和-1(需要a为奇数);

3.因此先判断a的奇偶性,若a为偶数则使其+1。

所以说判断a的正负的步骤如下:

1.判断a的奇偶性,若a为偶数则使其+1(变成奇数);

2.将a对2取余(a%2)得出1和-1;

3.通过用switch区分2.中得出的1和-1来判断a的正负。

代码实现:

switch(a%2)//判断a的奇偶性(用于对2取余后判断a的正负)
	{
		case 0:
			a+=1;//若a为偶数则+1
			break;
		case 1:
			break;//若a为奇数则不变
	}
b=a%2;//经过上述处理,a一定为奇数,使其对2求余只有两种结果:1或-1
switch(b)
	{
		case -1://若a%2==-1则a为负数,直接赋值m=1
			m=1;
			break;
		case 1://若a%2==1则a为正数,对a的范围进行进一步判断
			break;
	}

所有代码如下:

#include
#include

int main(void)
{
	int a=0,
		b=0,
		c=0,
		m=0;
	scanf("%d",&a);//输入a
	c=a/10;
	switch(a%2)//判断a的奇偶性(用于对2取余后判断a的正负)
	{
		case 0:
			a+=1;//若a为偶数则+1
			break;
		case 1:
			break;//若a为奇数则不变
	}
	b=a%2;//经过上述处理,a一定为奇数,使其对2求余只有两种结果:1或-1
	switch(b)
	{
		case -1://若a%2==-1则a为负数,直接赋值m=1
			m=1;
			break;
		case 1://若a%2==1则a为正数,对a的范围进行进一步判断
					switch(c)//c为上方a对10求整结果,即a的十位
				{
					case 0:
					case 1:
					case 2:
						m=1;//十位为0,1,2则m=1
						break;
					case 3:
						m=2;//十位为3则m=2
						break;
					case 4:
						m=3;//十位为4则m=3
						break;
					case 5:
						m=4;//十位为5则m=4
						break;
					default:
						m=5;//十位为6及以上则m=5
						break;
				}
			break;
	}
	printf("m=%dn",m);
	system("pause");
	return 0;
}

                                                                

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1009590.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号