1.给定一个整数可能为正数,0,负数,统计这个数据的位数.
统计数据的数字位数采用的是: 丢弃个位法
例如:
1234567
输出
7
位
; -12345678
输出
8
位
;0 输出1
位
#include <stdio.h>
int main() {
long x;
scanf("%ld", &x);
int n = 0;//统计位数
do {
n++;
x /= 10;//(从最低位(个位)开始记一位数,丢一位数)
} while (x != 0);
printf("%d", n);
return 0;
}
2.给定一个整数可能为正数,0,负数,(从右往左) 逆序输出这个数据的每一位.
例如:
1234567
输出
7 6 5 4 3 2 1
例如:
-12345678
输出
-8 7 6 5 4 3 2 1
int main() {
long x;
scanf("%ld", &x);
if (x < 0) {
printf("-");
x = -x;//防止每一位数字前都有负号
}
if (x == 0) {
printf("0\n");
return 0;
}
while (x != 0) {
printf("%ld ", x % 10);//输出最低位
x /= 10;//丢弃最低位
}
return 0;
}
3.给定一个整数可能为正数,0,负数,顺序输出这个数字的每一位.
例如:
1234567
输出
1 2 3 4 5 6 7
例如:
-123456789
输出
-1 2 3 4 5 6 7 8 9
int main() {
long x;
scanf("%ld", &x);
if (x < 0) {
printf("-");
x = -x;
}
if (x == 0) {
printf("0\n");
return 0;
}
int c = 0;
long t = x;
while (t != 0) {
c++;
t /= 10;
}//此时c为x的总位数
int p = pow(10, c - 1);
while (x != 0) {
printf("%ld ", x / p);//输出最高位
x %= p;//丢弃最高位
p /= 10;//p也丢一位
}
return 0;
}