#include<stdio.h>
int c=0;//C是用來計算數組中數的個數的,當下面插入時就c++;刪除時就c--
void print(int a[100])//打印整個數組的函數
{
int b;
for(b=0;b<c;b++)
printf("%d ",a[b]);
printf("\n");
}
void cr(int a[])//插入函數
{
int i,j,m;
printf("請輸入要插入的位置:");
scanf("%d",&i);
//*************************************************************
//這些是用來判斷,所輸入的位置是否存在,
//如果不存在,則重新再輸入壹次,當然這些可以不要,那在運行的時候
//就需要保證輸入的位置都是對的!
while(i<1||i>c+1)
{
printf("沒有這個位置,請重新輸入要插入的位置:");
scanf("%d",&i);
}
//**************************************************************
printf("請輸入要插入的數:");
scanf("%d",&j);
(c)++;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//用來把要插入位置以後的數,都往後移動壹會,這樣騰出位置
for(m=c-1;m>=i;m--)
{
a[m]=a[m-1];
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a[i-1]=j;//把要插入的數放入前面騰出的位置
print(a);
}
void del(int a[])//刪除函數
{
int i,m;
printf("請輸入要刪除數的位置:");
scanf("%d",&i);
(c)--;
for(m=i-1;m<c;m++)
a[m]=a[m+1];
print(a);
}
void find(int a[])//查找函數
{
int i,m;
char x;
printf("請輸入要查找的數:");
scanf("%d",&i);
for(m=0;m<c;m++)
{
if(a[m]==i)break;
}
if(m!=c)
{
printf("找到該數下標是%d.\n",m);
}
else
printf("查無此數.\n");
}
void hb(int a[])
{
int b[100]={0};
int d,i;
printf("請輸入要並入的數組數據數量(不能大於%d):",100-c);
scanf("%d",&d);
for(i=0;i<d;i++)
{
printf("請輸入第%d個數:",i+1);
scanf("%d",&b[i]);
}
printf("\n並入\n");
print(a);
printf("\n得到:\n");
for(i=0;i<d;i++)
{
a[c]=b[i];
c++;
}
print(a);
}
void main()
{
int a[100]={0};
int i,j,m,n;
printf("請輸入數據數量:");
scanf("%d",&c);
for(i=0;i<c;i++)
{
printf("請輸入第%d個數:",i+1);
scanf("%d",&a[i]);
}
print(a);
//__________________________________________________________
//次處采用選擇結構,既根據輸入m的值來判斷執行下面哪個語句
printf("插入請輸入1,刪除請輸入2,查找請輸入3,合並新數據4\n任意數結束:");
scanf("%d",&m);
switch (m)
{
case 1 :cr(a);break;
case 2 :del(a);break;
case 3 :find(a);break;
case 4 :hb(a);break;
default : break;
};
//______________________________________________________________
//如果不要兩橫線內的東西,則屏蔽掉後使用下面三句
//cr(a);
//del(a);
//find(a)
}