实验5数组
一、实验目的
1.掌握一维数组和二维数组的定义、赋值和输入输出的方法。
2.掌握字符数组和字符串函数的使用。
3.掌握与数组有关的算法,特别是排序算法
二、实验学时
4学时
三、实验内容
1.读程序,填空
(1)以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并到c数组中,请填空:int main( )
{ int a[10]={1,2,5,8,9,10},an=5;
int b[10]={1,3,4,8,12,18}, bn=5;
int i,j,k, c[20], max=9999;
a[an+1]=b[an+1]=max;
i=j=k=0;
while( a[i]!=max||b[j]!=max)
{ if(a[i]
{ c[k]=________;
k++;
_______}
else
{ c[k]=_________;
k++;
_____________;}
}
for(i=0;i cout< } (2)以下代码的功能是:对已排好序的数组,用折半查找法查找指定的数据。请将代码补充完整。 int main() { int a[ ]={-123, -10, 5, 8, 30, 56, 59, 66, 90, 518};//学生也可自拟数据 int n,k,i; cout<<"输入要查询的关键值:"; cin>>k; cout< int low = 0,high =9,find = -1,m; //find=-1表示没有找到 while (low <= high &&______________) { m =___________; if (k == a[m]) {find = 1; //find=1表示已经找到 cout<< k<<"找到了,在第"<< m+1<< "个位置。"< else {if (k < a[m]) high = __________; else low = __________;} } if (____________) cout<< k<<"没有找到。"< return 0; } 2.程序设计 (1)一个10个整数的数组(34,91,83,56,29,93,54,12,88,72),求数组元素的平均值,找出最小数及其下标。 (2)用冒泡法对第一题数组的10个数从大到小排列,按每行5个数分别输出排序前后的数组元素。 (3)用string 定义字符串变量的方法,编一程序,将两个字符串连接起来,结果取代第一个字符串。 (4)编程序实现:从一组数据中,按顺序查找指定的数据,如找到显示该数所在位置,否则给出未找到的提示。 基本方法:在含有n个数的数组a里,查找其值为k的数据。从下标为0的位置开始,顺序向下查找,让k与a[i]进行比较,若k!=a[i],则使i=i+1,继续向下查找;若k==a[i],则查找成功;若直到i>n还没找到,则在该数组中没有其值为k的数据。 (5)(选做)在一个从小到大排列的有序数组中插入元素x ,插入后数组仍然有序。 核心参考代码(假设有10个数): for (k = 0;k<=9;k++) if (x < a[k]) break; if(k==10) a[10] = x; else { for (i = 9 ; i >=k;i--) a[i + 1]= a[i]; a[i+1] = x; }