将数值位转换为字符位后输出

问题描述:

输入一个1-99999之间的任意整数,要求转换为字符后输出;

算法分析:

先分别取万,千,百,十,个位,再转换成字符存储,这样就完成了一半。后一半是要分析些所在位是0的情况,分别是万,千,百,十上是零的情况,比如:万,千,百,十都是0,只输出个位,其它位类推。

代码如下:

View Code
#include <stdio.h>


int main(void)
{
long int n;
printf("Enter a number in 1 - 99999: ");
scanf("%ld", &n);

char ch0, ch1, ch2, ch3, ch4; // 分别代表万,千,百,十,个位;
ch0 = n / 10000; ch0 += '0'; // 取万位并转换为字符
ch1 = (n % 10000) / 1000; ch1 += '0';
ch2 = (n % 1000) / 100; ch2 += '0';
ch3 = (n % 100) / 10; ch3 += '0';
ch4 = n % 10; ch4 += '0';

char c[5];
c[0] = ch0;
c[1] = ch1;
c[2] = ch2;
c[3] = ch3;
c[4] = ch4;

if(ch0 == '0')
{
if(ch1 == '0')
{
if(ch2 == '0')
{
if(ch3 == '0')
{
printf("%c", ch4); // 除个位外,其他位都是0
}
else
printf("%c%c", ch3, ch4); // 万位,千位,百位都是0
}
else
printf("%c%c%c", ch2, ch3, ch4); // 万位,千位都是0
}
else
printf("%c%c%c%c", ch1, ch2, ch3, ch4); // 万位是0
}
else
printf("%c%c%c%c%c", ch0, ch1, ch2, ch3, ch4); // 万位不是0

return 0;
}

输出结果:

Enter a number in 1 - 99999: 3601
3601

posted @ 2011-10-19 11:05  jeff_nie  阅读(195)  评论(0编辑  收藏  举报