在多项选择测试中提出了一个问题:以下程序的输出结果如何:
#include <stdio.h>
int main(void)
{
int a = 10, b = 5, c = 2;
printf("%d %d %d\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并且选择是10,5和2的各种排列.出于某种原因,它适用于我们在大学时使用的Turbo C++.但是,在使用gcc(在启用-Wall时发出警告)或clang(启用了-Wformat并在默认情况下发出警告)或在Visual C++中编译时,它不会.正如预期的那样,输出是垃圾值.我的猜测是它与Turbo C++是16位,在32位Windows XP上运行这一事实有关,或者TCC在标准方面很糟糕.
作为课堂作业,我要编写一个C程序来生成低于给定值't'的所有毕达哥拉斯三元组.这是我的代码,它首先生成一个原始的三重峰(A,B,c)使用欧几里得式,并打印形式(KA,KB,KC)1 <KC <T的所有三元组.
for (i = 2; i < (sqrt(t) + 1); i++)
for (j = 1; j < i; j++)
if ((gcd(i,j) == 1) && ((i-j) % 2) && ((i*i + j*j) < t))
{
k = 0;
a = i * i - j * j;
b = 2 * i * j;
c = i * i + j * j;
while ((++k) * c < t)
printf("(%d, %d, %d)\n", k*a, k*b, k*c);
}
Run Code Online (Sandbox Code Playgroud)
我遇到的大多数其他算法使用嵌套循环来检查平方和,并且随着t的增长而明显慢于此.是否有可能推断出它确实更快的证据?