实验6 数组及其应用实验报告答案

时间:2024.4.20

实验六 数组及其应用

【实验类型】设计性

【实验学时】2学时

【实验目的】

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

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

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

【实验内容】

编程序并上机调试运行。

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

解:

#include<stdio.h>

void main()

{

void selection_sort(int a[], int n);

int a[10],i;

printf("请输入10个整数:\n");

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

scanf("%d",&a[i]);

selection_sort(a,10);

printf("重新排序的整数:\n");

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

printf("%-5d",a[i]);

putchar('\n');

}

void selection_sort(int a[],int n)

{

int i,j,k,temp;

for(i=0;i<n;i++)

{

k=i; //保存i的值,用k来进行循环排序

for(j=i+1;j<n;j++) //将第i个元素后面的元素与第i个元素进行比较

if(a[j]<a[k]) //如果第k=i个元素后面的元素小于i号元素,交换两个元素的标号,这样就将最小元素的标号放到最前面

k=j; //交换标号

if(k!=i) {temp=a[k];a[k]=a[i];a[i]=temp;} //循环结束后,交换两个标号下的元素的值

}

}

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

#include<stdio.h>

void main()

{

static int a[15]={1,9,15,18,34,56,73,98,121,146,157,169,198,203,409}; int n,l,m,h,f;

l=0;h=14;f=0;

printf("请输入一个数:\n");

scanf("%d",&n);

while(l<=h)

{

m=(l+h)/2;

if(n==a[m])

{f=1;break;}

else if(n>a[m])

l=m+1;

else h=m-1;

}

if(f==1)

printf("该数是数组中的第%d个元素的值。\n",m+1);

else

printf("数组中无此数。\n");

}

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

解:

#include<stdio.h>

void main()

{

int i=0,j=0;char str1[100],str2[100];

gets(str1);

gets(str2);

while(str1[i]!='\0')

i++;

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

{str1[i++]=str2[j++];

str1[i]='\0';}

printf("%s\n",str1);

}

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

(1)二维数组有鞍点

9 80 205 40

90 -60 96 1

210 -3 101 89

(2)二维数组没有鞍点

9 80 205 40

90 -60 196 1

210 -3 101 89

45 54 156 7

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

解:

#include<stdio.h>

#define N 100

#define M 100

void main()

{

int i,j,k,m,n,flag1,flag2,a[N][M],max,maxj;

printf("请输入行数n:\n");

scanf("%d",&n);

printf("请输入列数m:\n");

scanf("%d",&m);

printf("请输入数组:\n");

for(i=0;i<n;i++)

for(j=0;j<m;j++)

scanf("%d",&a[i][j]);

flag2=0;

for(i=0;i<n;i++)

{

max=a[i][0];

maxj=0;

for(j=0;j<m;j++)

if(a[i][j]>max)

{

max=a[i][j];

maxj=j;

}

for(k=0,flag1=1;k<n&&flag1;k++)

if(max>a[k][maxj])

flag1=0;

if(flag1)

{

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

}

}

if(!flag2)

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

}

【实验所使用的仪器设备与软件平台】

Windows7 Visual C++6.0

【实验结果】(根据题目要求给出结果,对于编程的实验,要附上编写的程序)

【实验小结】(主要分析在实验过程中碰到的问题,及如何解决的,另外小结一下实验过程中常犯的错误,怎么解决等)


第二篇:实验报告6答案


实 验 报 告

课程名称:高级语言程序设计

实 验 六:一维数组和二维数组

 班    级:                                         

学生姓名:                              

学    号:                         

专    业:

指导教师:

学    期:2009-20##学年上学期

云南大学信息学院

一、实验目的

  1、掌握一、二维数组的定义及初始化

  2、掌握数组元素的输入、输出及引用方法

  3、掌握使用循环对数组元素进行访问

  4、掌握一、二维数组的简单应用

二、知识要点

  1、一、二维数组的定义与赋值(初始化、循环键盘输入)

  2、访问数组元素(下标的正确使用)

  3、数组的典型应用(复制、求和、统计某种元素个数、求数组中的最大/最小值、元素的查找与排序)

三、实验预习  (要求做实验前完成)

  1、定义一个有四个元素的float型数组:

  2、定义一个具有五个元素的整型数组并将其初始化为{1,2,3,4,5}

  3、要用循环从键盘输入整型数组s的元素值(共6个),应该使用语句:

  4、交换数组元素d[2]和d[4],使用语句:

  5、语句for(k=0;k<3;k++)  x[2][k] = 0; 将把哪些元素变为0?

四、实验内容  (要求提供:① 算法描述或流程图   ② 源程序 )

  1、已知一个数组有10个元素,值分别是3,6,8,4,5,66,80,72,69,70。编程,将数组元素逆置后输出。(提示:第一个与最后一个交换位置,第二个与倒数第二个交换位置,……)

  2、编程序求Fibonacci数列的前30项,Fibonacci数列的定义为:

            

     要求将数列存放在数组中,并按每行5个数的格式输出该数列。

  3、输入一个4行4列的二维数组,统计偶数的个数,并输出所有小于5的数。

  4、已知一个二维数组:{{14,26,18,17},{24,37,21,8},{19,31,22,16},{7,19,14,26}},编程,输出该二维数组的最小元素的行下标与列下标。

 五、实验结果(要求写出运行界面及输出的运行结果)

