C语言求助

题目描述

已有一个按递增序排列的正整数序列Array,其中任意两个元素都不同。现要将一正整数Key插入到序列Array中,并且依然保持Array的递增序。在此过程中,按判定顺序有可能出现以下几种情况:

1. 序列Array已经达到其容量上界;

2. 序列Array中已经有与Key相等的元素存在;

3.
序列Array既没有满,也没有与Key相等的元素,则Key可以插入序列Array之中,应获得其Key插入序列Array后所在的下标(从0开始)。

-----------------------------------------------------------------------------

编写函数getarray()、getkey()、insert()和result():

原型:int getkey(int key[]);

功能:按输入格式读取所有的待插入值,存放到整型数组key[]里,返回key[]中元素个数。

原型:int getarray(int array[]);

功能:按输入格式读取一个序列,存放到整型数组array[]里。

原型:int insert(int array[], int key, int vol);

功能:将key插入到整型数组array[]里,vol是array[]容量上限。根据题意描述的三种情况返回不同的值(你自己设计)。

原型:int result(int flag);

功能:结合insert()函数的返回值,根据输出格式和参数flag,产生不同的输出。

函数的调用格式见“Append Code”。

输入

输入的一个数是M,表示后面有M组测试数据。

每组测试数据有两部分组成:2行输入。第一部分是序列Array中的元素,最多不超过1000个,当读到0时表示序列输入结束。第二部分开始是一个正整数N(N较小),后面跟着N个待插入Array中的正整数key。

输出

输出为M行,每一行代表上述每一组输入的插入结果。其中:

如果存放序列的数组已满,则输出:“The array if full!”

如果序列中已经有Key,则输出:“The key is already in this array!”

如果Key可以插入Array,则输出:“The key is inserted in position x”. 其中x是Key插入数组后的下标。

样例输入

2
2 4 6 8 10 0
6 1 3 5 7 9 10
1 2 3 4 5 6 ....94 995 996 997 998 999 1000 0
2 1 3000

样例输出

Case 1:
The key is inserted in position 0.
The key is inserted in position 2.
The key is inserted in position 4.
The key is inserted in position 6.
The key is inserted in position 8.
The key is already in this array!
Case 2:
The array if full!
The array if full!

insert这个函数到底怎么写。。
我的代码哪里有问题。。

我来给你写一个insert。与你的代码结合起来就可以用了……

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int insert(int array[],int key,int vol){
    int i,n;
    for(n=0;array[n];n++)
        if(key==array[n])
            return vol+10;//It has been a key
    if(vol<=n)
        return vol+20;//fulled
    for(i=n-1;i>=0;i--)//inserting...
        if(key<array[i])
            array[i+1]=array[i];
        else{
            array[i+1]=key;
            break;
        }
    return i+1;//The key is inserted in position i+1
}
int main(void){//Testing...
    int array[12]={10,15,20,22,24,27,30,33,37,41,0},key=23,x,vol=12;
    if((x=insert(array,key,vol))==vol+10)
        printf("The key is already in this array!\n");
    else if(x==vol+20)
        printf("The array is full!\n");
    else printf("The key is inserted in position %d.\n",x);
    for(x=0;x<11;printf("%d ",array[x++]));//Look at...
    printf("\n");
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答