是不是有很多同学跟我一样,课后作业遇到素数 C 语言程序就头大?盯着题目半天,不知道代码该从哪儿下手,好不容易写出来几行,不是编译报错就是结果不对,眼看交作业的截止日期越来越近,急得不行。别担心,今天兔子哥就给大家带来素数 c 语言程序课后作业完整代码,还有详细的讲解和注意事项,保证能帮你顺利完成作业,一起往下看吧!
一、最基础的素数判断作业代码(适合入门级作业)
很多老师布置的第一道素数作业,都是让判断单个整数是不是素数。这种题目不算难,掌握基本逻辑就能写出来。
完整代码如下:
c运行
#include int main() {int num, i;int is_prime = 1; // 用1表示是素数,0表示不是// 让用户输入一个整数printf("请输入一个正整数:");scanf("%d", &num);// 处理特殊情况if (num <= 1) {is_prime = 0;} else {// 用for循环判断for (i = 2; i < num; i++) {if (num % i == 0) { // 能被i整除,不是素数is_prime = 0;break; // 跳出循环,不用再判断了}}}// 输出结果if (is_prime == 1) {printf("%d是素数\n", num);} else {printf("%d不是素数\n", num);}return 0;}代码讲解:
这段代码先让用户输入一个数,然后通过 for 循环从 2 开始试除,只要能被其中一个数整除,就不是素数。虽然这种方法不算最高效,但逻辑简单,适合刚学 C 语言的同学交作业用。
二、进阶版作业代码(输出指定范围内的素数)
有些老师会布置难度稍大的作业,比如输出 1 到 100 之间的所有素数,这时候就需要两个循环嵌套使用了。
完整代码如下:
c运行
#include int main() {int i, j;int max = 100; // 范围是1到100,可以自己改int is_prime;printf("1到%d之间的素数有:", max);// 外层循环遍历每个数for (i = 2; i <= max; i++) {is_prime = 1;// 内层循环判断是否为素数for (j = 2; j * j <= i; j++) {if (i % j == 0) {is_prime = 0;break;}}// 如果是素数就输出if (is_prime == 1) {printf("%d ", i);}}return 0;}为什么这么写?
外层循环负责从 2 开始一个个数检查,内层循环用更高效的
j * j <= i来判断,比循环到 i-1 快很多。老师看到这种优化,说不定还会多给几分呢。三、带函数的作业代码(符合更高的作业要求)
如果老师讲过函数,那作业很可能要求用函数来实现素数判断,这样代码结构更清晰。
完整代码如下:
c运行
#include // 自定义判断素数的函数int isPrime(int n) {if (n <= 1) return 0;if (n == 2) return 1;if (n % 2 == 0) return 0;for (int i = 3; i * i <= n; i += 2) {if (n % i == 0) return 0;}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数\n", num);} else {printf("%d不是素数\n", num);}return 0;}用函数的好处:
把判断素数的功能单独写成函数,main 函数里的代码就会很简洁。老师通常很看重代码的结构化,这种写法更容易得高分。不过话说回来,刚开始学函数的同学可能会觉得麻烦,但习惯了之后,你会发现改代码的时候特别方便。
四、作业中常见的错误及修改方法
交作业前一定要自己检查,不然很容易因为小错误被扣分。
- scanf 里忘了加 &:比如写成
scanf("%d", num);,编译时会报错,加上 & 就行。 - 循环条件写错:把
i * i <= n写成i <= n,程序会变慢,尤其是数字大的时候。 - 没处理特殊情况:比如 1 和 2,很多同学的代码会把 2 判断成非素数,这就错了。
有一次我帮同学看作业,他的代码其他地方都对,就是忘了处理 2 这个特殊情况,结果老师扣了他 5 分,多可惜啊。
五、编译运行步骤(新手必看)
代码写好了,怎么运行呢?以 Dev-C++ 为例:
- 打开软件,新建源代码文件,把代码复制进去。
- 按 Ctrl+S 保存,文件名记得加.c 后缀,比如
prime.c。 - 点 “运行” 里的 “编译”,如果下面显示 “编译成功” 就没问题。
- 再点 “运行”,输入数字就能看到结果了。
至于不同编译器之间会不会有兼容性问题,比如有的代码在 Dev-C++ 能跑,在 VC6.0 里就报错,具体原因我也说不太清,可能跟编译器版本有关,遇到的话可以试试改改循环里变量的定义方式。
其实写素数程序作业,最重要的是理解判断素数的逻辑,而不是死记硬背代码。这些完整代码你可以参考,但最好自己敲一遍,遇到错误多调试几次,这样才能真正学会。
老师布置这种作业,也不是非要为难大家,而是想让我们掌握循环、条件判断这些基础知识。我当初写这种作业的时候,也是改了又改,慢慢才熟练的。希望这些代码和讲解能帮你顺利交上作业,要是还有不懂的地方,多问问同学或者老师就行啦!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
评论列表
素数C语言作业完整代码实用