reverse = reverse * 10;
reverse = reverse + (n % 10);
n = n / 10;
这会打印51
而不是051
。
为了将输出设为051
,需要在逻辑中进行哪些更改?
答案 0 :(得分:1)
如果您想将whole reverse number
存储在one place
中,只需使用如下数组:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n=15000;
char reverse[11]; // change the array size depending on integer value type
int ind=0;
while(n)
{
int digit = n%10;
reverse[ind++] = digit + '0';
n = n / 10;
}
reverse[ind]='\0';
printf("%s\n",reverse);
// If you want the decimal value you can simply do this
int decimal_val=atoi(reverse);
printf("%d\n",decimal_val);
return 0;
}
如果你想使用字符串函数,可以有另一种方法:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int n = 3505000;
char rev[15];
itoa(n,rev,10);
strrev(rev);
puts(rev);
}
此处itoa(number, target_string, number_base)
//此处n
是十进制数字,因此base=10
并strrev()
反转字符串。
答案 1 :(得分:0)
我认为你正在寻找类似的东西:
#include <stdio.h>
int main () {
int number = 150, temp = number, digit;
while(temp != 0) {
digit = temp%10;
temp = temp /10;
printf("%d", digit);
}
return 0;
}
答案 2 :(得分:0)
使用
while(num)
{
printf("%d\n",num%10);
num/=10;
}
撤消名为int
的{{1}}变量。或者您可以使用以下内容(@chux建议),当num
为0时,将打印至少0:
num
这也会打印零。但我认为你需要存储在变量中的数字的反转。简而言之,你不能这样做,因为051不是十进制数。它是一个八进制数当单位所在的数字为0时,请打印 do
{
printf("%d\n",num%10);
num/=10;
}while(num);
。以下程序执行此操作:
0
答案 3 :(得分:0)
此反向功能通过out-param psz
跟踪号码的大小。
因此,对于510的测试输入,返回值为15
,*psz = 3
,可以轻松打印015
。
int reverse(int input, int* psz)
{
int output = 0;
*psz = 0;
while(input)
{
output *= 10;
output += (input % 10);
input /= 10;
(*psz)++;
}
return output;
}
int main()
{
int input = 510;
int sz;
int out=reverse(input, &sz);
printf("%0*d\n", sz, out); // Output: 015
return 0;
}
答案 4 :(得分:0)
这可以是另一种方式:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n=15000;
char reverse[15];
itoa(n,reverse,10); // Here 10 is the base. Means decimal number
strrev(reverse);
printf("%s\n",reverse);
return 0;
}