下列给定程序中函数 fun 的功能是: 从整数 10 到 55 之间, 查找能被 3 整除且有一位上的数值是 5 的数, 把这些数放在 b 所指的数组中, 这些数的个数作为函数值返回。 规定函数中a1 存放个位数, a2 存放十位数。
请改正程序中的错误, 使它能得出正确的结果。
注意: 部分源程序在文件 MODI1.C 中, 不得增行或删行, 也不得更改程序的结构!
# include <stdio.h>
int fun(int * b)
{int k,a1,a2,i=0;
for(k=10;k<=55;k++)
{
/* * * * * * * * * * * *found* * * * * * * * * * * *
a2=k/1o´
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");
}
a2=k/10 return i
本题考查: 取数值 n 的各个位; return 语句将需要返回的函数值返回给函数main。
(1)a2 存放十位数, 所以是 a2=k/10, 此处是一个书写错误。
(2)根据题意, 要返回能被 3 整除的数的个数, 从循环体中可以知道其个数是由 i 来计算的,所以返回的是 i。