填空题 给定程序中,fun函数的功能是:删除b所指数组中小于10的数据。主函数中输出删除后数组中余下的数据。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stdlib.h>
#define N 20
int fun(int*b)
{
/*********found*********/
int t[N],i,num
for(i=0;i<N;i++)
if(b[i]>=10)
/*********found*********/
t[++num]=b[i];
/*********found*********/
for(i=0;i<nun;i++)
b[i]=t[i];
return(num);
}
main()
{int a[N],i,num;
printf("a数组中的数据:/n");
for(i=0;i<N;i++)
{a[i]=rand()%21;
printf("%4d",a[i]);}
printf("/n");
num=fun(a);
for(i=0;i<num;i++)
printf("%4d",a[i]);
printf("/n");
}
【正确答案】
【答案解析】(1)int t[N],i,num=0;
(2)t[num++]=b[i];或{t[num]=b[i];num++;}
(3)for(i=0;i<num;i++) [解析]
要删除数组b中小于10的数,应依次取出数组数组b中的元素与10进行比较,若不小于10,则将其存入数组t中,遍历完成后,数组t中的元素即为所求,再将数组t中的元素保存到数组b中即可。
(1)元素num存放不小于10的元素的个数,应将其初始化为0。
(2)将数组b中不小于10的元素存入数组1中,同时使数组t的下标加1。
(3)语法错误,没有nun这个变量,应该为num。