给一个不多于5位的正整数,要求使用c语言编程: (1)求出它是几位数; (2)分别输出每一位数字; (3)按逆序输出各位数字,例如原数为321,应输出123.
时间: 2023-08-31 11:31:56 浏览: 221
### 回答1:
答:#include<stdio.h>
int main(){
int a,b,c,d,e;
scanf("%d",&a);
if(a<10)printf("1位数, 分别输出:%d, 逆序输出:%d\n",a,a);
else if(a<100)printf("2位数, 分别输出:%d %d, 逆序输出:%d %d\n",a/10,a%10,a%10,a/10);
else if(a<1000)printf("3位数, 分别输出:%d %d %d, 逆序输出:%d %d %d\n",a/100,a/10%10,a%10,a%10,a/10%10,a/100);
else if(a<10000)printf("4位数, 分别输出:%d %d %d %d, 逆序输出:%d %d %d %d\n",a/1000,a/100%10,a/10%10,a%10,a%10,a/10%10,a/100%10,a/1000);
else printf("5位数, 分别输出:%d %d %d %d %d, 逆序输出:%d %d %d %d %d\n",a/10000,a/1000%10,a/100%10,a/10%10,a%10,a%10,a/10%10,a/100%10,a/1000%10,a/10000);
return 0;
}
### 回答2:
#include <stdio.h>
int main() {
int num, digit, count = 0;
printf("请输入一个不多于5位的正整数:");
scanf("%d", &num);
// 判断位数
if(num < 10) {
count = 1;
} else if(num < 100) {
count = 2;
} else if(num < 1000) {
count = 3;
} else if(num < 10000) {
count = 4;
} else {
count = 5;
}
printf("这个数是%d位数\n", count);
printf("每一位数字分别是:");
int i;
for(i = 1; i <= count; i++) {
digit = (num % (int)pow(10, i)) / (int)pow(10, i-1);
printf("%d ", digit);
}
printf("\n逆序输出各位数字为:");
for(i = count; i >= 1; i--) {
digit = (num % (int)pow(10, i)) / (int)pow(10, i-1);
printf("%d", digit);
}
return 0;
}
### 回答3:
题目要求使用C语言编程,以下为300字中文回答:
首先,我们需要定义一个整型变量来存储输入的正整数。然后,我们可以使用循环和取余运算来逐位地获取该数的每一位数字。根据题目要求,我们可以定义一个整型数组来存储每一位数字。
在开始之前,我们需要引入stdio.h头文件,以使用输入输出函数。
在程序中,我们可以首先提示用户输入一个不多于5位的正整数,并使用scanf函数将输入的值存储到之前创建的整型变量中。
接下来,我们可以用一个循环来判断该数是几位数。我们可以用一个整型变量count来记录位数,并在每一次循环中进行自增操作。我们可以使用一个while循环,判断该数是否大于10的count次方,如果是,则继续循环,否则,跳出循环。
然后,我们可以用一个for循环来分别输出每一位数字。由于题目要求需要倒序输出每一位数字,所以我们可以从count-1开始循环,直到循环变量i小于0为止。在每一次循环中,我们可以使用取余运算和除法运算,来获取当前位的数字。通过打印输出,我们就可以逐位地输出每一个数字。
最后,我们可以用一个for循环来按逆序输出各位数字。同样,我们从count-1开始循环,直到循环变量i小于0为止。在每一次循环中,我们可以使用取余运算和除法运算,来获取当前位倒序的数字。通过打印输出,我们就可以按逆序输出各位数字。
整个程序的C语言代码如下所示:
```c
#include <stdio.h>
int main() {
int num;
printf("请输入一个不多于5位的正整数:");
scanf("%d", &num);
int count = 0;
int temp = num;
while (temp) {
count++;
temp /= 10;
}
printf("该数是%d位数\n", count);
int digits[count];
temp = num;
for (int i = count - 1; i >= 0; i--) {
digits[i] = temp % 10;
temp /= 10;
printf("第%d位数字为:%d\n", count - i, digits[i]);
}
printf("按逆序输出各位数字:");
for (int i = count - 1; i >= 0; i--) {
printf("%d", digits[i]);
}
return 0;
}
```
上述代码使用了整型数组来存储每一位数字,并按逆序输出。根据输入的正整数不同,可以得到不同的结果。通过这个程序,我们可以实现求得正整数的位数,逐位输出和按逆序输出的功能。
阅读全文