填空题 下列给定程序的功能是:读入一个整数n(2<=n<=5000),打印它的所有为素数的因子。例如,若输入整数1234,则应输出2,617。
请修改程序中的错误,使程序能得出正确的结果。
注意:不要改动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");
}
【正确答案】
【答案解析】错误:Prime(int m);
正确:Prime(int m)
错误:if!(m%j)
正确:if(!(m%j)) [解析] (1)第一个标识下面的“Prime(int m);”在程序中显然是一个函数,因此应将后面的分号去掉。
(2)第二个标识下面的for语句最简单的应用形式为:for(循环变量赋初值;循环条件;循环变量增值)语句。显然if语句后面缺少括号,因此,“if!(m%j)”改为“if(!(m%j))”。
本题主要考查标点符号、运算符、基本定义。