c - 两个三位数的最大回文积

标签 c pointers printf iteration

它可能已经发布在某个地方,因为它是一个项目欧拉问题,但是,我没有解决特定问题的问题,尽管我写的代码确实有问题,因为我似乎无法发现一个错误。

我的猜测是我正在监督打印或内存值,但我不确定。无论如何,这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(){
int x = 999, y = 999, z = 0, w = 0, a=0, *largest = a;
for (x; x > 99; x--){
    for (y; y > 99; y--){
        z = x*y;
        while (z != 0){
            w = w * 10;
            w = w + z % 10;
            z = z/10;
        }
        if (x*y == w){
            a = w;
            goto stop;
        }
        w = 0;
    }
}
stop: printf("%d\n", largest);
system("pause");
return 0;
}

我知道 a 和 largest 之类的东西不是必需的,我只是测试了很多改变所有类型的东西,使用指针等等,所以不需要太注意那部分代码.

最佳答案

您的代码在 a 中分配了最大产品的值,但您正在打印 largest 这是一个指针。您的程序根本不需要指针 largest

您的代码也不起作用,因为您

  • 不检查最大的是否大于前一个
  • 不要在内循环中将y重置为999

通过以上两个修复,它看起来像:

#include <stdio.h>
#include <stdlib.h>

int main(void){
int x = 999, y = 999, z = 0, w = 0, a=0;

for (x; x > 99; x--){
    for (y=999; y > 99; y--){
        z = x*y;
        while (z != 0){
            w = w * 10;
            w = w + z % 10;
            z = z/10;
        }
        if (x*y == w && a<x*y){
            a = w;
        }
        w = 0;
    }
}
printf("%d\n", a);
return 0;
}

关于c - 两个三位数的最大回文积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31103351/

相关文章:

c - 如何进行这个初始化?

c - 为什么在以下情况下分配后结构地址不等于

c - str[i - 1] == ' ' 是什么意思?

c - 如何打印有限数量的字符?

PHP sprintf 转义 %

c - lua_Integer 和 lua_createtable(表大小限制)

c - size_t 或 long 表示包含文件的字符串的大小?

Bash:使用 printf 在动态终端宽度的两侧填充居中和彩色文本

c - 即使在函数返回后,在函数内部声明的非静态指针变量似乎仍被保留

c - 错误: assigning to 'char' from incompatible type 'const char *' .even if i have not defined string as constant