数组实验
数组及应用实验报告

一、实验目的1. 理解数组的定义和概念,掌握数组的声明、初始化和访问方法。
2. 掌握一维数组和二维数组的操作,包括元素的赋值、排序、查找等。
3. 熟悉数组在实际编程中的应用,如排序算法、查找算法等。
4. 培养解决实际问题的能力,提高编程水平。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 语言:C/C++三、实验内容1. 一维数组的声明、初始化和访问2. 一维数组的排序(冒泡排序、选择排序、插入排序)3. 一维数组的查找(线性查找、二分查找)4. 二维数组的声明、初始化和访问5. 二维数组的操作(求和、求平均值、查找最大值和最小值)6. 数组在实际编程中的应用(如冒泡排序算法实现、字符串匹配)四、实验步骤1. 一维数组的声明、初始化和访问(1)声明一个整型一维数组,如int arr[10];(2)初始化数组,如arr[0] = 1, arr[1] = 2, ...;(3)访问数组元素,如printf("%d", arr[i]);2. 一维数组的排序(1)冒泡排序:比较相邻元素,如果逆序则交换,重复执行,直到排序完成。
(2)选择排序:每次选择未排序部分的最小(或最大)元素,放到已排序部分的末尾。
(3)插入排序:将未排序的元素插入到已排序部分的合适位置。
3. 一维数组的查找(1)线性查找:逐个比较数组元素,找到目标元素则返回其位置。
(2)二分查找:在有序数组中,先确定中间元素,再与目标元素比较,根据比较结果缩小查找范围。
4. 二维数组的声明、初始化和访问(1)声明一个整型二维数组,如int arr[3][4];(2)初始化数组,如arr[0][0] = 1, arr[0][1] = 2, ...;(3)访问数组元素,如printf("%d", arr[i][j]);5. 二维数组的操作(1)求和:遍历二维数组,将所有元素相加。
数组实验报告

数组实验报告数组实验报告引言:在计算机科学中,数组是一种重要的数据结构,它可以存储一系列相同类型的数据。
在本次实验中,我们将通过实际操作来深入了解数组的特性、使用方法以及相关的算法。
一、数组的定义与基本操作1.1 数组的定义数组是一种线性数据结构,由一组连续的内存单元组成,用于存储相同类型的数据。
数组的长度是固定的,一旦定义后无法改变。
1.2 数组的基本操作1.2.1 创建数组在大多数编程语言中,我们可以通过声明数组变量并指定长度来创建数组。
例如,在C语言中,可以使用以下语句来创建一个长度为10的整型数组:int array[10];1.2.2 访问数组元素数组的每个元素都有一个唯一的索引,从0开始递增。
我们可以通过索引来访问数组中的元素。
例如,要访问上述创建的数组的第一个元素,可以使用以下语句:int firstElement = array[0];1.2.3 修改数组元素我们可以通过索引来修改数组中的元素。
例如,要将第一个元素修改为5,可以使用以下语句:array[0] = 5;1.2.4 数组的长度数组的长度是在创建数组时指定的,可以通过数组的属性或方法来获取数组的长度。
例如,在Java中,可以使用以下语句获取数组的长度:int length = array.length;二、数组的应用2.1 数组的优势数组具有以下优势:- 快速访问:由于数组的元素在内存中是连续存储的,因此可以通过索引快速访问元素,时间复杂度为O(1)。
- 内存效率:数组的元素占用连续的内存空间,不需要额外的指针或引用,相比其他数据结构更加节省内存。
2.2 数组的应用场景数组广泛应用于各个领域,包括但不限于以下场景:- 数据存储:数组可以用于存储大量的数据,例如学生成绩、图像像素等。
- 算法实现:许多算法的实现需要使用数组,例如排序算法、搜索算法等。
- 数据结构的基础:许多其他数据结构,如队列、栈、矩阵等,都可以通过数组来实现。
数组实验报告反思心得

