2 回答

TA貢獻1794條經驗 獲得超8個贊
#include <stdio.h>
#define MAX_SIZE 1000
int
getarray(
int
array[])
{
int
i = 0;
while
(
scanf
(
"%d"
, &array[i]) == 1 && array[i++]) ;
return
0;
}
int
insert(
int
array[],
int
key,
int
vol)
{
int
i, j;
for
(i = 0; i < vol; i ++)
if
(!array[i])
break
;
if
(i == vol)
return
-1;
//full
for
(j = 0; j < i; j ++)
if
(array[j] == key)
return
-2;
//already exist
else
if
(array[j] > key)
break
;
return
j;
}
int
result(
int
flag)
{
if
(flag == -1)
printf
(
"The array if full!\n"
);
else
if
(flag == -2)
printf
(
"The key is already in this array!\n"
);
else
printf
(
"The key is inserted in position %d\n"
, flag);
return
0;
}
int
main()
{
int
array[MAX_SIZE], cases, i, key;
scanf
(
"%d"
, &cases);
for
(i = 1; i <= cases; i++)
{
getarray(array);
scanf
(
"%d"
, &key);
result(insert(array, key, MAX_SIZE - 1));
}
return
0;
}

TA貢獻1921條經驗 獲得超9個贊
#include<stdio.h>
#include<string.h>
#define MAX_SIZE 1001
int getarray(int array[])
{
int j=0;
scanf("%d",&array[j]);
while (array[j]!=0)
{
j++;
scanf("%d",&array[j]);
}
return 0;
}
int insert(int array[],int key,int vol)
{
int i;
for(i=0; i<=vol; i++)
{
if(array[vol]==0)
return -1;
else
{
if(key==array[i])
return -2;
else
{
if(key<array[0])
return 0;
if(key>array[i]&&key<array[i+1])
return i+1;
if(key>array[i]&&array[i+1]==0)
return i+1;
}
}
}
}
void result(int flag)
{
if (flag==-1)
printf("The array if full!");
else if (flag==-2)
printf("The key is already in this array!\n");
else
printf("The key is inserted in position %d.\n",flag);
}
int main()
{
int array[MAX_SIZE], cases, i, key;
scanf("%d", &cases);
for(i = 1; i <= cases; i++)
{
getarray(array);
scanf("%d", &key);
result(insert(array, key, MAX_SIZE - 1));
}
return 0;
}
- 2 回答
- 0 關注
- 217 瀏覽
添加回答
舉報