整型数字处理
1.统计数字个数可以先给出一个例子,如该整型数字为n=12345678,要求其个数
方法:定义一个计数器count,当该整型数字n每次除以10,之后count+1,然后将整型数字n除以10之后的值赋给n,直到n等于0为止。
原因:当该整型数字n每次除以10时,因为n和10两个数字都为整型,所以是整除,当n=1235678时,n/10等于1234567,就是说当该数字除以10时,等于抛掉个位,然后n=1234567。这就好比如我有总数是10个苹果,吃了一个,然后现在总数是9,我吃的苹果个数就相当于计数器。当我吃完所有的苹果,这时计数器的值就是苹果的总数目。所以当n=0时的count值就整形数字n的数字个数。
#include <stdio.h>
int Number(int n)
{
int count=0;
while(n!=0)
{
n/=10;
count++;
}
return count;
}
int main()
{
printf("%d\n",Number(12345678));
printf("%d\n",Number(-1234567));
return 0;
}
结果如下图。
但是该程序当n=0时,程序出现问题
当像上图那样调用函数Number,结果如下图:
2.将数字逆序输出
整型数字n=12345678逆序输出是8 7 6 5 4 3 2 1,每次打印出来的就是刚刚在计算数字个数时抛掉的数字,所以只要将while的循环体改为如下:
void Number(int n)
{
while(n!=0)
{
int s=n%10;
printf("%d ",s);
n/=10;
}
printf("\n");
}
3.将数字顺序输出
整形数字n=12345678 顺序输出是1 2 3 4 5 6 7 8,那是如何先输出的呢?要想输出1,那可以n除以10000000等于1,10000000可以写成10^7;要想是输出2,是2345678除以1000000等于2,1000000可以写成10^6,……,要想输出8时,用8除以1等于8,1可以写成10^0。所以代码如下:
#include <stdio.h>
int Number(int n)
{
int count=0;
while(n!=0)
{
n/=10;
count++;
}
return count;
}
void Sort(int n)
{
int s=1;
for(int i=1;i<Number(n);i++)
{
s*=10;
}
while(n!=0)
{
printf("%d ",n/s);
n%=s;
s/=10;
}
}
int main()
{
Sort(12345678);
return 0;
}