不多于5位数的正整数1、求出它是几位数;2、按逆序打印出各位数字。

《C程序设计 第二版》P105 5.7 给一个不多于5位数的正整数,要求:1、求出它是几位数;2、分别打印出每一位数字;3、按逆序打印出各位数字,例如原数为321,应输出123.

答:第2问和第3重复,没写第2问,直接第3问。

#include<stdio.h>

int main()
{
int x,w5,w4,w3,w2,w1;
w5=w4=w3=w2=w1=0;
printf("请输入一个不多于5位的大于零的正数:");
scanf("%d",&x);
fflush(stdin);

while(x>99999||x<=0)//检测部分 
{
printf("\n您的输入错误\n请输入一个不多于5位的大于零的正数:");
scanf("%d",&x);
fflush(stdin);
}


if(x>9999)
{
printf("您输入的数字是:5位数\n");
w5=x/10000;
w4=(x-w5*10000)/1000;
w3=(x-w5*10000-w4*1000)/100;
w2=(x-w5*10000-w4*1000-w3*100)/10;
w1=(x-w5*10000-w4*1000-w3*100-w2*10)/1;
}
else if(x>999&&x<=9999)
{
printf("您输入的数字是:4位数\n");
w4=x/1000;
w3=(x-w4*1000)/100;
w2=(x-w4*1000-w3*100)/10;
w1=(x-w4*1000-w3*100-w2*10)/1;

else if(x>99&&x<=999)
{
printf("您输入的数字是:3位数\n");
w3=x/100;
w2=(x-w3*100)/10;
w1=(x-w3*100-w2*10)/1;

else if(x>9&&x<=99)
{
printf("您输入的数字是:2位数\n");
w2=x/10;
w1=(x-w2*10)/1;

else if(x>0&&x<=9)
{
printf("您输入的数字是:1位数\n");
w1=x/1;




printf("逆序输出为:");//逆序输出部分 
if(w1!=0) {printf("%d",w1);}
if(w2!=0) {printf("%d",w2);}
if(w3!=0) {printf("%d",w3);}
if(w4!=0) {printf("%d",w4);}
if(w5!=0) {printf("%d",w5);}
printf("\n");

return 0;
}
### 回答1: 这道题要求我们逆序输出一个整数的各位数字。我们可以将这个整数转换成字符串,然后再逆序输出字符串中的每个字符,即可得到各位数字的逆序排列。如果不允许使用字符串,我们也可以使用循环和取模运算来逐输出整数的各位数字。 ### 回答2: 题目要求逆序输出一个整数的各位数字,这意味着我们需要先将这个整数拆分为它的各个,然后按相反的顺序输出这些数字。 为了实现这个目标,我们需要考虑如何拆分整数。一种方法是使用取模运算符(%)和整除运算符(//)。通过使用取模运算符,我们可以得到整数除以10的余数,这即表示了整数的最低一位数字。然后我们可以用整除运算符将整数除以10,从而消去最低一位数字并得到新的整数。通过重复这个过程,我们可以得到整数的所有数字,直到它变为0为止。 一旦我们得到了整数的各个位数,就可以按逆序输出它们了。可以使用余数符号来计算最低位数字,并使用print函数将每个数字输出。当然,由于我们是在反向输出数字,所以我们需要将数字存储在列表或字符串中,然后再一次性输出。 下面是一个示代码,它演示了如何将一个整数反向输出为字符串: ``` num = int(input("请输入一个整数:")) digits = [] while num != 0: digit = num % 10 digits.append(str(digit)) num = num // 10 reverse = ''.join(digits) print("逆序输出数字为:", reverse) ``` 在这段代码中,我们首先要求用户输入一个整数。然后,我们创建一个空列表digits,我们会将该整数的各位数字依次添加到其中。接下来,我们循环处理该整数,直到整数变为0。在每次循环中,我们使用取模运算符获取该整数的最低位数字,并将其转换为字符串类型,最后将其添加到digits列表中。然后,我们使用整除运算符将该整数除以10,这样我们就可以消去最低一位数字并得到新的整数。我们重复这个循环,直到该整数变为0。 接下来,我们需要将digits列表中的数字反转,并按顺序连接它们,形成一个字符串。我们可以使用join方法来实现这一目标。join方法将在列表中的每个项目之间插入一个字符串,并返回所有项目的合并结果。我们将一个空字符串作为参数传递给join方法,这样所有数字就会按顺序连接,形成逆序数字字符串。 最后,我们使用print函数将逆序数字字符串输出到屏幕上,以便用户查看。 总之,逆序输出一个整数的各位数字是一个很有趣的编程问题,需要使用循环,条件语句,算术操作和字符串连接等多种编程技巧。 ### 回答3: 题目要求我们对于一个给定的整数,将其各位数逆序输出。那么我们可以先将这个整数按照个、十、百……的顺序依次拆分开来,然后再把这些数字逆序输出即可。 以整数12345为,我们可以用以下方法拆分: 1. 取余数:12345 % 10 = 5,表示个位数字为5; 2. 整除10:12345 / 10 = 1234,表示去掉个位数字后剩下的整数为1234; 3. 继续1、2步,得到十位数字4、百位数字3、千位数字2和万位数字1。 最后,我们将这些数字逆序输出即可得到结果:54321。 当然,如果我们使用循环语句可以更加简便的实现。我们可以将拆分数字的步骤用一个while循环不断进行,每次取余数得到最后一位数字并且将整数除以10,直到整个整数被拆分完。然后再用另一个循环依次输出这些数字即可。 实现的代码如下: ``` #include <stdio.h> int main() { int num, digit; printf("请输入一个整数:"); scanf("%d", &num); // 拆分数字逆序输出 while (num != 0) { digit = num % 10; num /= 10; printf("%d", digit); } printf("\n"); return 0; } ``` 这样,对于任意输入的整数,程序都可以正确地输出其各位数字的逆序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qslife

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值