如何提取一个整数的任意一位?

如题所述

有两种方法可以做到提取数字任意一位。

1 根据数学定义,利用除法和取余来获取。

整型的除法会省略掉小数部分,所以可以除以10的对应位数次幂,来达到将要取的值移动到个位的效果,再用10取余,即可得到对应数字。

比如1234,取其百位数,就可以用1234/100%10=12%10=2从而得到百位数2.

以下函数的功能为将整型正整数反序输出。原理为从低位到高位依次取出数值,并输出。

#include <stdio.h>
void reverse_int(int v)
{
while(v)
{
printf("%d", v%10);//输出个位。
v/=10; //将下一位数字移动到个位。
}
}


2 利用sprintf函数,将整型数字转为字符串,并对字符串进行处理。

sprintf的功能是格式化输出到字符串,操作类似于printf,但输出目标不是标准输出,而是字符数组。

以下函数功能为,将整型正整数按位加空格输出。

#include <stdio.h>
void put_int_with_space(int v)
{
char str[50]; //定义一个足够大的数组。
int i;

sprintf(str, "%d", v);//将v转为字符串。
for(i = 0; str[i]; i ++)
printf("%c ", str[i]);//将每位后加空格输出。
}
温馨提示:答案为网友推荐,仅供参考
相似回答