M035

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

所属年份:2011.3;

假定整数数列中的数不重复,并存放在数组中。下列给定程序中函数fun的功能是:删除数列中值为x的元素。变量n中存放数列中元素的个数。

请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!

#include <stdio.h>
#define   N  20
int fun(int *a,int n,int x)
{
    int   p=0,i;
    a[n]=x;
    while( x!=a[p] )
        p=p+1;
    /**********found**********/
    if(P==n) return -1;
    else
    {
        for(i=p; i<n-1; i++)
            /**********found**********/
            a[i+1]=a[i];
        return n-1;
    }
}
main()
{
    int  w[N]= {-3,0,1,5,7,99,10,15,30,90},x,n,i;
    n=10;
    printf("The original data :\n");
    for(i=0; i<n; i++) printf("%5d",w[i]);
    printf("\nInput x (to delete): ");
    scanf("%d",&x);
    printf("Delete  :  %d\n",x);
    n=fun(w,n,x);
    if ( n==-1 ) printf("***Not be found!***\n\n");
    else
    {
        printf("The data after deleted:\n");
        for(i=0; i<n; i++) printf("%5d",w[i]);
        printf("\n\n");
    }
}

【参考答案】

(1)if(p==n) return -1;
(2)a[i]=a[i+1];

【考点分析】
本题考查:if语句条件表达式;数组元素赋值。

【解题思路】
(1)需要确定if条件语句的条件表达式,发现变量p大写,C语言中变量是区别大小写的。
(2)删除数列中的元素,删除后,后面的元素依次前移一个位置,因此此处应为a[i]=a[i+1]。