改错题 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))”。
   本题主要考查标点符号、运算符、基本定义。