问题 填空题

下列给定程序中,函数fun()的功能是找出100~n(n不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动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; c=k/10; if(a==b+c) /************found**************/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=n; 正确:k=i;

解析:(2) 错误:s[j]=i; 正确:s[j++]=i; 错误1:k就是当前要被判断的数,是随着i值的变化而变化的。错误2:在循环中,j是数组的下标要递增。

单项选择题
多项选择题