我写了一个完整的。程序试运行正常。运行效果如下图。
希望对您有帮助!
#include"stdio.h"
#include "stdlib.h"
int charu(int a[])
{
int n,i=0;
while(a[i]!=0)
i++;
printf("\n该数列长度为%d。\n",i);
printf("请输入要插入元素的位置n(n<=%d)(在第%d位插入即在末尾增加一个元素):\n",i+1,i+1);
while(1)
{
scanf("%d",&n);
if(n>=1&&n<=i+1)
break;
printf("请输入0-%d以内的数字:\n",i+1);
}
for(i=i-1;i>=n-1;i--)
a[i+1]=a[i];
printf("请输入要添加的数:\n");
scanf("%d",&a[n-1]);
printf("新数列为:\n");
for(i=0;a[i]!=0;i++)
printf("%d\t",a[i]);
return a[20];
}
void chazhao1(int a[])/*顺序查找*/
{
int n=0,num;
printf("请输入要查找的数:\n");
scanf("%d",&num);
for(int i=0;a[i]!=0;i++)
if(a[i]==num)
{
printf("第%d位为%d。\n",i,num);
n=n+1;
}
if(n==0)
printf("没找到该数!\n");
}
void chazhao2(int a[])/*折半查找*/
{
int num,set=0,end=0,i;
while(a[end]!=0)
end++;
end=end-1;
i=(set+end)/2;
printf("请输入要查找的数:\n");
scanf("%d",&num);
while(set<=end)
{
if(a[i]>num)
end=i-1;
else
if(a[i]<num)
set=i+1;
else break;
i=(set+end)/2;
}
if(set>end)
printf("没找到该数!\n");
else
printf("第%d位为%d。\n",i+1,num);
}
int paixu1(int a[])
{
int n=0;
for(int i=0;a[i]!=0;i++)
n=n+1;
for(i=1;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if(a[j]>a[j+1])
{
int t;
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
}
printf("排序后的数列为:\n");
for(i=0;a[i]!=0;i++)
printf("%d\t",a[i]);
return a[20];
}
int paixu2(int a[])
{
int n=0;
for(int i=0;a[i]!=0;i++)
n=n+1;
int min;
for(i=0;i<n-1;i++)
{
min=i;
for(int j=i+1;j<n;j++)
if(a[j]<a[min])
min=j;
if(min!=i)
{
int t;
t=a[i];a[i]=a[min];a[min]=t;
}
}
printf("排序后的数列为:\n");
for(i=0;a[i]!=0;i++)
printf("%d\t",a[i]);
return a[20];
}
void xianshi(int a[])
{
for(int i=0;a[i]!=0;i++)
printf("%d\t",a[i]);
}
void screen()
{
printf("\n请选择:\n");
printf("1.显示所有数\n");
printf("2.插入一个数\n");
printf("3.顺序查找一个数\n");
printf("4.冒泡排序\n");
printf("5.选择排序\n");
printf("6.折半查找一个数(注意:折半查找只能在排序后使用)\n");
printf("7.退出程序\n");
}
void main()
{
int a[20]={21,23,14,5,56,17,31,85,72};
int i;
printf("原数列为:\n");
for(i=0;a[i]!=0;i++)
printf("%d\t",a[i]);
printf("\n该数列长度为%d。\n",i);
int c;
while(1)
{
screen();
scanf("%d",&c);
switch (c)
{
case 1:xianshi(a);break;
case 2:a[20]=charu(a);break;
case 3:chazhao1(a);break;
case 4:a[20]=paixu1(a);break;
case 5:a[20]=paixu2(a);break;
case 6:chazhao2(a);break;
case 7:exit(0);
default :printf("输入的数字错误。\n请重新输入:\n");
}
continue;
}
}
温馨提示:答案为网友推荐,仅供参考