C语言 一个整数不等于另一个整数


#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_sscanf 一样,返回已成功解析的值的数量。 scanf_s("%d", &min)将返回 0、1 或 EOF(表示错误和文件结尾)。因此,比较

(scanf_s("%d", &min)) != (scanf_s("%d", &max))

仅当只能读取minmax中的一个时,才会为真,并且它们采用的值不计入结果。此外,未定义读取值的顺序,因为未指定计算!=操作数的顺序。

您可能打算使用类似的东西

while(scanf_s(" %d %d", &min, &max) == 2 && min != max)

如果scanf_s报告它能够解析两个值,那么scanf_s(" %d %d", &min, &max) == 2是正确的(你可以通过两次调用 scanf_s 来做到这一点,但我认为没有理由这样做),我相信min != max是不言自明的。

最新更新