*下列给定程序中,函数fun的功能是:从整数1到550之间(包含1和550),选出能被3整除且有一位上的数是5的数,并把这些数放在b所指的数组中, 这些数的个数作为函数值返回。规定,函数中a1放个位数,a2放十位数。 请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */ #include <stdio.h> /**********ERROR**********/ int fun(int b[]); { int k,a1,a2,a3,i=0; /**********ERROR**********/ for(k=10;k<550;k++) { a2=k/10; a1=k-a2*10; a3=k/100; if((k%3==0 && a2==5)|| (k%3==0 && a1==5)||(k%3==0&& a3==5)) { b[i]=k; i++; } } /**********ERROR**********/ return k; } int 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"); return 0; }
时间: 2023-07-23 22:28:03 浏览: 94
修改后的代码如下:
```c
#include <stdio.h>
int fun(int b[])
{
int k, a1, a2, i = 0;
for (k = 1; k <= 550; k++) //将循环范围修改为1到550之间
{
a2 = k / 10;
a1 = k - a2 * 10;
if ((k % 3 == 0 && a1 == 5) || (k % 3 == 0 && a2 == 5)) //修改判断条件
{
b[i] = k;
i++;
}
}
return i; //返回符合条件的数的个数
}
int 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");
return 0;
}
```
主要修改了以下几个地方:
- 函数定义时,函数名和左括号之间不能有空格。
- 循环范围错误,应该将循环范围修改为1到550之间。
- 判断条件错误,应该判断个位数和十位数是否为5。
- 返回值应该是符合条件的数的个数,而不是循环变量k的值。
阅读全文