一个整数不等于另一个整数?
One integer not equal to another integer?
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int min, max, sumOfSquares;
sumOfSquares = 0;
//scanf_s("%d %d", &min, &max);
while((scanf_s("%d", &min)) != (scanf_s("%d", &max)))
{
for (int i = min; i <= max; i++)
{
sumOfSquares += (i*i);
}
printf("%d", sumOfSquares);
printf("%d %d", min, max);
}
return 0;
}
基本上,我输入了两个整数。一个是最小值,下一个是最大值。我得到最小值和最大值的平方和以及它们之间的每个数字。
我不太确定哪里出了问题。
当我输入这两个数字时,根本没有打印出来,所以我猜 while 语句有问题?
这不是可接受的格式吗?
有人可以告诉我哪里出了问题,如果可能的话,请指出正确的方向。
此外,我使用了 while 循环,因为它应该一直要求我输入并打印出 sumOfSquares,直到我输入一个彼此相等的输入,例如 5 5。
scanf_s
,如scanf
,returns 是成功解析的值的数量。 scanf_s("%d", &min)
将 return 0、1 或 EOF
(用于错误和文件结尾)。因此,比较
(scanf_s("%d", &min)) != (scanf_s("%d", &max))
仅当只能读取 min
和 max
之一时才为真,并且它们所取的值不会影响结果。此外,未定义读取值的顺序,因为未指定计算 !=
的操作数的顺序。
您可能打算使用类似
的东西
while(scanf_s(" %d %d", &min, &max) == 2 && min != max)
如果 scanf_s
报告它能够解析两个值,则 scanf_s(" %d %d", &min, &max) == 2
将为真(您可以通过两次调用 scanf_s
来完成此操作,但我认为没有理由这样做做),min != max
是,我相信,不言自明。
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int min, max, sumOfSquares;
sumOfSquares = 0;
//scanf_s("%d %d", &min, &max);
while((scanf_s("%d", &min)) != (scanf_s("%d", &max)))
{
for (int i = min; i <= max; i++)
{
sumOfSquares += (i*i);
}
printf("%d", sumOfSquares);
printf("%d %d", min, max);
}
return 0;
}
基本上,我输入了两个整数。一个是最小值,下一个是最大值。我得到最小值和最大值的平方和以及它们之间的每个数字。 我不太确定哪里出了问题。 当我输入这两个数字时,根本没有打印出来,所以我猜 while 语句有问题?
这不是可接受的格式吗?
有人可以告诉我哪里出了问题,如果可能的话,请指出正确的方向。
此外,我使用了 while 循环,因为它应该一直要求我输入并打印出 sumOfSquares,直到我输入一个彼此相等的输入,例如 5 5。
scanf_s
,如scanf
,returns 是成功解析的值的数量。 scanf_s("%d", &min)
将 return 0、1 或 EOF
(用于错误和文件结尾)。因此,比较
(scanf_s("%d", &min)) != (scanf_s("%d", &max))
仅当只能读取 min
和 max
之一时才为真,并且它们所取的值不会影响结果。此外,未定义读取值的顺序,因为未指定计算 !=
的操作数的顺序。
您可能打算使用类似
的东西while(scanf_s(" %d %d", &min, &max) == 2 && min != max)
如果 scanf_s
报告它能够解析两个值,则 scanf_s(" %d %d", &min, &max) == 2
将为真(您可以通过两次调用 scanf_s
来完成此操作,但我认为没有理由这样做做),min != max
是,我相信,不言自明。