多功能强光头灯:输入一个不多于5位数的正整数,求它的位数和逆序数。

来源:百度文库 编辑:中科新闻网 时间:2024/05/03 11:22:05
用if和switch来实现。

代码如下:
#include<stdio.h>
main()
{
long i,a,b,c,d,e,m;
while(scanf("%d",&i)==1)
{
if((i<=0)||(i>99999))
printf("error\n");
else
{
a=i/10000; /*万位*/
b=(i%10000)/1000; /*千位*/
c=(i%1000)/100; /*百位*/
d=(i%100)/10; /*十位*/
e=i%10; /*个位*/
if(a)
m=5;
else if(b)
m=4;
else if(c)
m=3;
else if(d)
m=2;
else
m=1;
printf("%d wei shu\n",m);
printf("wan wei shi %ld\nqian wei shi %ld\nbai wei shi %ld\nshi wei shi %ld\nge wei shi %ld\n",a,b,c,d,e);
}
switch(m)
{
case 5: printf("%ld%ld%ld%ld%ld",e,d,c,b,a);break;
case 4: printf("%ld%ld%ld%ld",e,d,c,b);break;
case 3: printf("%ld%ld%ld",e,d,c);break;
case 2: printf("%ld%ld",e,d);break;
case 1: printf("%ld",e);

}
}
return 0;
}

main()
{
long int num;
int indiv,ten,hundred,thousand,ten_thousand,place;
printf("请输入一个数:(00000-99999)");
scanf("%ld",&num);
if(num>9999)
place=5;
else if(num>999)
place=4;
else if(num>99)
place=3;
else if(num>9)
place=2;
else place=1;
printf("这个数的位数为:%d",place);
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv==(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
switch(place)
{
case 5:printf("%d,%d,%d,%d,%d",indiv,ten,hundred,thousand,ten_thousand);break;
case 4:printf("%d,%d,%d,%d",indiv,ten,hundred,thousand);break;
case 3:printf("%d,%d,%d",indiv,ten,hundred);break;
case 2:printf("%d,%d",indiv,ten);break;
case 1:printf("%d",indiv);break;
}
}

伪代码
//获得位数
Int GetDigit(Int value)
{
if(value > 99999)
return -1;该数大于5位,无法判断
if(value > 10000)
return 5;
else if(value > 1000)
return 4;
else if(value > 100)
return 3;
else if(value > 10)
return 2;
else if(value > 0)
return 1;
else
return -1;//该数小于0,无法判断

}

Int GetReverse(Int value)
{
Int digit = GetDigit(value);
if(digit == -1)
return -1;//该数大于5位或小于0,无法计算
Int mod;
Int result = 0;
for(int i=1;i<=digit;i++)
{
mod = value % 10;
value = value / 10;
switch(i)
{
case 5:
result += mod;
break;
case 4:
result += mod * 10;
break;
case 3:
result += mod * 100;
break;
case 2:
result += mod * 1000;
break;
case 1:
result += mod * 10000;
break;
}
}
return result;
}