改错题
给定程序MODI1.c中函数fun的功能:找出100~n(n≤1000)的三位数字相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。
请改正函数fun中指定位置的错误,使它能得出正确的结果。
注意:不要改动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;
b=k%10; k/=10;
/**************found**************/
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)c=k%10; 答案考生文件夹
【答案解析】(1)i是当前要被判断的数,因为i是循环变量,所以将i的值赋给k再进行运算。 (2)c是存放百位上的数,可以通过求余运算得到,语句要用分号“;”结束。