我的功能在调试时效果很好,但不是主要的
My function works good on debug, but not im main
我必须制作一个函数来做这样的事情 123 -> 321 递归
当我通过调试器看到我的 func 的工作时,我看到一个改变了,但是当我在 main 上调用函数时,没有任何改变
这是我的代码
#include <stdio.h>
#include <math.h>
long int SwapNum(long int , int);
int CountRoz(long int);
int main(){
long int a = 123;
printf("%ld", a);
SwapNum(a, CountRoz(a));
printf("%ld", a);
}
int CountRoz(long int a) {
if (a / 10 == 0)
return 1;
return 1 + CountRoz(a / 10);
}
long int SwapNum(long int a, int b) {
a +=a % 10 * pow(10, 2 * b - 1);
if (b == 1) {
return 1;
}
b--;
return SwapNum(a / 10, b);
}
你能帮帮我吗,因为我找不到错误
虽然我不确定你的算法是否完全正确,但你也可以尝试通过引用传递。
long int SwapNum(long int *, int);
...
SwapNum(&a, CountRoz(a));
...
long int SwapNum(long int *a, int b) {
*a += *a % 10 * pow(10, 2 * b - 1);
if (b == 1) { return 1; }
b--;
long int a2 = *a/10;
return SwapNum(&a2, b);
}
所以,模数运算符可能就是您在 Swapnum 的第一行中要尝试的。 123 % 10 得到 123 除以 10 的余数。
请记住,整数数学会产生整数; 12/10 产生 1.
假设我们从:
开始
123、0
123/10, 0*10 + 123%10 => 12, 3
12/10, 3*10 + 12%10 => 1, 32
1/10, 32*10 + 1%10 => 0, 321
0, 321 => a 没有剩余数字,所以 321 是我们的答案
我们像您计划的那样通过除以 10 和
来遍历 A 中的数字
还可以通过乘以 10(加上余数)来构建 return 值
long int SwapNum(long int, long int);
int main(){
long int a = 12388569;
printf("%ld", a);
printf("%ld", SwapNum(a,0));
}
long int SwapNum(long int a, long int b) {
if (a == 0) return b;
return SwapNum(a/10, b*10 + a%10);
}
希望这对您有所帮助!
罗恩。
我必须制作一个函数来做这样的事情 123 -> 321 递归 当我通过调试器看到我的 func 的工作时,我看到一个改变了,但是当我在 main 上调用函数时,没有任何改变 这是我的代码
#include <stdio.h>
#include <math.h>
long int SwapNum(long int , int);
int CountRoz(long int);
int main(){
long int a = 123;
printf("%ld", a);
SwapNum(a, CountRoz(a));
printf("%ld", a);
}
int CountRoz(long int a) {
if (a / 10 == 0)
return 1;
return 1 + CountRoz(a / 10);
}
long int SwapNum(long int a, int b) {
a +=a % 10 * pow(10, 2 * b - 1);
if (b == 1) {
return 1;
}
b--;
return SwapNum(a / 10, b);
}
你能帮帮我吗,因为我找不到错误
虽然我不确定你的算法是否完全正确,但你也可以尝试通过引用传递。
long int SwapNum(long int *, int);
...
SwapNum(&a, CountRoz(a));
...
long int SwapNum(long int *a, int b) {
*a += *a % 10 * pow(10, 2 * b - 1);
if (b == 1) { return 1; }
b--;
long int a2 = *a/10;
return SwapNum(&a2, b);
}
所以,模数运算符可能就是您在 Swapnum 的第一行中要尝试的。 123 % 10 得到 123 除以 10 的余数。 请记住,整数数学会产生整数; 12/10 产生 1.
假设我们从:
开始我们像您计划的那样通过除以 10 和
来遍历 A 中的数字 还可以通过乘以 10(加上余数)来构建 return 值
long int SwapNum(long int, long int);
int main(){
long int a = 12388569;
printf("%ld", a);
printf("%ld", SwapNum(a,0));
}
long int SwapNum(long int a, long int b) {
if (a == 0) return b;
return SwapNum(a/10, b*10 + a%10);
}
希望这对您有所帮助!
罗恩。