将数值位转换为字符位后输出
问题描述:
输入一个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