600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C语言利用嵌套实现switch对if语句的简单替换(要点:利用switch判断输入数值的正负)

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

时间:2019-08-20 16:57:14

相关推荐

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=1break;case 3:m=2;//十位为3则m=2break;case 4:m=3;//十位为4则m=3break;case 5:m=4;//十位为5则m=4break;default:m=5;//十位为6及以上则m=5break;}

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

所有代码如下:

#include<stdio.h>#include<stdlib.h>int main(void){int a=0,b=0,c=0,m=0;scanf("%d",&a);//输入ac=a/10;switch(a%2)//判断a的奇偶性(用于对2取余后判断a的正负){case 0:a+=1;//若a为偶数则+1break;case 1:break;//若a为奇数则不变}b=a%2;//经过上述处理,a一定为奇数,使其对2求余只有两种结果:1或-1switch(b){case -1://若a%2==-1则a为负数,直接赋值m=1m=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=1break;case 3:m=2;//十位为3则m=2break;case 4:m=3;//十位为4则m=3break;case 5:m=4;//十位为5则m=4break;default:m=5;//十位为6及以上则m=5break;}break;}printf("m=%d\n",m);system("pause");return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。