六、实验小结

1. #define N 10

  #include <stdio.h>

main()

{int i, t,a[N];

for(i=0;i<N;i++)

  scanf(“%d”, &a[i]);

for(i=0;i<N/2;i++)

 {t=a[i];

  a[i]=a[N-1-j];

a[N-1-j]=t;}

for(i=0;i<N;i++)

 prinf(“%5d ”,a[i]);

}

2. #define N 10

  #include <stdio.h>

main()

{int i;

long f[30]={1,1};

for(i=2;i<30;i++)

  f[i]=f[i-1]+f[i-2];

for(i=0;i<30;i++)

{if(i%5==0) prinf(“\n”);

prinf(“%8ld”,f[i]);

}

printf(“\n”);

}

3. #include <stdio.h>

main()

{int i, j, count=0, a[4][4];

for(i=0;i<4;i++)

  for(j=0;j<4;j++)

{scanf(“%d”,a[i][j]);

if(a[i][j]==0) count++;

}

printf(“小于5的数:”);

for(i=0;i<4;i++)

  for(j=0;j<4;j++)

   if(a[i][j]<5) printf(“%d  ”,a[i][j]);

printf(“\n偶数个数=%d\n ”,count);

}

4.        #define M 4

#include <stdio.h>

main()

{int i,j,row,column,min;

int a[M][M]={{14,26,18,17},{24,37,21,8},{19,31,22,16},{7,19,14,26}};

min=a[0][0];

for(i=0;i<M;i++)

 for(j=0;j<M;j++)

  if(a[i][j]<min)

{min=a[i][j];

 row=i;

column=j;

}

printf(“最小值行下标为:%d,列下标为%d\n”,row,column);

更多相关推荐:
C语言实验报告 数组

C语言实验报告实验七数组1实验目的1熟练掌握一维数组二维数组的定义初始化和输入输出方法2熟练掌握字符数组和字符串函数的使用3掌握与数组有关的常用算法如查找排序等2实验指导1对任意一个一维型数组从中找出数组元素的...

实验六数组实验报告

实验六数组一实验目的1掌握一维数组与二维数组的定义赋值及输入输出方法2掌握字符数组和字符串函数的使用3掌握与数组有关的算法特别是排序算法二实验内容用选择法对个整数排序个整数用scanf函数输入其程序为inclu...

C语言数组实验报告

C语言数组实验报告,内容附图。

C语言数组实验报告

北京联合大学信息学院程序设计基础课程调研研究报告题目姓名学号专业计算机科学与技术编制时间20xx528版本指导教师北京联合大学信息学院编制数组实验程序设计报告20xx年5月28日班号姓名学号第一章实验情况概述本...

c++数组实验报告

C上机实验报告上机内容数组专业班级电气信息类1203班学号姓日期20xx年3月13日1目录1实验目的2实验内容3程序源码4调试结果5实验心得2实验五数组1实验目的1掌握一维数组和二维数组的定义赋值和输入输出的方...

c语言实验7数组实验报告

实验报告课程名称程序设计实验项目名称数组班级与班级代码14级计算机科学与技术1班实验室名称或课室SS1332专业计算机科学与技术任课教师学号姓名实验日期20xx年月日广东商学院教务处制指导教师评分后学年论文交院...

C语言实验报告数组

实验报告实验课程名称高级C语言程序设计实验项目名称数组年级09级专业数学学生姓名李军学号0907010170理学院实验时间20xx年4月22日学生实验室守则一按教学安排准时到实验室上实验课不得迟到早退和旷课二进...

C++ 实验数组、指针与字符串实验报告

贵州大学实验报告学院计算机科学与信息专业通信工程班级注各学院可根据教学需要对以上栏木进行增减表格内容可根据内容扩充

厦门理工学院+C语言+实验5_数组

C语言程序设计实验报告实验序号5实验项目数组附源程序清单1includeltstdiohgtintmaininta1000i0b521forilt1000iaii1a00whileb52lt1000ifab52...

VB数组应用实验报告

实验名称VB程序设计实验类别课程上机适用专业姓名徐申毅实验报告一内容数组及应用二目的1掌握一维数组和二维数组的定义及引用方法2掌握动态数组的定义和使用3能应用数组解决一些常见问题如复杂统计平均值排序和查找等三设...

实验总结报告-串和数组

实验总结报告栈和队列学号姓名时间一目的1做实验的目的22撰写实验报告的目的二内容1说明实验次数及实验内容本次实验用一个实验课时完成实验内容1编写函数StrAssignStrCopyStrLenthStrComp...

JAVA字符串数组实验报告

西安邮电大学计算机学院课内实验报告实验名称字符串和数组专业名称班级学生姓名学号8指导教师张荣实验日期20xx年10月16日20xx年10月16日一实验目的及实验环境1掌握一维和多维数组的声明分配空间以及初始化2...

数组实验报告(32篇)