一、综合设计题目:
数组的各项基本操作。
二、综合设计分工说明
本实验由我一个人完成。
三、问题概述
本实验要求编写出一个程序,它能反复实现数组里的几个基本操作(输入、输出、排序、查找、插入、删除);而且要尽可能的使用模块化的程序设计方法,尽可能的体现c语言的
风格。
四、问题分析:
本实验可先分功能模块完成各个基本操作,再利用函数的调用实现程序的全部功能;各功能模块的编写可在自己编写过的数组的基本操作的程序的基础之上做些修改来实现。
五、功能模块描述及功能模块图:
每个功能模块的功能:
输入:输入数组里的各个元素
输出:输出数组里的各个元素
排序:将数组里的数从小到大或从大到小进行排序
查找:判断一个数是否是该数组中的一个数
插入:向数组中插入一个数
删除:将数组中的一个数删除掉
六、每个功能模块的算法描述及其实现 :
输入:
函数的作用:输入数组中的每一个元素;
参数:int a[] int n;
返回值:无;
函数名,功能及实现方法:input; 运用for语句实现输入
具体函数如下:
void input(int a[],int n)
{int i;
for(i=0;i
scanf("%d",&a[i]);
}
输出:
函数的作用:输出数组中的每一个元素;
参数:int a[] int n;
返回值:无;
函数名,功能及实现方法:output; 运用for语句实现输入
具体函数如下:
void output(int a[],int n)
{int i;
for(i=0;i
printf("%d ",a[i]);
printf("\n");
}
排序:
(1)函数的作用:将数组里的数从大到小排序
参数:int a[] int n;
返回值:无;
函数名,功能及实现方法:f; 冒泡排序法
具体函数如下:
void f(int a[],int n)
{int i,j,t;
for(j=0;j
for(i=0;i
if(a[i]
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("数组中各数从大到小的顺序为: ");
output(a,n);
}
(2)函数的作用:将数组里的数从小到大排序
参数:int a[] int n;
返回值:无;
函数名,功能及实现方法:f1; 冒泡排序法
具体函数如下:
void f1(int a[],int n)
{int i,j,t;
for(j=0;j
for(i=0;i
if(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("数组中各数从小到大的顺序为: ");
output(a,n);
}
查找:
函数的作用:判断一个数x是否是该数组中的一个数
参数:int a[] int n;
返回值:无;
函数名,功能及实现方法:f2; 折半查找发
具体函数如下:
void f2(int a[],int n)
{int i,j,k,x,l;
f1(a,n);
printf("请输入要查找的一个整数: ");
scanf("%d",&x);
l=0;
i=0;
j=n-1;
while(i<=j&&l==0)
{k=(i+j)/2;
if(x==a[k]){l=1;break;}
if(x>a[k])i=k+1;
if(x