要求:1、改错时,只允许修改现有语句中的一部分内容,不允许添加和删除语句。 2、提示行下一行为错误行。 (1) 功能:判断m是否为素数,若是返回1,否则返回0。 #include <stdio.h> /**********FOUND**********/ void fun( int n) { int i,k=1; if(m<=1) k=0; /**********FOUND**********/ for(i=1;i<m;i++) /**********FOUND**********/ if(m%i=0) k=0; /**********FOUND**********/ return m; } void main() { int m,k=0; for(m=1;m<100;m++) if(fun(m)==1) { printf("%4d",m);k++; if(k%5==0) printf("\n"); } }
时间: 2023-06-13 20:07:44 浏览: 91
-程序改错部分试题及答案.doc
(1) 功能:判断m是否为素数,若是返回1,否则返回0。
#include <stdio.h>
/**********FOUND**********/
int fun(int m) {
int i,k=1;
if(m<=1) k=0;
/**********FOUND**********/
for(i=2;i<m;i++) /**********FOUND**********/
if(m%i==0) k=0;
/**********FOUND**********/
return k;
}
void main() {
int m,k=0;
for(m=1;m<100;m++)
if(fun(m)==1)
{
printf("%4d",m);k++;
if(k%5==0) printf("\n");
}
}
错误在第 6 行,应该是 if(m<=1) k=0;,判断的是 m 不是 n,同时要把函数返回类型改为 int,函数返回 k。在第 8 行,应该从 i=2 开始循环,因为 1 不是素数。在第 10 行,判断条件应该是 if(m%i==0),判断是否能被整除。最后在第 12 行,要返回 k 而不是 m。
阅读全文