为什么用数字位的概念编写的 number c 程序的反面而不是像我发布的下面的程序?
Why is reverse of a number c program written with the concept of digits places instead like the below one which I posted?
void rev(int n){
int rem;
printf("reverse of that number is:");
while(n>0)
{
rem=n%10;
n=n/10;
printf("%d",rem);
}
}
int main()
{
int n;
printf("enter a number of more than two digits");
scanf("%d",&n);
rev(n);
return 0;
}
此代码没有为数字位置编写一段代码,即
reverse = reverse * 10 + remainder;
也returns一样。
请解释我的观点是否有任何错误。
问候
因为你其实没有倒数,只是打印而已。如果你想存储反转的数字并在以后使用它,你必须做 reverse = reverse * 10 + remainder;
如果有人让你将一个整数 X 与给定数字的倒数相加,你会怎么做?计算反向数字始终是一个好主意,而不是仅从最后一位数字打印到第一位数字。代码中的这个小改动可能非常有用:
void rev(long long n){
long long rem = 0;
printf("reverse of that number is:");
while(n>0)
{
rem= rem*10+(n%10);
n=n/10;
}
printf("%lld",rem);
}
这里还可以returnrem的值,以供进一步使用。
更新:
正如@Weather Vane 所说,如果用户想看到带有前导零的反向数字(如果有的话),那么唯一的方法就是将数字作为字符串输入。并将其反转。可以使用 strrev() 函数从 <string.h>
反转字符串
strrev(string_name);
如果它是 STL String,那么使用 <algorithm>
中的 reverse() 函数将很有用。
reverse(string_name.begin(), string_name.end());
如果你想从字符串中得到整数,你可以这样做:
long long str_to_num(string s)
{
long long integer = 0;
for(int i = 0; i < s.size(); i++){
integer = integer*10+(s[i]-'0');
}
return integer;
}
void rev(int n){
int rem;
printf("reverse of that number is:");
while(n>0)
{
rem=n%10;
n=n/10;
printf("%d",rem);
}
}
int main()
{
int n;
printf("enter a number of more than two digits");
scanf("%d",&n);
rev(n);
return 0;
}
此代码没有为数字位置编写一段代码,即
reverse = reverse * 10 + remainder;
也returns一样。 请解释我的观点是否有任何错误。 问候
因为你其实没有倒数,只是打印而已。如果你想存储反转的数字并在以后使用它,你必须做 reverse = reverse * 10 + remainder;
如果有人让你将一个整数 X 与给定数字的倒数相加,你会怎么做?计算反向数字始终是一个好主意,而不是仅从最后一位数字打印到第一位数字。代码中的这个小改动可能非常有用:
void rev(long long n){
long long rem = 0;
printf("reverse of that number is:");
while(n>0)
{
rem= rem*10+(n%10);
n=n/10;
}
printf("%lld",rem);
}
这里还可以returnrem的值,以供进一步使用。
更新:
正如@Weather Vane 所说,如果用户想看到带有前导零的反向数字(如果有的话),那么唯一的方法就是将数字作为字符串输入。并将其反转。可以使用 strrev() 函数从 <string.h>
strrev(string_name);
如果它是 STL String,那么使用 <algorithm>
中的 reverse() 函数将很有用。
reverse(string_name.begin(), string_name.end());
如果你想从字符串中得到整数,你可以这样做:
long long str_to_num(string s)
{
long long integer = 0;
for(int i = 0; i < s.size(); i++){
integer = integer*10+(s[i]-'0');
}
return integer;
}