统计数字位数
下面变量均采用long long
这个不难
这里采用do while循环count先++,防止输入0时统计出错。
int main()
{
long long n;
scanf_s("%lld", &n);//这里考虑输入值较大,值小的话也可以int n %d输出。
int count = 0;
do
{
n /= 10;
count++;
} while (n != 0);
printf("%d", count);
return 0;
}
逆序输出
这里考虑正数,负数,0三种情况
逆序输出简单,需采用循环,n对10取模得到个位数字后输出,再除以10丢弃个位数字便可。
负数和0时需特殊考虑
******************************************
eg.输入12345
取模后则是5 4 3 2 1,输出形式为54321;若
int main()
{
long long n;
scanf_s("%lld", &n);
if (n < 0)
{
n = -n;//化负为正
printf("-");//打印出负号
}
if (n == 0)
{
printf("0\n");
return 0;
}
while (n != 0)
{
printf("%d", n % 10);
n /= 10;
}
return 0;
}
顺序输出
这里需要用到统计数字位数count,用输入数字n/pow(10, count - 1)来得到最高位
再用n%pow(long long)(10, count - 1)丢弃最高位
注意:pow这个函数返回值是个double类型,而取余要求的一定是整数对整数取,所以在pow的前面加一个强制类型转换整形,把它强制成整形
eg;n=1234 count=4 n/1000=1并打印 n=n%1000=234
n=234 count=3 n/100=2并打印 n=n%100=34
...........................
打印结果便为1 2 3 4
#include<stdio.h>
#include<math.h>
int main()
{
long long n;
scanf_s("%lld", &n);
int count = 0;
if (n < 0)
{
n = -n;//化负为正
printf("-");//打印出负号
}
if (n == 0)
{
printf("0\n");
return 0;
}
long long j = n;
do
{
j /= 10;
count++;
} while (j != 0);
long long k = 0;
while (n != 0)
{
k = n / pow(10, count - 1);
printf("%lld ", k);
n = n % (long long)pow(10, count - 1);
count--;
}
return 0;
}