问题 填空题

下列给定程序中,函数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;

解析: 要找出所有符合条件的整数,就需要对每一个1~n之间的每一个数进行检验,因此for循环中的“k=n;”应改为“k=i;”对于每一个符合要求的整数放在数组s中,因此“s[j]=i;”应改为“s[j++]=i;”。

填空题
单项选择题