- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试图找到 x 的所有组合,其中 x = a^2 + b^2,并且 x 介于 100 和 999 之间。
到目前为止我有:
#include <stdio.h>
#include <stdlib.h>
#define MAX 31 // given that 31^2 = 961
int main(){
int i = 0;
int poss_n[] = {0};
for (int a=0; a <= MAX; a++){
for (int b=0; b <= MAX; b++){
if (a*a + b*b >= 100 && a*a + b*b <= 999){
poss_n[i] = a*a + b*b;
printf("%i\n", poss_n[i]);
i++;
}
}
}
}
但是它只给出了部分正确的输出,并且还以段错误 11 过早结束:
100 1380405074 144 169 196 225 256 289 324 361 400 441 484 529 576 625 676 729 784 841 900 961 101 122 145 170 197 226 257 290 325 362 401 442 485 530 577 626 677 730 785 842 901 962 104 125 148 173 200 229 260 293 328 365 404 445 488 533 580 629 680 733 788 845 904 965 109 130 153 178 205 234 265 298 333 370 409 450 493 538 585 634 685 738 793 850 909 970 116 137 160 185 212 241 272 305 340 377 416 457 500 545 592 641 692 745 800 857 916 977 106 125 146 169 194 221 250 281 314 349 386 425 466 509 554 601 650 701 754 809 866 925 986 100 117 136 157 180 205 232 261 292 325 360 397 436 477 520 Segmentation fault: 11
我应该对我的代码进行哪些修改?
更新
除了数组问题,我的代码还有什么问题吗?例如它仍然打印 100 作为第一个值,它似乎不是 a^2 + b^2 的任何组合,即使 b = 0。
更新 2
没关系,忘了 a = 10,b = 0,也就是 100。
最佳答案
尝试:
int poss_n[(MAX + 1) * (MAX + 1)] = {0};
这样您就可以分配足够的内存来存储您的答案。
关于c - 在 C 中查找 a^2 + b^2 的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16144954/
我是一名优秀的程序员,十分优秀!