haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 小学教育 > 小学数学小学数学

实验六数组

发布时间:2013-12-15 11:43:46  

实验六 数组

一、实验目的

1.掌握一维数组与二维数组的定义、赋值及输入输出方法。

2.掌握字符数组和字符串函数的使用。

3.掌握与数组有关的算法(特别是排序算法)

二、实验内容

1.用选择法对10个整数排序。10个整数用scanf函数输入。

程序提示:

输入10个整数存放到数组a的a[1]到a[10]中

输出10个数

for(i=1;i<10;i++)

{

min=i;

for(j=i+1;j<=10;j++)

if(a[min]>a[j]) min=j;

交换a[i]与a[min]

}

输出排序后的10个数

2.有15个数存放在一个数组中,输入一个数要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出无此数,要找的数用scanf函数输入。 程序提示:

用循环语句输入15个数

调用排序算法对其进行排序

while(flag)

{

输入要查找的数

loca=0;

top=0;

bott=N-1;

if(number<a[0]||number>a[N-1]) loca=-1;

while(sign==1&&top<=bott&&loca>=0)

{

mid=(bott+top)/2;

if(number==a[mid])

{loca=mid;

printf("找到了,数%d在数组的第%d位、\n",number,loca+1); sign=0;}

else if(number<a[mid]) bott=mid-1;

else top=mid+1;

}

if(sign==1||loca==-1) printf("\n查无此数\n");

printf("\n是否继续查找?(Y/N)");

scanf("%c",&c);getchar();

printf("\n");

if(c=='N'||c=='n') flag=0;

}

3.将两个串连接起来,不要用strcat函数。

程序提示:

分别输入二个串字符

i指向第一个数组的最后一个空数组元素

while(s2[j]!='\0')

s1[i++]=s2[j++];

s1[i]='\0';

输出连接后的字符串

4.找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。至少准备两组测试数据:

(1)二维数组有鞍点

9 80 205 40

90 -60 96 1

210 -3 101 89

(2)二维数组没有鞍点

9 80 205 40

90 -60 96 1

210 -3 101 89

45 54 156 7

用scanf函数从键盘输入数组的各元素的值,检查结果是否正确,题目未指定二维数组的行数和列数,程序应能处理任意行数和列数的数组。

程序提示:

输入矩阵

flag2=0;//矩阵中无鞍点

for(i=0;i<n;i++)//找第i行的鞍点

{

max=a[i][0];maxj=0;

用for循环语句找第i行的最大值存放在max中,其下标j保存到maxj中

for(k=0,flag1=1;k<n&&flag1;k++)//判断max是否在该列上最小flag1=0则不是最小 if(max>a[k][maxj]) flag1=0;//max不是该列的最小元素

if(flag1)

{

printf("\n第%d行第%d列的%d是鞍点\n",i+1,maxj+1,max);

flag2=1;

}

}//endfori

if(!flag2) printf("\n矩阵中无鞍点\n");

网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com