M101

02-程序修改题 软件154 范金瑞 1467浏览

所属年份:2011.9

给定程序MODI1.C中,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

【解题思路】

要删除数组b中小于10的数,应依次取出数组数组b中的元素与10进行比较,若不小于10,则将其存入数组t中,遍历完成后,数组t中的元素即为所求,再将数组t中的元素保存到数组b中即可。

(1)元素num存放不小于10的元素的个数,应将其初始化为0。
(2)将数组b中不小于10的元素存入数组t中,同时使数组t的下标加1。
(3)语法错误,没有nun这个变量,应该为num。