给定一个整数 N,按升序打印出所有不超过 N 的自然数的平方。输入数据格式 输入自然数。输出格式 输出问题的答案。
示例输入:50
示例输出:1 4 9 16 25 36 49
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int a, b = 1;
cin >> a;
while (b <= a) {
if (float(sqrt(b)) % 1 == 0) {
cout << b;
}
b++;
}
return 0;
}
C++ 没有为浮点数定义余数运算符
%。因此,这个 if 子句中的条件
错误的。
写出下面的循环会更容易
无需包含标头
cmath并使用其中声明的函数sqrt。该程序可以变得更有意义。例如,
与程序的对话可能看起来像这样
这条线的意思对我来说是个谜。
求一个数除以 1 的平方根后的余数。你想说什么?想检查一个数字是否是整数?事情不是这样的
你的任务是这样解决的
在我看来,最大的错误是通过对所有数字进行排序并找出这个数字是否是正方形来解决你的问题。最好从另一个方向去,一个一个地输出方块,只要它们小于要求
a的(代码特别简化,让你看得更清楚):结论: