#include <iostream>
using namespace std;
int main()
{
int cnt[1000] = { 0 };
int n, t;
int tmp1, tmp2, tmp3;
for (t = 0; scanf("%d", &n) != EOF; t++)
{
for (int i = 0; 4 * i * i <= n; i++)
{
tmp1 = i * i;
for (int j = i; tmp1 + 3 * j * j <= n; j++)
{
tmp2 = tmp1 + j * j;
for (int k = j; tmp2 + 2 * k * k <= n; k++)
{
tmp3 = tmp2 + k * k;
for (int m = k; tmp3 + m * m <= n; m++)
{
if (tmp3 + m * m == n)
{
cnt[t]++;
}
}
}
}
}
}
for (int i = 0; i < t; i++)
{
printf("%d\n", cnt[i]);
}
return 0;
}
这是一道枚举 打表的题。我现在也不是很能理解。在控制台输入数据,并不能结束,但是居然有四个结果正确,这就很疑惑,scanf("%d", &n) != EOF 究竟意味着什么。
Ⅰ.scanf()函数语句
附:scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件(stdio.h)里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
Ⅱ."!=“C语言中的运算符号,意为"不等于”。
Ⅲ.EOF,是一个计算机术语,全称为"End Of File",也就是文件结束符
附:在C语言在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以[字符]的[ASCII]代码值的形式存放。我们知道,[ASCII代码值]的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。
退出:Ctrl+Z+Enter键
希望对题主有所帮助!可以的话,帮忙点个采纳!