给一个不多于5位数的正整数,要求:
①求出它是几位数;②分别输出每一位数字;
③按逆序输出各位数字,例如原数为321,应输出123;
①定义一个长整型,假定输入一个整数1234 1 123(n/10)//丢弃个位
1234 | 1 | 123 (n/10)丢弃个位 |
123 | 2 | 12 |
12 | 3 | 1 |
1 | 4 | 0 |
0 |
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
long long n;
int count = 0;//定义初始化
scanf("%lld", &n);
if (n == 0)
{
printf("0\n");
return 0;
}
while (n != 0)
{
count++;
n /= 10;//丢弃个位
}
printf("%d\n", count);
return 0;
}
代码实现
②定义一个长整型,(利用第一问求出整数的位数代码)假设输入一个整数1234 1 234(n/1000)丢弃高位 (n%10)
1234 | 1 | 234(n/1000)丢弃高位 | count%10 |
234 | 2 | 34 | 100 |
34 | 3 | 4 | 10 |
4 | 4 | 1 | |
0 |
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
long long n;
long long m;//因为在求整数个数和顺序输出都需要变量
int count = 0;//定义初始化
scanf("%lld", &n);
m = n;
if (n == 0)
{
printf("0\n");
return 0;
}
while (n != 0)
{
count++;
n /= 10;//丢弃个位
}
n = m;
int power = pow(10, count - 1);//pow是函数名,不写出现错误
while (n != 0)
{
printf("%d ", n/power);//直接输出最高位,高位是整形 ,不换行
n %= power;
power /= 10;
}
return 0;
}
代码实现:
③给定一个长整型,假设输出一个整数1234 4(n%10) 123(n/10)
12344 | 4(n%10) | 123(n/10) |
123 | 3 | 12 |
12 | 2 | 1 |
1 | 1 | 0 |
0 |
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
long long n;
scanf("%lld", &n);
if (n == 0)
{
printf("0\n");
return 0;
}
while (n != 0)
{
printf("%d", n % 10);
n /= 10;
}
return 0;
}
代码实现: