下列程序完成按每行5个的格式输出所有3位数中的质数,函数judge用来判断一个整数是否为质数。
下列程序中存在一些错误,请指出具体出错行的行号并说明出错原因(每行代码后我给出的注释内容为行号),并且在不改动程序的框架、变量定义的基础上给出正确的程序代码,或者说明将出错行做怎样的修改。
#include <stdio.h> //1
#include <math.h> //2
int judge(int n) //3
{ //4
int i, k; //5
k = (int)sqrt(n); //6
for (i = 1; i <= k; i++) //7
if (!n % i ) //8
return 0; //9
else return 1; //10
} //11
int main() //12
{ //13
int count ,i; //14
for (i=101;i<1000;i=i+2) //15
if (judge(i)) //16
{ //17
printf("%5d", i); //18
count++; //19
} //20
if (count % 5 == 0) //21
printf("\n"); //22
return 0; //23
} //24
求正确完整代码有正确解答最好!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 天际的海浪 2022-06-13 19:20关注
第7行出错 应该是 i = 2; 是质数是从2开始判断是否能整除
第8行出错 n % i要加()先计算 if (!(n % i)) 否则!的优先级比%高 !n会先计算
第10行出错 应该去掉else, return 1应该放循环外
第14行出错 count要初始为0 count=0
第21和22行出错 if (count % 5 == 0) printf("\n"); 要放在上一个if中你题目的解答代码如下:
#include <stdio.h> //1 #include <math.h> //2 int judge(int n) //3 { //4 int i, k; //5 k = (int)sqrt(n); //6 for (i = 2; i <= k; i++) //7 应该是 i = 2; if (!(n % i)) //8 n % i要加()先计算 return 0; //9 return 1; //10 去掉else, return 1应该放循环外 } //11 int main() //12 { //13 int count=0, i; //14 count要初始为0 count=0 for (i = 101; i < 1000; i = i + 2) //15 if (judge(i)) //16 { //17 printf("%5d", i); //18 count++; //19 if (count % 5 == 0) //21 放上一个if中 printf("\n"); //22 } //20 return 0; //23 } //24
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效
- ¥15 悬赏!微信开发者工具报错,求帮改