输出整数位数,并正序,逆序输出各个位上的值
程序员文章站
2022-03-01 23:21:33
...
题目:给一个不多于5 位的正整数,要求∶
①求出它是几位数;
②分别输出每一位数字;
③按逆序输出各位数字,例如原数为321,应输出123。
一般来说,统计整数的位数有两种方法:
1.使用if和else if将情况列举出来
2.每次丢弃个位,利用n/=10循环使用
int main()
{
int n;
int temp = 0;//计数器
scanf_s("%d", &n);
if (n == 0)
{
printf("1");
}
while(n!=0)
{
n /= 10;
temp++;
}
printf("%d", temp);
}
顺序输出整数的每一位数字方法如下:
顺序输出即,得到高位数字,a = m / pow(10.0, temp - 1);利用除法,所得的商就是顺序输出的数字。m %= (int)pow(10.0, temp - 1);利用求余,删除高位数字,直到为零
#include<math.h>
int main()
{
int n;
scanf_s("%d", &n);
int temp = 0;//位数
int a=0;//返回值
int m = n;
if (n == 0)
{
printf("0");
}
while (n != 0)
{
n /= 10;
temp++;
}
while (m != 0)
{
a = m / pow(10.0, temp - 1);
m %= (int)pow(10.0, temp - 1);//取余不能用double
temp--;
printf("%d ", a);
}
}
逆序输出整数的每一位:
对十取余,得到个位,丢弃个位
1.得到个位数字,n%10
2.丢个位数字,n/=10;其他进制类似处理(其他进制也是类似几进制就除等于几)
int main()
{
int n;
int temp = 0;
scanf_s("%d", &n);
while (n != 0)
{
temp = n % 10;
n /= 10;
printf("%d ", temp);
}
//另一种表达方法:使用do while语句
/*if (n < 0)
{
printf("-");
n = -n;
}
do
{
printf("%d", n % 10);
n /= 10;
} while (n != 0);*/
}