改错题 1.  下列给定程序中,函数proc()的功能是:找出100~m(m不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,将个数作为函数值返回。
    请修改程序中的错误,使它能得到正确结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<stdio.h>
    #define M 1000
    int proc(int*s,int n)
    {
    int i,j,k,a,b,c;
    j=0;
    for(i=100; i<n; i++)
    {
    //****found****
    k=n;
    a=k%10;
    k/=10;
    b=k%10;
    c=k/10;
    if(a==b+c)
    //****found****
    s[j]=i;
    }
    return j;
    }
    void main()
    {
    int a[M],m,num=0,i;
    do
    {
    printf("\nEnter m(<=1000):");
    scanf("%d”,&m);
    }
    while(m>1000);
    num=proc(a,m);
    printf("\n\nThe result:\n");
    for(i=0; i<num; i++)
    printf("%5d",a[i]);
    printf("\n\n");
    }
【正确答案】(1)错误:k=n;
   正确:k=i;
   (2)错误:s[j]=i;
   正确:s[j++]=i;
【答案解析】 要找出所有符合条件的整数,就需要对100~n的每一个数进行检验,因此,for循环中的“k=n;”应改为“k=i;”。对于每一个符合要求的整数放在数组s中,因此,“s[j]=i;”应改为“s[j++]=i;”。