A-A+

下列给定程序中 函数fun()的功能是找出100~n(n不大于1000)之间百位数字加十位数

2022-08-05 20:33:39 问答库 阅读 171 次

问题详情

下列给定程序中,函数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("nnThe result:n”);
for(i=0;i<num;i++)
printf("%5d",a[i]);
printf("nn");
}请帮忙给出正确答案和分析,谢谢!

参考答案

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

考点:函数,功能