改错题
1. 下列给定程序的功能是:读入一个整数n(2<=n<5000),打印它的所有为素数的因子。
例如,若输入整数1234,则应输出2617。
请修改程序中的错误,使程序能得出正确的结果。
注意:不要改动main()函数,不能增行或删行,也不能更改程序的结构。
试题程序:
#include<conio.h>
#include<stdio.h>
//****found****
Prime(int m);
{
int j,p;
p=1;
//****found****
for(j=2;j<m;j++)
if!(m%j)
{
p=0;
break;
}
return(p);
}
main()
{
int i,n;
printf("\nplease enter an integer number between 2 and 5000:");
scanf("%d",&n);
printf("\n\nThe prime factor(s)of%d is(are):",n);
for(i=2;i<n;i++)
if((!(n%i))&&(Prime(i)))
printf("%4d,",i);
printf("\n");
}
【正确答案】(1)错误:Prime(int m);
正确:Prime(int m)
(2)错误:if!(m%j)
正确:if(!(m%j))
【答案解析】 (1)第一个标识下面的“Prime(int m);”在程序中显然是一个函数,因此,应将后面的分号去掉。
(2)第二个标识下面的for语句最简单的应用形式为:for(循环变量赋初值;循环条件;循环变量增值)语句。显然,if语句后面缺少括号,因此,“if!(m%j)”应改为“if(!(m%j))”。
本题主要考查标点符号、运算符、基本定义。