一、实验背景本次实验旨在通过学习数组的相关知识,掌握数组的定义、初始化、赋值、引用等方法,以及数组的操作和应用。
通过本次实验,我对数组有了更深入的理解,同时也对编程思维和算法设计有了更全面的提升。
二、实验过程1. 实验一:一维数组的定义与初始化实验过程中,我首先学习了如何定义一维数组,以及如何对数组进行初始化。
通过实验,我掌握了以下知识:(1)一维数组的定义格式:类型符数组名[常量表达式];(2)一维数组的初始化方法:在定义数组时,可以在方括号内指定数组的长度,并为数组元素赋初值。
2. 实验二:二维数组的定义与初始化在实验二,我学习了二维数组的定义与初始化。
通过实验,我掌握了以下知识:(1)二维数组的定义格式:类型符数组名[常量表达式1][常量表达式2];(2)二维数组的初始化方法:可以在定义数组时,指定数组的行数和列数,并为数组元素赋初值。
3. 实验三:数组元素的引用与赋值在实验三,我学习了如何引用数组元素,以及如何为元素赋值。
通过实验,我掌握了以下知识:(1)数组元素的引用方法:数组名[下标];(2)数组元素的赋值方法:使用赋值运算符“=”。
4. 实验四:数组的操作与应用在实验四,我学习了数组的操作与应用,包括冒泡排序、选择排序等。
通过实验,我掌握了以下知识:(1)冒泡排序算法:通过比较相邻元素的大小,将较大的元素交换到后面,直到整个数组有序。
(2)选择排序算法:通过比较相邻元素的大小,选择最小(或最大)的元素放到数组的起始位置,然后继续对剩余的元素进行排序。
三、实验反思1. 数组的定义与初始化在实验过程中,我深刻体会到了数组在编程中的重要性。
数组作为一种数据结构,可以有效地存储和操作一组具有相同数据类型的元素。
通过对数组的定义与初始化,我学会了如何创建一个符合实际需求的数组,并为数组元素赋初值。
2. 数组元素的引用与赋值在实验过程中,我学会了如何引用数组元素,以及如何为元素赋值。
这使我更加熟练地掌握了数组的使用方法,为后续的编程实践打下了基础。
2024年大一c语言数组实验心得

2024年大一c语言数组实验心得在我踏入大学校门,迎接我的第一门编程语言课程就是C语言。
这门课程对我而言,既是挑战也是机遇。
挑战在于,这是我之前从未接触过的领域,充满了未知与困惑;机遇则在于,通过这门课程,我得以领略编程的魅力,开启了与计算机世界的对话。
在C语言的学习中,数组实验无疑是一个重要的里程碑,它不仅加深了我对数组概念的理解,也锻炼了我的编程实践能力。
一、实验目的与意义在开始学习数组之前,我认为数组不过是一堆数据的集合,没有什么特别之处。
然而,通过数组实验,我逐渐认识到数组在编程中的重要地位。
数组不仅可以高效地存储和处理大量数据,还能够通过索引快速访问和修改数据。
在实验中,我通过编写程序来操作数组,感受到了数组在处理数据时的便利性和灵活性。
二、实验过程与体验在实验过程中,我遇到了不少挑战。
最初,我对数组的定义和初始化感到困惑,不知道如何将数据正确地存储在数组中。
通过查阅资料和请教同学,我逐渐掌握了数组的基本语法和用法。
接着,我开始尝试编写一些简单的程序来操作数组,如排序、查找等。
这些程序虽然看似简单,但在编写过程中却不断暴露出我的错误和不足。
有时我会因为一个小小的语法错误而调试半天,有时则是因为逻辑错误而让程序无法正常运行。
但是,正是这些错误和不足,促使我不断地反思和改进,最终实现了正确的程序功能。
在实验中,我印象最深刻的是一次编写冒泡排序程序的经历。
冒泡排序是一种简单的排序算法,但在编写过程中我却遇到了诸多困难。
最初,我对冒泡排序的原理理解不清,导致程序逻辑混乱。
后来,我通过查阅资料和反复思考,逐渐明白了冒泡排序的原理和步骤。
在编写程序时,我也特别注意了细节和边界条件,确保程序能够正确处理各种情况。
最终,我成功地实现了冒泡排序程序,并感受到了编程的乐趣和成就感。
三、实验收获与思考通过数组实验,我不仅掌握了数组的基本语法和用法,还学会了如何运用数组来解决实际问题。
同时,我也深刻体会到了编程的严谨性和细致性。
数组实验报告结果

