|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- int main()
- {
- int number1,number2 = 0;
- int a,b;
- int n = 2;
- printf("请输入一个正整数:");
- scanf("%d",&number1);
- while(number1 > 0)
- {
- a = number1 % 10;
- while(n > 0)
- {
- a *= 10;
- n --;
- }
- n --;
- number2 += a;
- b = number1 / 10;
- number1 = b;
- }
- printf("%d\n",number2);
-
- return 0;
-
- }
复制代码
本帖最后由 他非她 于 2018-8-25 20:47 编辑
问题出在n上,看起来n用来表示:未移动位数-1,即把后面的数字向前移动的位数,但是在里面的小循环结束后,n=0,然后又n--变成-1了。
可以另外设置一个变量,譬如digit,初始化为总的位数,在循环里赋值给n, 每次移动前让n都得到正确的移动位数,这样就可以了。
程序改动如下:
- #include <stdio.h>
- int main()
- {
- int number1,number2 = 0;
- int a,b,n;
- int digit = 3; //因为输入的是3位数
- printf("请输入一个正整数:");
- scanf("%d",&number1);
- while(number1)
- {
- a = number1 % 10;
- n = --digit; //每次要移动的位数是未移动位数-1
- while(n)
- {
- a *= 10;
- n --;
- }
- // n --; 此句不知何为
- number2 += a;
- b = number1 / 10;
- number1 = b;
- }
- printf("%d\n",number2);
-
- return 0;
-
- }
复制代码
|
|