介绍
在这个实验中,你将学习如何使用 C 编程语言来判断一个数是否为完全平方数。完全平方数是指可以表示为一个整数与其自身相乘的积的数。例如,16 是一个完全平方数,因为它等于 4 × 4;25 也是一个完全平方数,因为它等于 5 × 5。
在这个实验结束时,你将理解完全平方数的概念,并能够编写一个 C 程序来检查用户输入的数是否为完全平方数。
理解完全平方数
在开始编码之前,让我们先了解什么是完全平方数,以及如何判断一个数是否为完全平方数。
完全平方数是一个整数的平方。换句话说,它是一个可以写成 n² 的数,其中 n 是整数。
完全平方数的示例:
- 1 = 1² (1 × 1)
- 4 = 2² (2 × 2)
- 9 = 3² (3 × 3)
- 16 = 4² (4 × 4)
- 25 = 5² (5 × 5)
要判断一个数是否为完全平方数,我们可以检查是否存在一个整数,其平方等于给定的数。
让我们为项目创建一个目录并进入该目录:
mkdir -p ~/project/perfect-square
cd ~/project/perfect-square

现在,让我们为程序创建一个新的 C 文件:
- 在 WebIDE 中,导航到左侧的文件资源管理器面板。
- 右键单击
perfect-square文件夹,然后选择“新建文件”。 - 将文件命名为
perfect_square.c并按回车键。
创建基本程序结构
现在,让我们创建 C 程序的基本结构。我们需要包含必要的头文件并设置主函数。
在 WebIDE 的文件资源管理器面板中点击 perfect_square.c 文件将其打开。然后添加以下代码:
#include <stdio.h>
int main() {
int number;
// Prompt user for input
printf("Enter a number to check if it's a perfect square: ");
scanf("%d", &number);
// We will add code to check for perfect square in the next step
return 0;
}
让我们来理解一下这段代码:
#include <stdio.h>—— 这行代码包含了标准输入输出库,该库提供了像printf和scanf这样的函数。int main()—— 这是程序执行开始的主函数。int number;—— 我们声明一个整数变量来存储用户输入。printf("Enter a number...");—— 这行代码向用户显示一个提示信息。scanf("%d", &number);—— 这行代码从用户那里读取一个整数输入,并将其存储在number变量中。&运算符用于获取存储输入的变量的内存地址。
按 Ctrl + S 或点击“文件”>“保存”来保存文件。
实现完全平方数检查算法
现在,让我们实现逻辑来检查用户输入的数字是否为完全平方数。有多种方法可以检查一个数是否为完全平方数。我们将使用一种简单的方法,即检查从 1 到该数的任何整数的平方是否等于该数。
用以下代码更新你的 perfect_square.c 文件:
#include <stdio.h>
int main() {
int number;
int isPerfectSquare = 0; // Flag to indicate if number is perfect square
// Prompt user for input
printf("Enter a number to check if it's a perfect square: ");
scanf("%d", &number);
// Check if number is negative
if (number < 0) {
printf("%d is negative, and negative numbers cannot be perfect squares.\n", number);
return 0;
}
// Check if the number is a perfect square
for (int i = 0; i <= number; i++) {
if (i * i == number) {
isPerfectSquare = 1;
printf("%d is a perfect square. It is %d squared.\n", number, i);
break; // Exit the loop once we find the answer
}
// Optimization: If i*i exceeds number, no need to check further
if (i * i > number) {
break;
}
}
// If not a perfect square, inform the user
if (isPerfectSquare == 0) {
printf("%d is not a perfect square.\n", number);
}
return 0;
}
让我们来理解一下这段新代码:
- 我们添加了一个
isPerfectSquare标志,用于跟踪该数是否为完全平方数。 - 我们检查该数是否为负数,因为负数不可能是完全平方数。
- 我们使用一个
for循环从 0 迭代到该数。 - 在循环内部,我们检查
i * i是否等于该数。如果相等,我们设置标志,打印一条消息,并退出循环。 - 我们添加了一个优化:如果
i * i超过了该数,我们可以停止检查,因为后续的所有值也都会超过该数。 - 最后,如果标志仍然为 0,我们告知用户该数不是完全平方数。
保存文件(按 Ctrl + S 或选择“文件”>“保存”)。
编译并测试程序
现在我们已经完成了检查完全平方数的代码,接下来让我们对其进行编译和测试。我们将使用 GCC 编译器来编译我们的 C 程序。
导航到包含我们代码的目录(如果你还没在该目录下):
cd ~/project/perfect-square
编译程序:
gcc perfect_square.c -o perfect_square
这个命令会编译 perfect_square.c 文件,并创建一个名为 perfect_square 的可执行文件。如果编译成功,你将不会看到任何输出。
现在让我们运行程序:
./perfect_square

程序会提示你输入一个数字。让我们用不同的输入进行测试:
输入一个完全平方数,例如 16。 输出应该是:
16 is a perfect square. It is 4 squared.输入一个非完全平方数,例如 10。 输出应该是:
10 is not a perfect square.输入一个负数,例如 -4。 输出应该是:
-4 is negative, and negative numbers cannot be perfect squares.
你可以多次运行程序,用不同的输入进行测试。
让我们再尝试一个边界情况,数字 0:
./perfect_square
当提示输入时,输入 0。
输出应该是:0 is a perfect square. It is 0 squared.
恭喜你!你已经成功创建了一个用于检查一个数是否为完全平方数的 C 程序。
总结
在这个实验中,你学习了如何创建一个 C 程序来判断一个数是否为完全平方数。以下是所涵盖的关键概念:
- 完全平方数是可以表示为一个整数的平方的数。
- 基本的 C 编程概念,包括变量、条件语句和循环。
- 使用
scanf获取用户输入,并使用printf显示输出。 - 使用循环通过测试每个可能的值来检查一个数是否为完全平方数。
- 在必要时跳出循环以优化解决方案。
- 处理负数和零等边界情况。
这个实验展示了如何在编程中实现数学概念。你可以通过添加更多功能来扩展这个程序,例如找出给定数字之后的下一个完全平方数,或者检查一个数是否为立方数(n³)而非平方数。



