改错题 1.  下列给定的程序中,函数proc()的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。
    请修改函数proc()中的错误,使它能得出正确的结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<stdio.h>
    #include<math.h>
    void proc(int num,int*b,int*c)
    {
    int i,j,d,y;
    for(i=3;i<=hum/2;i=i+2)
    //****found****
    {  y=0;
    for(j=2;j<=sqrt((double)i);j++)
    if(i%j==0)y=0;
    if(y==1)
    //****found****
    {  d=i-num;
    for(j=2;j<=sqrt((double)d);
    j++)
    if(d%j==0)y=0;
    if(y==1)
    {  *b=i;*c=d;}
    }
    }
    }
    void main()
    {  int num,b,c;
    do
    {  printf("\nInput num:");
    scanf("%d",&num);}
    while(num%2);
    proc(num,&b,&c);
    printf("\n\n%d=%d+%d\n",num,b,c);
    }
    }
【正确答案】(1)错误:y=0;
   正确:y=1;
   (2)错误:d=i-num;
   正确:d=num-i;
【答案解析】 由函数proc()可知,变量y是判断小于num/2的整数中是否存在素数的标志,y=1为找到所要的素数,其初始值应该为1,因此,“y=0;”应改为“y=1;”。变量num为两个素数之和,变量i和d为要求的两个素数,因此,“d=i-num;”应改为“d=num-i;”。