怎样将数组的四个基本操作集中到一个程序中?高手们帮帮忙!
大家好!我刚刚学C语言,老师给我们留了一道关于数组的四个基本操作的程序题,要求是可以多次操作。我编了一个程序,但是出了一些问题,希望能帮我调试一下,看看应该怎样改。非常感谢!
下面是我编的程序:
#include <stdio.h>
void main() /*主函数*/
{
int a[100000],n,choice1,i;
int paixu(); /*对排序(paixu)函数进行声明*/
int charu(); /*对插入(charu)函数进行声明*/
int shanchu(); /*对删除(shanchu)函数进行声明*/
int chazhao(); /*对查找(chazhao)函数进行声明*/
char choice2;
loop: printf("请定义执行数组的长度:");
scanf("%d",&n);
printf("请输入数组:\n");
for(i=0;i<n;i++)
scanf("%d",a);
printf("%5s*****数组基本操作菜单*****\n"); /*操作菜单*/
printf("%10s 1-数组的排序\n");
printf("%10s 2-数组的插入\n");
printf("%10s 3-数组的删除\n");
printf("%10s 4-数组的查找\n");
printf("请输入选项(1/2/3/4):");
scanf("%d",&choice1);
switch(choice1)
{
case 1:
paixu(a,n);break; /*调用排序(paixu)函数*/
case 2:
charu(a,n);break; /*调用插入(charu)函数*/
case 3:
shanchu(a,n);break; /*调用删除(shanchu)函数*/
case 4:
chazhao(a,n); /*调用查找(chazhao)函数*/
}
printf("是否继续操作(Y/N)?");
scanf("%c",&choice2);
if(choice2=='Y') goto loop; /*程序的循环操作*/
if(choice2=='N') printf("感谢您的使用!\n");
}
int paixu(int a[],int n) /*定义排序(paixu)函数*/
{int i,j,t;
for(j=0;j<n-1;j++)
for(i=0;i<n-j;i++)
if(a>a[i-1])
{t=a;a=a[i-1];a[i-1]=t;}
printf("正确的顺序为:");
for(i=0;i<n;i++)
printf("%d",a);
}
int charu(int a[],int n) /*定义插入(charu)函数*/
{int i,k,x;
printf("请输入需要插入的整数:");
scanf("%d",&x);
k=n;
for(i=0;i<n;i++)
if(x<a){k=i;break;}
for(i=n;i>k;i--)
a[i-1]=a;
a[k]=x;
for(i=0;i<n+1;i++)
printf("%d",a);
}
int shanchu(int a[],int n) /*定义删除(shanchu)函数*/
{int i,j,x,k;
printf("请输入需要删除的整数:");
scanf("%d",&x);
i=0;
j=n-1;
while(i<=j)
{
k=(i+j)/2;
if(a[k]==x) break;
if(a[k]>x) j=k-1;
if(a[k]<x) i=k+1;
}
if(i>j) printf("您需要删除的数不在数组中!\n");
else
{
for( ;k<n-1;k++) a[k]=a[k+1];
for(i=0;i<n-1;i++)
printf("%d",a);
}
}
int chazhao(int a[],int n) /*定义查找(chazhao)函数*/
{int i,j,x,k;
printf("请输入需要查找的整数:");
scanf("%d",&x);
i=0;
j=n-1;
while(i<=j)
{
k=(i+j)/2;
if(a[k]==x) break;
if(a[k]>x) j=k-1;
if(a[k]<x) i=k+1;
}
if(i>j) printf("您需要删除的数不在数组中!\n");
}[/quote]