这个程序应该接受一个三位数并将其变成回文。 123
将变为 321
。
逻辑正确,程序编译正确。 :) 然而,这些逻辑并不容易。
我的教授用“堆栈图”解释事情,我发现它们很有帮助。我根据另一个程序创建了这个程序,因为我注意到它与 different program I made 之间的相似之处, 但指向是如何工作的呢?
#include <stdio.h>
void reverse_number(int in_val, int *out_val) {
int ones, tens, hundreds;
ones = in_val % 10;
tens = (in_val % 100 - ones) / 10;
hundreds = (in_val - (ones + tens)) / 100;
*out_val = (ones * 100) + (tens * 10) + hundreds;
}
int main() {
int in_val;
int out_val;
printf("Give a three digit num to reverse: \n");
scanf("%d", &in_val);
reverse_number(in_val, &out_val);
printf("New number is: %d \n", out_val);
return 0;
}
此外,我现在开始理解如何使用这些指针编写基于一种模板的程序,并且我非常基本地理解参数中的星号(声明为指针变量)的含义。
例如,我知道 m = &q;
为变量 m
提供了另一个变量 q
的地址并且我知道 m = *g;
意味着地址 g
的值将进入 m
但我真的不熟悉这些在 a 的上下文中如何工作函数和一个主文件。
如果有人能阐明它(在这个程序中)如何工作的基本逻辑,那就太棒了。作为一名数学专业的学生,我可以理解数学运算之类的东西,但指针并没有让我感到困惑,但在我看来,有一些方法可以做到这一点,而无需处理变量的地址等。
最佳答案
当我运行它时,它会编译,甚至可以正常工作。请参阅:http://ideone.com/RHWwI
所以这一定是您编译它的方式。你的编译器错误是什么?
关于c - 确定回文 - 运算符 * 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7856349/