改错题      给定程序中函数fun的功能是:从整数10到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1放个位数,a2放十位数。
    请改正程序中的错误,使它能得出正确结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
    给定源程序:
    #include<stdio.h>
    int fun(int *b)
    {int k,a1,a2,i=0;
    for(k=10;k<=55;k++){
    /************found************/
    a2=k/10;
    a1=k-a2*10;
    if((k%3==0&&a2==5)||(k%3==0&&a1==5))
    {b[i]=k;i++;)
    }
    /************found************/
    return k;
    }
    main()
    {int a[100],k,m;
    m=fun(a);
    printf('The result is:\n');
    for(k=0;k<m;k++)printf('%4d',a[k]);
    printf('\n');
    }
 
【正确答案】(1)a2=k/10; (2)return i;
【答案解析】(1)a2存放十位数,所以是a2=k/10,此处是一个书写错误。 (2)根据题意,要返回能被3整除的数的个数,从循环体中可以知道其个数是由i来计算的,所以返回的是i。