改错题   下列给定程序中,函数fun的功能是:找出100~n(不大于1000)三个位上的数字都相等的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。
    请改正程序中的错误,使它能得出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<stdio.h>
    #define N 100
    int fun(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;
    /**********found**********/
    b=k/10;
    c=k/10;
    if(a==b && a==c)
    s[j++]=i;
    }
    return j;
    }
    main()
    {
    int a[N],n,num=0,i;
    do
    {
    printf('\nEnter n(<=1000):');
    scanf('%d',&n);
    }while(n>1000);
    num=fun(a,n);
    printf('\n\nThe result:\n');
    for(i=0;i<num;i++)
    printf('%5d',a[i]);
    printf('\n\n');
    }
 
【正确答案】(1)k=i; (2)b=k%10;
【答案解析】(1)i是当前要被判断的数,因为i是循环变量,所以将i的值赋给k再进行运算。 (2)b是存放十位上的数,但前面已经除以了一个10,即原数的十位已经变成了个位,所以这里用求余就可以了。