一、实验目的1. 理解数组的概念和基本操作。
2. 掌握数组的创建、初始化、赋值、遍历、查找、排序等基本操作。
3. 培养动手实践能力和问题解决能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse三、实验内容本次实验主要对数组进行以下操作:1. 创建数组2. 初始化数组3. 赋值操作4. 遍历数组5. 查找操作6. 排序操作四、实验步骤1. 创建数组```javaint[] array = new int[10]; // 创建一个长度为10的整型数组```2. 初始化数组```javaint[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 创建并初始化一个长度为10的整型数组```3. 赋值操作```javaarray[0] = 10; // 将数组第一个元素的值赋为10```4. 遍历数组```javafor (int i = 0; i < array.length; i++) {System.out.println(array[i]); // 遍历数组并打印每个元素的值}```5. 查找操作```javaint target = 5; // 查找目标值int index = -1; // 存储目标值在数组中的索引for (int i = 0; i < array.length; i++) {if (array[i] == target) {index = i;break;}}if (index != -1) {System.out.println("找到目标值:" + target + ",索引为:" + index); } else {System.out.println("未找到目标值:" + target);}```6. 排序操作```javaint[] array = {5, 3, 8, 2, 1};for (int i = 0; i < array.length - 1; i++) {for (int j = 0; j < array.length - 1 - i; j++) {if (array[j] > array[j + 1]) {int temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}System.out.println("排序后的数组:");for (int i = 0; i < array.length; i++) {System.out.print(array[i] + " ");}```五、实验结果与分析1. 创建数组:成功创建了一个长度为10的整型数组。
C语言实验五实验报告——数组

C语言实验五实验报告——数组一、实验目的:1.了解数组的概念和基本使用方法;2.掌握一维数组和二维数组的定义、初始化、赋值及基本运算实现;二、实验内容与方法1.理论部分数组是一些具有相同类型的数据元素按一定顺序排列组合而成的集合,在程序设计中它是一个变量列表,由若干相同数据类型的元素组成。
通常用一个名字和一个下标来表示,下标可理解为数组元素在数组中的位置编号。
数组的特点:数组是根据顺序排列的元素的集合;所有的元素必须是相同类型。
数组的定义方法:1. 定义数组,数组元素类型 + 数组名[元素的个数];2. 元素的个数必须是整型常量或变量,定义时必须明确、指定元素的个数;3. 声明一个数组时,除了要指定数组的类型外,还要指定数组的名称;4. 数组定义完后,需要对其中的每个元素进行初始化。
可以在定义数组时赋初值,也可以通过赋值符号,对数组元素逐个进行赋值。
数组的初始化:1. 元素个数之间用逗号分开,最后1个元素后无逗号;2. 支持部分元素初始化;3. 定义和初始化可以一步完成。
二维数组数组可分为一维和多维数组。
一维数组可以看作是包含多个元素的向量,而二维数组可以看做是包含了多个一维数组的矩阵。
二维数组有行号和列号,因此,它同样需要两个下标。
数组元素类型数组名[行数][列数];数组元素类型数组名[ ][ ] = { {元素1, 元素2, ……}, {元素1, 元素2, ……}, ……{元素1, 元素2, ……}}2.实验代码**问题1:**定义一个一维数组a,包含有5个元素,分别为1,2,3,4,5;**问题2:**定义一个一维数组a,接收用户从键盘输入的5个数值,分别打印存储的各个元素。
三、实验结果与分析结果分析:定义了一个5个元素的一维数组a,并初始化了各个元素的值,其元素分别为1,2,3,4,5.循环遍历一遍数组a,并打印数组元素。
程序执行正常。
3.针对问题3:定义一个二维数组a,由4行3列组成,每个元素初始化为0,打印存储的各个元素;程序运行结果如下:四、实验总结:该实验主要是通过对C语言数组的理论知识和基本操作进行练习,加深了对数组的了解和掌握。
数组实验实验报告

数组实验实验报告本文介绍的是一个数组实验的实验报告,介绍了实验的目的,实验内容、方法、结果以及分析,希望能为读者提供一些参考和帮助。
一、实验目的:1、了解数组的定义和基本概念;2、掌握数组元素的访问和操作;3、了解并掌握多维数组的定义和基本操作;4、掌握对数组进行排序的方法;5、学会用数组的方式实现一些常见的算法。
二、实验内容实验内容包括以下几个部分:1、数组定义和使用2、数组元素的访问和操作3、多维数组的定义和基本操作4、数组排序5、使用数组实现一些算法三、实验方法1、实验仪器和设备计算机、开发工具:Visual Studio2、实验步骤1)实现数组的定义和使用数组是一组有序的数据集合,可以是同类型,也可以是不同类型的数据。
可以通过定义数组可以简化程序的编写,提高程序的效率。
定义数组:通过关键字type或者var或者const,再加上数组名以及元素的类型等,来定义数组。
如下所示:type arrayName=arrayType[startIndex..endIndex] of dataType;(类型、数组名、数组元素的下标的范围、数据类型)vararrayNum:array[1..5] of integer;//定义5个元素的整数数组,并赋初值2)数组元素的访问和操作数组元素的访问:通过数组的下标来访问数组元素,下标从0开始,表示第一个元素,一次立1.如下所示:arrayName[index]:elementType; //数组名[下标]arrayNum[1]:=10;//将数组的第二个元素赋值成103)多维数组的定义和基本操作多维数组就是数组中包含了数组,具体的定义方式如下:typeMatrix=array[1..3,1..3] of integer;//定义一个3x3的整数矩阵varA,B: Matrix;A[1,1];//访问矩阵中的元素A[1,2]:=5;//给矩阵中的某个元素赋值4)数组排序排序是程序设计中最基本的算法之一,有很多种不同的排序算法。
关于数组的实验报告

