数字处理是c语言中极为重要的一个板块,有关于数字处理常见的有以下几个问题:
1、统计输入的数字n是几位数;
2、顺序输出每一位数字;
3、逆序输出每一位数字;
则针对于以上问题我们常见的解法有:丢弃高位或者丢弃低位,得到高位或者得到低位,我们用到最多的便是整除与取余。
例题:给一个不多于五位数的正整数,要求:
(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆序输出各位数字,例如原数为321,应输出123;
(1)求数字个数需要利用计数器 count 来标记输入的数字的位数,利用循环,输入的数字 n依次 n /= 10 来实现丢弃个位数字(整除结果为整数,若不为整数,则去掉小数部分),每丢弃一位则计数器count++,直到n=0,输出count。
while循环则需要特别注意单独讨论当n=0,输出1。
(2)求输出每一位数字需要先得到高位数字接着丢弃高位;
由第一问我们可得到几位数字;
接着我们用库函数pow来得到除以和取余的数字 int power = (int)pow(10.0,c-1)10的c-1次方,用这个数来得到高位,丢弃高位;
最后我们用一个循坏来输出每一位数字。
(3)逆序输出各位数字需要用 n%10 来得到个位数字并输出,接着用 n/=10 来丢弃个位数字得到下一个n,一直循环直到n=0。
(1)
#include <stdio.h>
int GetFigures(int n)
{
if(n==0)
{
return 1;
}
else
{
int count=0;
while(n!=0)
{
n/=10;
count++;
}
return count;
}
}
int main()
{
int a=GetFigures(0);
printf("%d\n",a);
return 0;
}
#include <stdio.h>
int GetFigures(int n)
{
int count = 0;
do
{
count++;
n /= 10;//n = n /10;.丢掉个位
}while(n != 0);
return count;
}
int main()
{
printf("%d\n",GetFigures(0));
printf("%d\n",GetFigures(12234));
return 0;
}
(2)
#include <stdio.h>
#include <math.h>
int GetFigures(int n)
{
int count = 0;
do
{
count++;
n /= 10;//n = n /10;.丢掉个位
}while(n != 0);
return count;
}
void PrintOrder(int n)
{
//得到n是几位数字
int c = GetFigures(n);
//计算除以和取余的数字
int power = (int)pow(10.0,c-1); //循环输出每位数字
do
{
printf("%d ",n/power);//输出高位
n %= power;//丢弃高位 ,n=n%power;
power /= 10;
}while(n != 0);
printf("\n");
}
int main()
{
PrintOrder(1244);
return 0;}
(3)
#include <stdio.h>
void PrintReverse(int n)
{
do
{
printf("%d",n%10);//得到个位数字
n/=10;//丢弃个位
}while(n!=0);
printf("\n");
}
int main()
{
PrintReverse(0);
PrintReverse(1234);
return 0;
}