一、实验目的1. 理解数组的概念和特点,掌握数组的定义、声明、初始化和访问方法;2. 掌握一维数组和二维数组的区别和应用场景;3. 学习数组在实际编程中的应用,提高编程能力。
二、实验内容1. 实验一:一维数组的定义、初始化和访问(1)定义一个整型一维数组,包含10个元素;(2)初始化数组,为每个元素赋值;(3)遍历数组,输出每个元素的值;(4)修改数组中某个元素的值;(5)查找数组中特定值的元素索引。
2. 实验二:二维数组的定义、初始化和访问(1)定义一个整型二维数组,包含3行4列;(2)初始化数组,为每个元素赋值;(3)遍历数组,输出每个元素的值;(4)修改数组中某个元素的值;(5)查找数组中特定值的元素索引。
3. 实验三:数组在实际编程中的应用(1)编写一个程序,计算10个整数的平均值;(2)编写一个程序,找出10个整数中的最大值和最小值;(3)编写一个程序,实现冒泡排序算法,对10个整数进行排序;(4)编写一个程序,实现二维数组的转置。
三、实验步骤1. 实验一:(1)定义整型一维数组int arr[10];(2)初始化数组:for(int i=0; i<10; i++) arr[i] = i+1;(3)遍历数组:for(int i=0; i<10; i++) printf("%d ", arr[i]);(4)修改数组中某个元素的值:arr[5] = 100;(5)查找数组中特定值的元素索引:for(int i=0; i<10; i++) if(arr[i] == 5) printf("Index: %d\n", i);2. 实验二:(1)定义整型二维数组int arr[3][4];(2)初始化数组:for(int i=0; i<3; i++) for(int j=0; j<4; j++) arr[i][j] = i4+j+1;(3)遍历数组:for(int i=0; i<3; i++) for(int j=0; j<4; j++) printf("%d ", arr[i][j]);(4)修改数组中某个元素的值:arr[1][2] = 100;(5)查找数组中特定值的元素索引:for(int i=0; i<3; i++) for(int j=0; j<4; j++) if(arr[i][j] == 5) printf("Index: (%d, %d)\n", i, j);3. 实验三:(1)计算10个整数的平均值:int sum = 0, avg; for(int i=0; i<10; i++) sum += arr[i]; avg = sum / 10;(2)找出10个整数中的最大值和最小值:int max = arr[0], min = arr[0];for(int i=1; i<10; i++) if(arr[i] > max) max = arr[i]; if(arr[i] < min) min = arr[i];(3)冒泡排序算法:for(int i=0; i<9; i++) for(int j=0; j<9-i; j++)if(arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; }(4)二维数组转置:int arrT[4][3]; for(int i=0; i<3; i++) for(int j=0;j<4; j++) arrT[j][i] = arr[i][j];四、实验结果与分析1. 实验一和实验二成功完成了数组的定义、初始化、访问和修改,验证了数组的基本操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<stdio.h>
void main(void)
{
int a[10] = {27, 13, 5, 32, 23, 3, 17, 43, 55, 39};
void sort(int [],int);
(1).矩阵转置程序:
#include<stdio.h>
#define M 3
#define N 4
int change(int a[M][N]);
int main()
{
int a[M][N];
int i,j;
printf("Please input %d numbers:\n",M*N);
for(i=0;i<M;i++)
for(k = 1; k <= N; k++){
for(;a[j]>10;j++);
if(j++>=(M-1)) j = 0;
}
b[M-i] = j? a[j-1]: a[M-1] ;
if(j){
b[M-i]=a[j-1];
a[j-1]=11;
}
else
{
for(t=1;a[M-t]>10;t++);
{
a[i]=m&0x1;
m>>=1;
}
printf("\n");
for(j=sizeof(int)*8;j>=0;j--)
printf("%d",a[j]);
printf("\n");
}
运行结果:
(3).学生成绩记录,排序和查找:
#include <stdio.h>
#define N 3
int BinarySearch(int a[],int x,int n);
3.跟踪调试题
#include<stdio.h>
voidstrncat(char[],char[],int);
void main(void)
{
char a[50]="Theadoptedsymbolis",b[27]="abcdefghijklmnopqrstuvwxyz";
strncat(a, b, 4);
int i;
sort(a[0],10);
for(i = 0; i < 10; i++)
printf("%6d",a[i]);
printf("\n");
}
void sort(int b[], int n)
{
int i, j, t;
for (i = 0; i < n - 1; i++)
for ( j = 0; j < n - i - 1; j++)
printf("%6d",a[i]);
printf("\n");
return 0;
}
void sort(int b[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(b[j]>b[j+1])
t=b[j],b[j]=b[j+1],b[j+1]=t;
}
printf("\n");
}
return 0;
}
运行结果:
(2).输出整数的二进制表示:
#include<stdio.h>
int main()
{
int m,i,j;
char a[sizeof(int)*8];
printf("Input a number:");
scanf("%d",&m);
for(i=0;i<=sizeof(int)*8;i++)
return 0;
}
(2)源程序修改、替换
#include<stdio.h>
#define M 10
#define N 3
int main(void)
{
int a[M], b[M];
int i, j, k,t;
for(i = 0; i<M; i++)
a[i]= i+1;
for(i = M, j = 0; i > 1; i--){
}
printf("\n\n\n");
printf("the changed juzhen is:\n\n");
change(a);
return 0;
}
int change(int a[M][N])
{
int m,n;
for(n=0;n<N;n++)
{
for(m=0;m<M;m++)
{
printf("%d\t",a[m][n]);
}
运行结果:
2.源程序完善、修改、替换题
(1)源程序完善
#include<stdio.h>
#define M 100
#define N 3
int main()
{
int a[M], b[M];
int i,j,k;
for(i=0;i<M;i++)
a[i]=i+1;
for(i=M,j=0;i>1;i--)
if(b[j]<b[j+1])
t = b[j],b[j] = b[j+1],b[j+1] = t;
}
2.源程序完善、修改、替换题
(1)下面程序用于求解瑟夫问题。M个人围成一圈,从第一个人开始依次从1至N循环报数,每当报数为N时报数人出圈,直到圈中只剩下一个人为止。请在下划线处填写合适的代码来完善该程序。
三、实验步骤及结果
1.源程序改错题
修改后的程序如下:
#include<stdio.h>
void sort(int b[],int);
int main()
{
int a[10]={27,13,5,32,23,3,17,43,55,39};
int i;
sort(a,10);
for(i=0; i<10;i++)
C语言程序设计实验报告
实验名称数组实验
一、实验目的
1.掌握数组的说明、初始化和使用。
2.掌握一维数组作为函数参数时实参和形参的用法。
3.掌握字符串处理函数的设计,包括串操作函数及数字串与数之间转换函数实现算法。
4.掌握基于分治策略的二分查找算法和选择法排序算法的思想,以及相关算法的实现二、实验任务
1.源程序改错题
{
for(j=0;j<N;j++)
{
scanf("%d",&a[i][j]);
}
printf("\n");
}
printf("the original juzhen is:\n\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%d\t",a[i][j]);
printf("\n");
for(;front<=back;middle=(front+back)/2){
if(x==a[middle])
return middle;
printf("%s\n",a);
return 0;
}
void strncat(char s[],char t[],int n)
{
int i=0,j;
while(s[i])
i++;
for(j=0;j<n&&t[j];)
s[i++]=t[j++];
s[i] = '\0';
}
最后的运行结果:
4.编程设计题
if(++j > i - 1) j = 0;
b[M-i] = j?:;
if(j)
for(k = --j; k < i; k++)
;
}
for(i = 0;i < M–1; i++)
printf(“%6d”, b[i]);
printf(“%6d\n”, a[0]);
}
(2)上面程序用数组元素的值表示圈中人的编号,每当有人出圈时都要压缩数组,这种算法不够精炼。如果采用做标记的办法,即每当有人出圈时对相应数组元素做标记,省掉压缩数组的时间,这样处理效率更高一些。请采用做标记的办法修改(1)中程序,使修改后的程序与(1)中程序具有相同的功能。
printf("%s\n",a);
}
voidstrncat(char s[],char t[], int n)
{
int i = 0, j;
while(s[i++]);