综合性、设计性实验报告(数组应用)4维数组
数组实验报告
![数组实验报告](https://img.taocdn.com/s3/m/43585d75f011f18583d049649b6648d7c0c70872.png)
数组实验报告数组实验报告引言:在计算机科学中,数组是一种重要的数据结构,它可以存储一系列相同类型的数据。
在本次实验中,我们将通过实际操作来深入了解数组的特性、使用方法以及相关的算法。
一、数组的定义与基本操作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 数组的应用场景数组广泛应用于各个领域,包括但不限于以下场景:- 数据存储:数组可以用于存储大量的数据,例如学生成绩、图像像素等。
- 算法实现:许多算法的实现需要使用数组,例如排序算法、搜索算法等。
- 数据结构的基础:许多其他数据结构,如队列、栈、矩阵等,都可以通过数组来实现。
数组的应用实验报告
![数组的应用实验报告](https://img.taocdn.com/s3/m/88f064bd534de518964bcf84b9d528ea81c72fd8.png)
一、实验目的1. 理解数组的定义和基本概念。
2. 掌握数组的创建、初始化、访问和修改方法。
3. 学会使用数组进行简单的数据处理和分析。
4. 培养编程实践能力和逻辑思维能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:C++3. 开发工具:Visual Studio 2019三、实验内容1. 数组的定义和创建2. 数组的初始化3. 数组的访问和修改4. 数组的应用实例四、实验步骤1. 数组的定义和创建(1)在C++中,使用数组需要先定义数组的类型、大小和名称。
(2)示例代码:```cpp#include <iostream>using namespace std;int main() {int arr[5]; // 创建一个大小为5的整型数组return 0;}```2. 数组的初始化(1)在定义数组时,可以直接给数组赋初值。
(2)示例代码:```cpp#include <iostream>using namespace std;int main() {int arr[5] = {1, 2, 3, 4, 5}; // 初始化数组return 0;}```3. 数组的访问和修改(1)使用下标访问数组元素。
(2)示例代码:```cpp#include <iostream>using namespace std;int main() {int arr[5] = {1, 2, 3, 4, 5};cout << "数组第一个元素:" << arr[0] << endl; // 输出数组第一个元素arr[2] = 10; // 修改数组第三个元素的值return 0;}```4. 数组的应用实例(1)冒泡排序冒泡排序是一种简单的排序算法,通过比较相邻元素的值,如果它们的顺序错误就把它们交换过来。
示例代码:```cpp#include <iostream>using namespace std;void bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {// 交换两个元素的值int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}int arr[] = {64, 34, 25, 12, 22, 11, 90};int n = sizeof(arr) / sizeof(arr[0]);bubbleSort(arr, n);cout << "排序后的数组:\n";for (int i = 0; i < n; i++)cout << arr[i] << " ";cout << endl;return 0;}```(2)数组存储学生信息假设我们要存储一个班级的学生信息,包括学号、姓名、年龄和成绩。
数组实验实验报告
![数组实验实验报告](https://img.taocdn.com/s3/m/940c627f2f3f5727a5e9856a561252d380eb203c.png)
数组实验实验报告本文介绍的是一个数组实验的实验报告,介绍了实验的目的,实验内容、方法、结果以及分析,希望能为读者提供一些参考和帮助。
一、实验目的: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)数组排序排序是程序设计中最基本的算法之一,有很多种不同的排序算法。
C语言数组的应用实验报告
![C语言数组的应用实验报告](https://img.taocdn.com/s3/m/822325ad5ff7ba0d4a7302768e9951e79b8969a2.png)
C语言数组的应用实验报告实验题目:C语言数组的应用一、实验目的:1.理解数组的定义和使用方法;2.学会利用数组实现基本算法;3.了解数组在实际应用中的常见场景及解决方法。
二、实验原理1.数组是一种数据结构,可以存储一组相同类型的数据;2.数组的元素可以通过索引(下标)来访问和修改;3.数组的长度必须在定义时确定,且长度不能改变。
三、实验内容本次实验共包含三个不同的实验题目,下面将逐一介绍每个实验的内容和具体步骤。
实验一:计算数组元素的和与平均值1.题目描述:编写一个程序,计算一个包含n个元素的整型数组中所有元素的和与平均值;2.实验步骤:1) 定义一个整型数组arr,并给数组赋初值;2) 声明一个整型变量sum,并将其初值设为0;3) 利用for循环遍历数组arr,将每个元素累加到sum中;4) 计算平均值avg,将sum除以数组长度;5)打印输出数组的和与平均值;6)用多组数据进行测试,验证程序的正确性。
实验二:查找数组中的最大值和最小值1.题目描述:编写一个程序,找出一个包含n个元素的整型数组中的最大值和最小值;2.实验步骤:1) 定义一个整型数组arr,并给数组赋初值;2) 声明两个整型变量max和min,并将它们的初值设为数组的第一个元素;3) 利用for循环遍历数组arr,对比每个元素与max和min的大小,更新max和min的值;4)打印输出数组的最大值和最小值;5)用多组数据进行测试,验证程序的正确性。
实验三:矩阵转置1.题目描述:编写一个程序,对给定的二维数组进行转置操作;2.实验步骤:1) 定义一个二维整型数组matrix,并给数组赋初值;2) 声明一个与matrix规模相反的二维整型数组transpose,并将其所有元素初始化为0;3) 利用嵌套for循环遍历matrix数组,将每个元素的行列进行互换,并赋值给transpose数组;4) 打印输出转置后的transpose数组;5)用多组数据进行测试,验证程序的正确性。
多维数组使用实验报告
![多维数组使用实验报告](https://img.taocdn.com/s3/m/a1a90f5a366baf1ffc4ffe4733687e21af45ff99.png)
一、实验目的1. 理解多维数组的概念和特点。
2. 掌握多维数组的创建、访问和操作方法。
3. 学会使用多维数组解决实际问题。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容1. 多维数组的创建与初始化2. 多维数组的访问与索引3. 多维数组的操作4. 多维数组在实际问题中的应用四、实验步骤1. 多维数组的创建与初始化```pythonimport numpy as np# 创建一个2维数组array_2d = np.array([[1, 2, 3], [4, 5, 6]])# 创建一个3维数组array_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])# 创建一个4维数组array_4d = np.array([[[[1, 2], [3, 4]], [[5, 6], [7, 8]]], [[[9, 10], [11, 12]], [[13, 14], [15, 16]]]])```2. 多维数组的访问与索引```python# 访问2维数组中的元素print(array_2d[0, 1]) # 输出:2# 访问3维数组中的元素print(array_3d[0, 1, 1]) # 输出:4# 访问4维数组中的元素print(array_4d[0, 0, 0, 1]) # 输出:2```3. 多维数组的操作```python# 获取数组的形状print(array_2d.shape) # 输出:(2, 3)# 获取数组的类型print(array_2d.dtype) # 输出:int64# 索引切片print(array_2d[0:2, 1:3]) # 输出:[[2 3] [5 6]] # 数组转置print(array_2d.T) # 输出:[[1 4] [2 5] [3 6]] # 数组求和print(np.sum(array_2d)) # 输出:21# 数组求平均值print(np.mean(array_2d)) # 输出:5.5```4. 多维数组在实际问题中的应用```python# 计算二维矩阵的乘法matrix_a = np.array([[1, 2], [3, 4]])matrix_b = np.array([[5, 6], [7, 8]])result = np.dot(matrix_a, matrix_b)print(result) # 输出:[[19 22] [43 50]]# 计算矩阵的逆matrix_c = np.array([[1, 2], [3, 4]])result = np.linalg.inv(matrix_c)print(result) # 输出:[[ 2. -1.]# [-3. 1.]]```五、实验总结通过本次实验,我们对多维数组有了更深入的了解。
数组程序设计实验报告
![数组程序设计实验报告](https://img.taocdn.com/s3/m/36cbed2c59fafab069dc5022aaea998fcd224046.png)
数组程序设计实验报告数组程序设计实验报告引言在计算机科学领域,数组是一种重要的数据结构,用于存储和操作大量相同类型的数据。
数组的使用广泛,无论是在算法设计还是软件开发中,都扮演着重要的角色。
本实验旨在通过编写数组程序,探索数组的特性和应用。
一、数组的定义与初始化数组是一种由相同类型的元素组成的集合,每个元素都可以通过索引访问。
在程序中,我们可以通过声明数组变量来定义一个数组。
例如,int numbers[5]就定义了一个包含5个整数的数组。
数组的初始化可以在声明时进行,也可以在后续的代码中进行。
二、数组的基本操作1. 访问数组元素数组元素可以通过索引来访问,索引从0开始。
例如,numbers[0]表示数组numbers的第一个元素。
通过循环遍历数组,我们可以逐个访问数组中的元素。
2. 修改数组元素数组元素的值可以通过索引进行修改。
例如,numbers[0] = 10将把数组numbers的第一个元素的值修改为10。
3. 数组的长度数组的长度是指数组中元素的个数。
在C语言中,可以通过sizeof运算符来获取数组的长度。
例如,sizeof(numbers) / sizeof(numbers[0])将返回数组numbers的长度。
三、数组的应用1. 数组的排序数组排序是数组程序设计中常见的任务之一。
常见的排序算法包括冒泡排序、选择排序和插入排序。
通过对数组元素进行比较和交换,可以将数组按照升序或降序排列。
2. 数组的搜索数组搜索是另一个常见的任务,它涉及在数组中查找特定的元素。
线性搜索是一种简单直观的搜索方法,它逐个比较数组元素,直到找到目标元素或搜索完整个数组。
二分搜索是一种更高效的搜索方法,它要求数组事先有序。
3. 多维数组除了一维数组,我们还可以使用多维数组来存储和处理更复杂的数据。
二维数组是最常见的多维数组形式,它可以看作是一个表格或矩阵。
通过使用行和列的索引,我们可以访问和修改二维数组中的元素。
数组实验报告的总结
![数组实验报告的总结](https://img.taocdn.com/s3/m/62f0319ff605cc1755270722192e453610665bd0.png)
一、实验背景随着计算机科学的不断发展,数组作为一种基本的数据结构,在编程中得到了广泛的应用。
为了更好地理解数组的原理和特性,我们进行了数组实验,通过实际操作和理论分析,加深对数组概念的理解。
二、实验目的1. 理解数组的定义、特点和应用场景;2. 掌握数组的创建、访问、修改和删除等基本操作;3. 分析数组在编程中的优势与不足,提高编程能力。
三、实验内容1. 数组的定义与特点数组是一种有序集合,用于存储具有相同数据类型的元素。
数组的元素在内存中连续存放,通过索引访问元素。
数组具有以下特点:(1)元素类型相同:数组中所有元素的数据类型必须相同;(2)连续存储:数组元素在内存中连续存放,便于提高访问速度;(3)索引访问:通过索引快速访问数组元素;(4)动态创建:根据需要动态创建数组,节省内存空间。
2. 数组的创建与初始化在Java中,创建数组主要有以下两种方式:(1)声明数组:int[] array = new int[10]; // 创建一个长度为10的整型数组(2)声明并初始化:int[] array = {1, 2, 3, 4, 5}; // 创建并初始化一个包含5个整数的数组3. 数组的基本操作(1)访问元素:通过索引访问数组元素,如array[0]表示访问第一个元素;(2)修改元素:直接通过索引修改数组元素,如array[1] = 10;;(3)删除元素:在Java中,无法直接删除数组元素,但可以通过重新排序或覆盖元素来实现;(4)查找元素:通过遍历数组,比较元素值,找到目标元素。
4. 数组的应用实例(1)冒泡排序:通过比较相邻元素的大小,实现数组的升序排序;(2)查找算法:如二分查找、线性查找等,通过遍历数组,找到目标元素;(3)动态规划:利用数组存储中间结果,实现复杂问题的求解。
四、实验结果与分析1. 通过实验,我们掌握了数组的定义、特点和应用场景,加深了对数组概念的理解;2. 实验过程中,我们学会了创建、访问、修改和删除数组元素等基本操作,提高了编程能力;3. 在实际应用中,数组在排序、查找、动态规划等方面具有广泛的应用,为编程提供了便利。
数据结构课程设计报告(四维数组应用)
![数据结构课程设计报告(四维数组应用)](https://img.taocdn.com/s3/m/755fb8efaef8941ea76e056a.png)
数据结构课程设计报告(原创)设计题目:数组应用专业班级学生学号指导教师时间目录一、设计任务 (3)二、软件环境 (4)三、程序源代码 (4)四、算法设计思想及流程图 (11)4.1算法设计思想 (11)4.2流程图 (13)4.2.1主要功能模块流程图 (13)4.2.2输入函数流程图 (13)4.2.3输出函数流程图 (14)4.2.4查找函数流程图 (15)五、输入及相应运行结果 (16)六、收获及体会 (19)七、参考文献 (20)八、附录(部分截图) (21)一、设计任务题目:数组应用功能:按照行优先顺序将输入的数据建成4维数组,再按照列优先顺序输出结果,给出任意处的元素值,并给出对应的一维数组中的序号。
分步实施:1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2.完成最低要求:完成第一个功能;3.进一步要求:进一步完成后续功能。
有兴趣的同学可以自己扩充系统功能。
要求:1)界面友好,函数功能要划分好2)总体设计应画一流程图3)程序要加必要的注释4)要提供程序测试方案5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
二、软件环境V C ++6.0三、程序源代码#include<stdio.h>#include<malloc.h>#include<stdlib.h>#define M 100typedef struct{int data;int wei[4];}node;typedef struct{node dat[M];int max_meiwei[4];//每维的长度int m;}shu;void menu(shu *G);void input(shu *G);void output(shu *G);void find(shu *G);void introduce(shu *G); //函数声明/***********************************************************/void input(shu *G)// 输入按行{int i,j,k,l,h,b,n;G->m=1;for(i=0;i<4;i++)//依次输入第一、二、三、四维的长度{printf("\t\t\t请输入第%d维的长度:",i+1);scanf("%d",&G->max_meiwei[i]);G->m*=G->max_meiwei[i]; //维数长度积即为数据个数}n=0;for(i=0;i<G->max_meiwei[0];i++)//坐标{for(j=0;j<G->max_meiwei[1];j++)//初{for(k=0;k<G->max_meiwei[2];k++)//始{for(l=0;l<G->max_meiwei[3];l++)//化{G->dat[n].wei[0]=i;G->dat[n].wei[1]=j;G->dat[n].wei[2]=k;G->dat[n].wei[3]=l;n++;}}}}for(n=0;n<G->m;n++)//依次输入各个结点的坐标值{printf("\t\t\t请输入A[");for(b=0;b<4;b++){printf("%d,",G->dat[n].wei[b]);}printf("\b]的值\n");scanf("%d",&G->dat[n].data);}system("pause");menu(G);}/*******************************************************/void output(shu *G)// 输出按列优先顺序{int i,j,b,k,l,h,n;for(i=0;i<G->max_meiwei[3];i++) //先固定第四维,而后由里到外依次输出{for(j=0;j<G->max_meiwei[2];j++){for(k=0;k<G->max_meiwei[1];k++){for(l=0;l<G->max_meiwei[0];l++){printf("\t\t");for(h=0;h<G->m;h++){if(G->dat[h].wei[3]==i && G->dat[h].wei[2]==j && G->dat[h].wei[1]==k && G->dat[h].wei[0]==l){printf("\t%d",G->dat[h].data);}}}printf("\n");}}}printf("\n");system("pause");menu(G);}/*******************************************************//*******************************************************/void find(shu *G) // 给出任意元素值输出对应的一维数组所在的位置{int i,a,k=0,j;system("cls");printf("\n\n\t\t\t 请输入所查值:");scanf("%d",&a);for(i=0;i<G->m;i++){if(a==G->dat[i].data) //逐个比较,找出数组中和所给值相等的数{printf("\n\t\t\4 \4 \4 \4 \4 \4 \4 \4 \4 \4 \4 \4 \4 \4 \\4 \4");printf("\n\t\t\t对应第一维位置为:%d\n",i);printf("\t\t\5 \5 \5 \5 \5 \5 \5 \5 \5 \5 \5 \5 \5 \5 \5 \5\n");k=1;}}if(k==0){printf("\n\t\t\t~~~~(>_<)~~~~ 对不起,您所查询的数不存在!~~~~(>_<)~~~~ \n");printf("\n\t\t\t继续1\n\t\t\t返回2\n\t\t\t请选择:");scanf("%d",&j);if(j==1){find(G);}else if(j==2){menu(G);}}system("pause");menu(G);}/*******************************************************/ void menu(shu *G)//菜单{int i;system("cls");system("color 9a");printf("\t\t\n\n\n\n\n\n");printf("\t\t\n");printf("\t\t╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬\n"); printf("\t\t║**************************************║\n"); printf("\t\t╬* WELCOME *╬\n"); printf("\t\t║**************************************║\n"); printf("\t\t╬* *╬\n"); printf("\t\t║* *║\n"); printf("\t\t╬* ☆输入(press 1) *╬\n"); printf("\t\t║* ★输出(press 2) *║\n"); printf("\t\t║* ☆查找(press 3) *║\n"); printf("\t\t╬* ★退出(press 0) *╬\n"); printf("\t\t║* *║\n"); printf("\t\t║**************************************║\n"); printf("\t\t╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬\n"); printf("\t\t\t请选择");printf("\n\t\t\t");scanf("%d",&i);switch(i){case 1: input(G);break;case 2: output(G);break;case 3: find(G);break;case 0:{system("cls");printf("\n\n");printf("\t\t \n");printf("\t\t\n");printf("\t\t (.@.@) \n");printf("\t\t+-------oOOo-----(_)-----oOOo---------+\n");printf("\t\t||\n");printf("\t\t|再见! 谢谢使用!! |\n");printf("\t\t||\n");printf("\t\t+----------oooO-------Oooo--------------+\n");printf("\n\n");exit(0);break;}default:menu(G);break;}}/*******************************************************//*******************************************************/void introduce(shu *G){int i;system("cls");printf("\n\n\n\n\t\t ☆此系统的功能有☆\n\n");printf("\t\t★按照行优先顺序将输入的数据建成4维数组\n\n");printf("\t\t★按照列优先顺序输出\n\n");printf("\t\t★给出任意处的元素值,查询相应的一维数组的序号\n\n");printf("\n\n\n\t\t按1返回\n");printf("\n\n\t\t按0退出\n");scanf("%d",&i);if(i==1){menu(G);}else if(i==0){exit(0);}}/*******************************************************/main(){int i,j=1;shu *G;G=(shu *)malloc(sizeof(shu)); //开辟一段空间while(j) //利用j来实现while循环{system("cls");system("color 9e");printf("\n\n\n");printf("\t\t┏━━━━━━━━━━━━━━━━━━━┓\n"); printf("\t\t┃* * * * * * * * * * * * * * * * * * * ┃\n"); printf("\t\t┃* ※欢迎使用数组应用系统※* ┃\n"); printf("\t\t┃* * * * ** * * * * * * * * * * * * * * ┃\n"); printf("\t\t┃* * ┃\n"); printf("\t\t┃* * ┃\n"); printf("\t\t┃* ☆☆☆☆☆☆☆☆* ┃\n"); printf("\t\t┃* ★★★★★* ┃\n");printf("\t\t┃* ☆☆☆☆* ┃\n"); printf("\t\t┃* ★★★★* ┃\n"); printf("\t\t┃* ☆☆☆☆* ┃\n"); printf("\t\t┃* ★★★★* ┃\n"); printf("\t\t┃* ☆☆☆☆* ┃\n"); printf("\t\t┃* ★★★★* ┃\n"); printf("\t\t┃* ☆☆* ┃\n"); printf("\t\t┃* * ┃\n"); printf("\t\t┃* * * * * * * * * * * * * * * * * * * ┃\n");printf("\t\t┗━━━━━━━━━━━━━━━━━━━┛\n"); printf("\n\t\t\t\3\3\3\3\3\3\3\3\3 简介 1 \3\3\3\3\3\3\3"); printf("\n\n\n\t\t\t\3\3\3\3\3\3\3\3\3 登录 2 \3\3\3\3\3\3\3"); printf("\n\n\n\t\t\t\3\3\3\3\3\3\3\3\3 退出 3 \3\3\3\3\3\3\3"); printf("\n\t\t\t请选择:");scanf("%d",&i);switch(i){ //case语句,控制输入情况case 1:j=0;introduce(G);break;case 2:j=0;menu(G);break;case 3:j=0;exit(0);default:printf("输入有误,请重新输入"); //增强程序健壮性j=1;}}return 0;}四、算法设计思想及流程图4.1 算法设计思想首先,在定义四维数组的数据类型时,我选择了整型以方便编程及利于数据的输入和输出。
数组应用的实验报告
![数组应用的实验报告](https://img.taocdn.com/s3/m/5c43e242bdd126fff705cc1755270722182e597d.png)
一、实验目的1. 掌握数组的定义、声明、初始化和引用方法。
2. 熟悉数组在数据存储和操作中的优势。
3. 学习并实现一些常用的数组操作,如排序、查找、插入和删除等。
4. 提高编程能力,培养解决实际问题的能力。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C++三、实验内容1. 一维数组的定义、初始化和引用2. 二维数组的定义、初始化和引用3. 数组元素的查找4. 数组元素的排序5. 数组元素的插入和删除四、实验步骤1. 一维数组的定义、初始化和引用(1)定义一个整型一维数组,并初始化前5个元素为1、2、3、4、5。
(2)使用循环遍历数组,输出所有元素。
(3)使用指针遍历数组,输出所有元素。
2. 二维数组的定义、初始化和引用(1)定义一个整型二维数组,并初始化前3行3列的元素。
(2)使用嵌套循环遍历数组,输出所有元素。
(3)使用指针遍历数组,输出所有元素。
3. 数组元素的查找(1)定义一个整型数组,并初始化前10个元素为1、2、3、4、5、6、7、8、9、10。
(2)编写一个函数,用于查找数组中是否存在指定的元素。
(3)在主函数中调用该函数,查找元素5在数组中的位置。
4. 数组元素的排序(1)定义一个整型数组,并初始化前10个元素为1、2、3、4、5、6、7、8、9、10。
(2)编写一个冒泡排序函数,用于对数组进行排序。
(3)在主函数中调用该函数,对数组进行排序,并输出排序后的结果。
5. 数组元素的插入和删除(1)定义一个整型数组,并初始化前10个元素为1、2、3、4、5、6、7、8、9、10。
(2)编写一个插入函数,用于在数组中插入一个新元素。
(3)编写一个删除函数,用于删除数组中的指定元素。
(4)在主函数中调用插入和删除函数,对数组进行操作,并输出操作后的结果。
五、实验结果与分析1. 一维数组的定义、初始化和引用实验结果:成功定义、初始化和引用了一维数组,并输出所有元素。
数组的应用实验报告
![数组的应用实验报告](https://img.taocdn.com/s3/m/3750317527284b73f2425084.png)
数组的应用电力实10 郝毅(201001000707)上机时间:周二上午一实验目的1 掌握数值型一维数组及二维数组的定义,初始化,以及输入输出的方法。
2 掌握用一维数组及二维数组实现的算法。
3 掌握字符型数组的定义,初始化,以及输入输出的方法。
4 掌握用字符型数组解决字符串问题的方法。
5 掌握常用字符串处理函数。
6 掌握用数组作为函数形参的相关语法规则和编程技巧。
7 掌握在VisualC++集成环境中调试与数组相关程序的方法。
二程序分析1Step1:定义数值型一维数组,及变量n,max,min,I,c;Step2:输入n的值,利用for语句,从键盘输入n个数据,存放在数组中。
Step3;利用for语句遍历n个数组元素,利用max存放最大值,利用min存放最小值;Step4:利用变量c将最大值与a[n-1]交换位置,并将min与a[0]交换位置;Step5;;利用for语句输出数组的前n个元素。
2题Step1:定义数值型一维数组,整型变量s;Step2:利用while语句输入一组数并存放在数组中,同时对该组数求和。
Step3:求出数组预案数的平均值,利用for语句遍历数组元素,并利用计数器计数其中大于等于平均值的实数个数。
Step4:输出计数器的值;3题Step1:定义数值型一维数组,及变量i;Step2:利用for语句遍历从1到100,将所有能被7或11整除的整数存放在数组中。
Step3:利用for语句输出数组元素十个数一行。
4题Step1:定义数值型一维数组,数组长度为50;变量s,i,c=51;Step2:利用while语句将一组互不相同且非0的整数存放在数组中,Step3:输入s的值。
Step4:利用for语句遍历数组元素,找出与s相同的元素,并记录其位置c=I,若不存在,则c=51;Step5:判断c的值,若小于51,则输出i的值,否则输出该数不存在;5题Step1,定义两个一维数组a[8],b[8],并初始化a[20]为{1,2,5, 1,1,3,7,0},及变量c,i,j;Step2:输入变量c的值。
关于数组实验报告总结
![关于数组实验报告总结](https://img.taocdn.com/s3/m/615adb4ff08583d049649b6648d7c1c708a10b9a.png)
一、实验目的1. 熟悉数组的基本概念和操作方法。
2. 掌握数组的初始化、赋值、遍历、排序、查找等基本操作。
3. 培养编程思维和解决问题的能力。
二、实验内容本次实验主要围绕数组展开,包括以下内容:1. 数组的定义与初始化2. 数组元素的赋值与遍历3. 数组的插入与删除4. 数组的排序5. 数组的查找三、实验步骤1. 数组的定义与初始化(1)定义一个整型数组,命名为arr,大小为10。
(2)使用循环初始化数组元素,从0到9。
2. 数组元素的赋值与遍历(1)使用循环遍历数组,打印出每个元素的值。
(2)将数组的第5个元素赋值为20。
3. 数组的插入与删除(1)在数组的第3个位置插入一个新元素,值为15。
(2)删除数组的第6个元素。
4. 数组的排序(1)使用冒泡排序算法对数组进行排序。
(2)使用选择排序算法对数组进行排序。
5. 数组的查找(1)使用线性查找算法查找数组中值为15的元素。
(2)使用二分查找算法查找数组中值为15的元素。
四、实验结果与分析1. 数组的定义与初始化实验结果:成功定义了一个大小为10的整型数组arr,并使用循环初始化了数组元素。
分析:通过定义数组并初始化,我们可以存储一组有序或无序的数据,方便后续操作。
2. 数组元素的赋值与遍历实验结果:成功遍历了数组,并修改了数组的第5个元素。
分析:通过赋值和遍历操作,我们可以对数组元素进行修改和查询,满足实际应用需求。
3. 数组的插入与删除实验结果:成功在数组中插入了一个新元素,并删除了指定位置的元素。
分析:插入和删除操作可以改变数组的大小和元素顺序,满足实际应用场景。
4. 数组的排序实验结果:使用冒泡排序和选择排序算法对数组进行了排序。
分析:排序操作可以使数组元素按照特定顺序排列,便于后续查找和操作。
5. 数组的查找实验结果:使用线性查找和二分查找算法成功找到了数组中值为15的元素。
分析:查找操作可以快速定位到指定元素的位置,提高程序效率。
五、实验总结通过本次实验,我们掌握了数组的基本概念和操作方法,包括定义、初始化、赋值、遍历、插入、删除、排序和查找等。
数组应用实验报告
![数组应用实验报告](https://img.taocdn.com/s3/m/e1fdb44878563c1ec5da50e2524de518964bd3d9.png)
数组应用实验报告数组应用实验报告引言:数组是一种常见且重要的数据结构,在计算机科学和编程中广泛应用。
本实验旨在通过实际案例,探索数组在不同领域的应用,并展示其在问题解决中的价值和效果。
一、数组在图像处理中的应用:图像处理是一门涉及数字图像的科学与技术,而数组在图像处理中扮演着重要的角色。
通过将图像像素值存储在数组中,我们可以对图像进行各种操作,如调整亮度、对比度,应用滤镜等。
通过实验,我们使用数组来实现图像的二值化处理,将彩色图像转换为黑白图像。
通过遍历图像的每个像素,将其转换为相应的二值像素,我们成功地实现了图像的二值化。
二、数组在数据分析中的应用:数据分析是一种通过收集、处理和解释数据来提取有用信息的过程。
在数据分析中,数组被广泛用于存储和处理大量数据。
通过实验,我们使用数组来计算一组数据的平均值、方差和标准差。
通过将数据存储在数组中,我们可以轻松地对其进行遍历和计算,从而得到准确的统计结果。
三、数组在游戏开发中的应用:游戏开发是一门创造虚拟世界的艺术和科学。
在游戏中,数组被用于存储和管理游戏中的各种对象,如玩家、敌人、道具等。
通过实验,我们使用数组来实现一个简单的游戏场景。
通过将游戏对象存储在数组中,并使用循环遍历数组,我们能够轻松地管理和更新游戏中的各个对象,实现游戏的正常运行。
四、数组在密码学中的应用:密码学是一门研究通信安全和数据保护的学科。
在密码学中,数组被广泛用于存储和处理加密和解密过程中的数据。
通过实验,我们使用数组来实现一个简单的凯撒密码加密算法。
通过将明文和密钥存储在数组中,并使用数组索引进行字符的替换,我们成功地实现了凯撒密码的加密和解密过程。
结论:通过本次实验,我们深入了解了数组在不同领域的应用。
无论是图像处理、数据分析、游戏开发还是密码学,数组都发挥着重要的作用。
数组作为一种高效、灵活的数据结构,为我们解决各种问题提供了强大的工具。
通过学习和应用数组,我们能够更好地理解和掌握计算机科学和编程的核心概念,为解决实际问题提供切实可行的解决方案。
数组综合实验报告模板
![数组综合实验报告模板](https://img.taocdn.com/s3/m/85d561dd70fe910ef12d2af90242a8956aecaa4c.png)
一、实验目的1. 熟悉数组的定义、创建和使用。
2. 掌握数组的初始化、赋值、访问和修改方法。
3. 学会使用数组的常用操作,如排序、查找、插入和删除等。
4. 理解数组的内存分配和释放机制。
二、实验环境1. 操作系统:Windows/Linux/MacOS2. 编程语言:C/C++/Java/Python等3. 开发工具:Visual Studio/Code::Blocks/PyCharm等三、实验内容1. 数组的定义与初始化2. 数组的赋值与访问3. 数组的基本操作4. 数组的排序与查找5. 数组的插入与删除6. 数组的内存分配与释放四、实验步骤1. 数组的定义与初始化(1)创建一个整型数组,包含10个元素。
(2)初始化数组,将前5个元素赋值为1,后5个元素赋值为2。
2. 数组的赋值与访问(1)通过下标访问数组元素。
(2)通过循环遍历数组,输出所有元素。
(1)使用冒泡排序算法对数组进行排序。
(2)使用二分查找算法查找数组中的某个元素。
4. 数组的排序与查找(1)实现插入排序算法,将一个新元素插入到已排序数组中。
(2)实现删除排序算法,从已排序数组中删除一个元素。
5. 数组的插入与删除(1)实现动态分配内存的数组,用于存储不固定数量的元素。
(2)实现数组的内存释放。
6. 数组的内存分配与释放(1)创建一个动态分配的整型数组,包含10个元素。
(2)通过增加数组长度,向数组中添加新元素。
(3)释放数组所占用的内存。
五、实验结果与分析1. 数组的定义与初始化(1)定义了一个包含10个整型元素的数组。
(2)成功初始化数组,前5个元素赋值为1,后5个元素赋值为2。
2. 数组的赋值与访问(1)成功通过下标访问数组元素。
(2)成功遍历数组,输出所有元素。
3. 数组的基本操作(1)使用冒泡排序算法成功对数组进行排序。
(2)使用二分查找算法成功查找数组中的某个元素。
(1)实现插入排序算法,成功将新元素插入到已排序数组中。
数组应用实验报告
![数组应用实验报告](https://img.taocdn.com/s3/m/7c85c05353ea551810a6f524ccbff121dd36c5a8.png)
一、实验目的1. 理解数组的概念和特点。
2. 掌握数组的创建、初始化、赋值、访问和修改等方法。
3. 学会使用数组解决实际问题,如排序、查找等。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发环境:PyCharm三、实验内容1. 数组的创建和初始化2. 数组的访问和修改3. 数组排序4. 数组查找5. 数组应用实例四、实验步骤1. 数组的创建和初始化```python# 创建一个长度为5的整型数组array1 = [0] 5# 创建一个包含10个元素的浮点型数组array2 = [0.0] 10# 创建一个包含5个字符串的数组array3 = [""] 5```2. 数组的访问和修改```python# 访问数组元素print(array1[0]) # 输出:0# 修改数组元素array1[0] = 1print(array1[0]) # 输出:1```3. 数组排序```python# 使用冒泡排序对整型数组进行排序def bubble_sort(array):n = len(array)for i in range(n):for j in range(0, n-i-1):if array[j] > array[j+1]:array[j], array[j+1] = array[j+1], array[j] # 测试冒泡排序array4 = [64, 34, 25, 12, 22, 11, 90]bubble_sort(array4)print(array4) # 输出:[11, 12, 22, 25, 34, 64, 90]```4. 数组查找```python# 使用二分查找法在有序数组中查找特定元素def binary_search(array, target):low = 0high = len(array) - 1while low <= high:mid = (low + high) // 2if array[mid] == target:return midelif array[mid] < target:low = mid + 1else:high = mid - 1return -1# 测试二分查找array5 = [2, 3, 4, 10, 40]target = 10result = binary_search(array5, target) print(result) # 输出:3```5. 数组应用实例```python# 实例:计算数组中所有元素的和def sum_of_elements(array):return sum(array)# 测试计算数组元素和array6 = [1, 2, 3, 4, 5]result = sum_of_elements(array6)print(result) # 输出:15```五、实验结果与分析1. 通过实验,成功创建了不同类型的数组,并掌握了数组的初始化、访问和修改方法。
最新《实验二:数组》实验报告
![最新《实验二:数组》实验报告](https://img.taocdn.com/s3/m/3f0a63664a73f242336c1eb91a37f111f1850d94.png)
最新《实验二:数组》实验报告实验目的:1. 掌握数组的基本概念和使用方法。
2. 理解数组在内存中的存储方式。
3. 学会使用循环结构对数组进行遍历和操作。
4. 培养解决实际问题时数组应用的能力。
实验环境:- 操作系统:Windows 10- 开发工具:Visual Studio 2019- 编程语言:C++实验内容:1. 创建一个整型数组,包含10个元素,初始化为0到9的整数。
2. 使用循环结构实现数组中所有元素的累加,并输出结果。
3. 编写一个函数,计算数组中所有偶数的和,并返回结果。
4. 实现一个功能,允许用户输入一个整数,将其插入到数组的指定位置。
5. 对数组进行排序,使用冒泡排序算法,并输出排序后的数组。
实验步骤:1. 定义一个整型数组arr[10],并初始化。
2. 使用for循环,遍历数组,计算累加和,并输出。
3. 定义一个函数int calculateEvenSum(int arr[], int size),接收数组和数组大小作为参数,计算偶数和。
4. 实现用户输入功能,通过scanf获取用户输入的整数和指定位置,调用一个函数void insertElement(int arr[], int size, int value, int position)进行插入。
5. 应用冒泡排序算法对数组进行排序,定义一个函数voidbubbleSort(int arr[], int size)实现排序,并输出排序后的结果。
实验结果:1. 初始数组:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}。
2. 数组累加和输出:45。
3. 偶数和输出:20。
4. 用户输入插入操作:假设用户输入的值为5,指定位置为3,插入后的数组:{0, 1, 5, 2, 3, 4, 5, 6, 7, 8, 9}。
5. 排序后的数组输出:{0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9}。
实验分析:通过本次实验,我们成功实现了数组的基本操作,包括初始化、遍历、插入、计算和排序。
数组实验报告范文
![数组实验报告范文](https://img.taocdn.com/s3/m/f2d7f87a366baf1ffc4ffe4733687e21af45ff0c.png)
数组实验报告范文实验报告标题:数组操作实验摘要:本实验通过对数组的基本操作实例进行实践,探讨了数组的定义、初始化、元素赋值、元素访问、元素修改和数组长度等操作的方法和注意事项。
1.引言数组是一种常见的数据结构,其在计算机科学和编程中有着广泛的应用。
通过对数组的操作,可以实现数组元素的存储、访问和修改等功能。
在本次实验中,我们将通过实践操作来掌握数组的基本操作方法。
2.实验目的1)掌握数组的定义和初始化方法;2)熟悉数组元素的赋值、访问和修改;3)了解数组的长度属性及其用法。
3.实验内容3.1数组的定义和初始化在编程语言中,数组的定义和初始化可以分为静态数组和动态数组两种方式。
静态数组的定义方式为:类型[数组长度] 数组名;例如:int numArr[5];静态数组的初始化方式有两种:-一种是在定义时进行初始化,即直接在数组定义中指定数组的初始值;-另一种是在定义后通过循环结构对数组进行逐元素赋值的方式进行初始化。
动态数组的定义和初始化方式与静态数组有所不同,需要调用相应的分配内存函数进行动态内存的分配。
3.2数组元素的赋值、访问和修改数组元素的赋值即将一些值赋给数组的一个或多个元素。
通过下标索引的方式可以访问和修改数组中的元素。
例如,定义了一个长度为5的整型数组numArr,可以通过numArr[0]、numArr[1]、numArr[2]、numArr[3]和numArr[4]来访问和修改数组中的元素。
3.3数组的长度属性及其用法数组的长度属性即数组的元素个数,可以通过数组的长度属性来获取数组的长度。
例如,使用int length = numArr.length;就可以获取数组numArr的长度。
4.实验步骤4.1数组的定义和初始化首先,我们定义了一个整型数组numArr,并在定义时进行了初始化。
int[] numArr = {1, 2, 3, 4, 5};然后,我们使用循环结构对数组进行逐元素赋值的方式进行初始化。
综合性、设计性实验报告(数组应用)4维数组
![综合性、设计性实验报告(数组应用)4维数组](https://img.taocdn.com/s3/m/e133b71f0740be1e650e9a55.png)
综合性、设计性实验报告姓名学号专业计算机科学与技术班级1402实验课程名称____数据结构_指导教师及职称___开课学期2016 年_上学期上课时间实验名称:数组应用实验时间:小组合作:是●否○1、实验目的:(1)掌握数组的基本应用和方法;(2)掌握字符数组和字符串函数的使用。
(3)掌握与字符串处理有关的算法。
2、实验设备及材料:机器配置:4G内存,AMD A8操作系统:windows xp开发工具:V C ++6.03、理论依据:【1】在C语言的环境,有一个四维数组,在计算机中都是以一维的形式保存。
【2】例如int cof[2][2][2][2]在计算机中保存形式与一个2*2*2*2大小的一维数组相同, 想要寻址一个数,因为编译器在看到数组的定义时就知道了数组每一维的大小.于是可以计算定位到相对于数组开始处的偏移.【3】为了容易理解,都是把多维数组分解成几行,每行中又有几列的这种形式,例如int cof [4][6][4][4],就是4行,每行中有6个元素,每个元素又是一个有4个子元素一维数组,而数组中的每个子元素仍然还是一个有4个子元素数组,【4】四维数组可视为以三维数组为数据元素的向量,四维数组中的每个元素都属于四个向量。
【5】由于计算机内存是一维的,多维数组的元素应排成线性序列后存人存储器。
数组一般不做插入和删除操作,即结构中元素个数和元素间关系不变化。
一般采用顺序存储方法表示数组。
分为行优先顺序和列优先顺序。
【6】由地址计算公式可得,数组中任一元素可通过地址公式在相同时间内存取。
即顺序存储的数组是随机存取结构。
4、算法步骤及注意事项:算法步骤:(1)首先,在定义四维数组的数据类型时,我选择了整型以方便编程及利于数据的输入和输出。
为了实现任务所要求的功能,我将程序划分为三类:功能函数,界面函数以及主函数。
另外,其中的功能函数包括以下几种函数:四维数组元素输入函数、四维数组元素输出函数、元素查找函数、功能介绍函数以及主函数。
数组应用实验报告
![数组应用实验报告](https://img.taocdn.com/s3/m/778dc396b04e852458fb770bf78a6529647d35f3.png)
数组应用实验报告
《数组应用实验报告》
在计算机科学领域,数组是一种非常重要的数据结构,它可以存储多个相同类型的数据,方便进行管理和操作。
在本次实验中,我们将探讨数组的应用,并通过实验报告来展示其在不同场景下的使用情况。
实验一:数组的创建和初始化
在本实验中,我们首先学习了如何创建和初始化数组。
通过编写简单的代码,我们成功创建了一个包含整数类型的数组,并对其进行了初始化。
我们发现,数组的索引是从0开始的,这意味着我们可以通过索引来访问数组中的元素。
实验二:数组的遍历和操作
接下来,我们学习了如何遍历数组并对其进行操作。
我们使用循环结构来遍历数组中的每个元素,并进行相应的操作。
我们发现,使用数组可以方便地对一组数据进行统一的处理,比如求和、平均值等操作。
实验三:多维数组的应用
在这个实验中,我们学习了多维数组的应用。
通过创建二维数组,我们可以模拟二维空间中的数据结构,比如矩阵、图像等。
我们发现,多维数组可以方便地表示复杂的数据结构,并且可以通过多重循环来对其进行遍历和操作。
实验四:数组的应用案例
最后,我们通过实际案例来展示数组的应用。
我们使用数组来实现一个简单的学生成绩管理系统,通过输入学生的成绩,然后计算平均分、最高分、最低分等统计数据。
我们发现,数组的使用大大简化了数据的管理和操作,提高了程序的效率和可维护性。
综上所述,本次实验通过实验报告展示了数组在不同场景下的应用情况。
通过学习和实践,我们深刻理解了数组的重要性和灵活性,相信在今后的编程工作中,我们将能够更加熟练地运用数组来解决实际问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综合性、设计性实验报告姓名学号专业计算机科学与技术班级1402实验课程名称____数据结构_指导教师及职称___开课学期2016 年_上学期上课时间2016 年4月实验名称:数组应用实验时间:小组合作:是●否○1、实验目的:(1)掌握数组的基本应用和方法;(2)掌握字符数组和字符串函数的使用。
(3)掌握与字符串处理有关的算法。
2、实验设备及材料:机器配置:4G内存,AMD A8操作系统:windows xp开发工具:V C ++6.03、理论依据:【1】在C语言的环境,有一个四维数组,在计算机中都是以一维的形式保存。
【2】例如int cof[2][2][2][2]在计算机中保存形式与一个2*2*2*2大小的一维数组相同, 想要寻址一个数,因为编译器在看到数组的定义时就知道了数组每一维的大小.于是可以计算定位到相对于数组开始处的偏移.【3】为了容易理解,都是把多维数组分解成几行,每行中又有几列的这种形式,例如int cof [4][6][4][4],就是4行,每行中有6个元素,每个元素又是一个有4个子元素一维数组,而数组中的每个子元素仍然还是一个有4个子元素数组,【4】四维数组可视为以三维数组为数据元素的向量,四维数组中的每个元素都属于四个向量。
【5】由于计算机内存是一维的,多维数组的元素应排成线性序列后存人存储器。
数组一般不做插入和删除操作,即结构中元素个数和元素间关系不变化。
一般采用顺序存储方法表示数组。
分为行优先顺序和列优先顺序。
【6】由地址计算公式可得,数组中任一元素可通过地址公式在相同时间内存取。
即顺序存储的数组是随机存取结构。
4、算法步骤及注意事项:算法步骤:(1)首先,在定义四维数组的数据类型时,我选择了整型以方便编程及利于数据的输入和输出。
为了实现任务所要求的功能,我将程序划分为三类:功能函数,界面函数以及主函数。
另外,其中的功能函数包括以下几种函数:四维数组元素输入函数、四维数组元素输出函数、元素查找函数、功能介绍函数以及主函数。
(2)对于四维数组输入函数,我通过四个for循环语句先对数组的坐标进行初始化,并输入各个维的长度。
然后,再利用一个for循环输入各个元素值。
输入时,先固定第一维,然后依次输入各个结点的元素值。
(3)对于思维数组输出函数,我也是通过多重for循环进行元素值的输出。
先固定第四维,然后依次输出各个结点的元素值。
对于元素查找函数,就比较简单了。
就是依次对四维数组中的元素值进行比对,如果所查找的元素与数组中的元素值相同,则输出该元素所在的一维编号即可。
(4)界面函数包括欢迎界面以及选择菜单界面,包括在完成某些操作后循环出现的选择界面。
出于对界面更加友好的考虑,我适当的装饰了一下界面,并采用了DOS系统的清屏命令以及暂停函数,这样就使得界面更加的清晰、简洁,便于使用。
(5)在主函数里,我先输入了欢迎界面,然后进入系统选择菜单,最后在退出该系统时,还设置了欢送界面,使得该系统更加的人性化。
流程图:主要功能模块流程图数组输入函数流程图数组输出函数流程图5.实验数据处理方法:查找函数流程图6.参考文献:李春葆编写,《数据结构与算法》,清华大学出版社,2009年8月第2版。
指导老师对实验设计方案的意见:指导老师签名:年月日2、实验数据及结果输入数据:一二三四维数分别为2,2,2,2,行优先输入16个数:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16输出数据:列优先输出相应结果:1 95 133 117 152 106 144 128 16查找元素16:对应的一维位置为153、对实验结果的分析与讨论:通过数据结构的课程设计,我们学到了许多,并将这些知识应用于实践中,进一步锻炼了自己的动手能力。
当然,也会出现一些问题。
说明界面还不够友好。
输入个数不对时并没有提示,这是程序的不足之处,也需要我们更深入的去学习新的知识。
4、结论:1、对于出现的调试错误要仔细分析错误的原因,根据错误提示,按照自顶向下的程序设计原则,逐个进行排错。
只要够细心,就一定能够找到错误的所在。
2、程序的易操作性很重要,也就是要有一个足够友好的界面。
基于这一点,我设计了自己程序的人机对话界面,通过一个个选项来完成各种操作,大大增强了程序的易用性。
3、要善于利用各种资源,以此提高自己编程的效率。
否则,就会花费许多无谓的时间在不必要的事情上面。
编写的程序要通俗易懂,比如变量与函数的定义要尽量做到见名知义。
5、实验总结1、编程过程中加入必要的注释是很重要的,这不仅时为了别人能更容易的看懂你的源程序,更重要的是方便自己未来的修改。
因为程序源代码一多,自己未必能够十分清楚变量及函数的作用。
此时,加必要的注释,就能帮助自己变量及函数的含义,而不是从头理解,提高了工作的效率。
2、界面简单易懂,让别人更容易掌握,通过学习,学到了改变界面颜色,实现实验要求的扩充系统功能。
指导老师评语及得分:签名:年月日湖南科技学院教务处编印注意:实验代码作为附件放在实验报告之后源代码:#include<stdio.h>#include<malloc.h>#include<stdlib.h>#define M 100typedef struct{int data;int wei[4];}node;typedef struct{node dat[M];int max_meiwei[4];//每维的长度int m;}shu;void menu(shu *G);void input(shu *G);void output(shu *G);void find(shu *G);void introduce(shu *G); //函数声明/***********************************************************/ void input(shu *G)// 输入按行{int i,j,k,l,h,b,n;G->m=1;for(i=0;i<4;i++)//依次输入第一、二、三、四维的长度{printf("\t\t\t请输入第%d维的长度:",i+1);scanf("%d",&G->max_meiwei[i]);G->m*=G->max_meiwei[i]; //维数长度积即为数据个数}n=0;for(i=0;i<G->max_meiwei[0];i++)//坐标{for(j=0;j<G->max_meiwei[1];j++)//初{for(k=0;k<G->max_meiwei[2];k++)//始{for(l=0;l<G->max_meiwei[3];l++)//化{G->dat[n].wei[0]=i;G->dat[n].wei[1]=j;G->dat[n].wei[2]=k;G->dat[n].wei[3]=l;n++;}}}}for(n=0;n<G->m;n++)//依次输入各个结点的坐标值{printf("\t\t\t请输入A[");for(b=0;b<4;b++){printf("%d,",G->dat[n].wei[b]);}printf("\b]的值\n");scanf("%d",&G->dat[n].data);}system("pause");menu(G);}/*******************************************************/void output(shu *G)// 输出按列优先顺序{int i,j,b,k,l,h,n;for(i=0;i<G->max_meiwei[3];i++) //先固定第四维,而后由里到外依次输出{for(j=0;j<G->max_meiwei[2];j++){for(k=0;k<G->max_meiwei[1];k++){for(l=0;l<G->max_meiwei[0];l++){printf("\t\t");for(h=0;h<G->m;h++){if(G->dat[h].wei[3]==i && G->dat[h].wei[2]==j && G->dat[h].wei[1]==k && G->dat[h].wei[0]==l){printf("\t%d",G->dat[h].data);}}}printf("\n");}}}printf("\n");system("pause");menu(G);}/*******************************************************//*******************************************************/void find(shu *G) // 给出任意元素值输出对应的一维数组所在的位置{int i,a,k=0,j;system("cls");printf("\n\n\t\t\t 请输入所查值:");scanf("%d",&a);for(i=0;i<G->m;i++){if(a==G->dat[i].data) //逐个比较,找出数组中和所给值相等的数{printf("\n\t\t\4 \4 \4 \4 \4 \4 \4 \4 \4 \4 \4 \4 \4 \4 \\4 \4");printf("\n\t\t\t对应第一维位置为:%d\n",i);printf("\t\t\5 \5 \5 \5 \5 \5 \5 \5 \5 \5 \5 \5 \5 \5 \5 \5\n");k=1;}}if(k==0){printf("\n\t\t\t~~~~(>_<)~~~~ 对不起,您所查询的数不存在!~~~~(>_<)~~~~ \n");printf("\n\t\t\t继续1\n\t\t\t返回2\n\t\t\t请选择:");scanf("%d",&j);if(j==1){find(G);}else if(j==2){menu(G);}}system("pause");menu(G);}/*******************************************************/void menu(shu *G)//菜单{int i;system("cls");system("color 9a");printf("\t\t\n\n\n\n\n\n");printf("\t\t\n");printf("\t\t╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬\n"); printf("\t\t║**************************************║\n"); printf("\t\t╬* WELCOME *╬\n"); printf("\t\t║**************************************║\n"); printf("\t\t╬* *╬\n"); printf("\t\t║* *║\n"); printf("\t\t╬* ☆输入(press 1) *╬\n"); printf("\t\t║* ★输出(press 2) *║\n"); printf("\t\t║* ☆查找(press 3) *║\n"); printf("\t\t╬* ★退出(press 0) *╬\n"); printf("\t\t║* *║\n"); printf("\t\t║**************************************║\n"); printf("\t\t╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬\n"); printf("\t\t\t请选择");printf("\n\t\t\t");scanf("%d",&i);switch(i){case 1: input(G);break;case 2: output(G);break;case 3: find(G);break;case 0:{system("cls");printf("\n\n");printf("\t\t \n");printf("\t\t\n");printf("\t\t (.@.@) \n");printf("\t\t+-------oOOo-----(_)-----oOOo---------+\n");printf("\t\t||\n");printf("\t\t|再见! 谢谢使用!! |\n");printf("\t\t||\n");printf("\t\t+----------oooO-------Oooo--------------+\n");printf("\n\n");exit(0);break;}default:menu(G);break;}}/*******************************************************//*******************************************************/void introduce(shu *G){int i;system("cls");printf("\n\n\n\n\t\t ☆此系统的功能有☆\n\n");printf("\t\t★按照行优先顺序将输入的数据建成4维数组\n\n");printf("\t\t★按照列优先顺序输出\n\n");printf("\t\t★给出任意处的元素值,查询相应的一维数组的序号\n\n");printf("\n\n\n\t\t按1返回\n");printf("\n\n\t\t按0退出\n");scanf("%d",&i);if(i==1){menu(G);}else if(i==0){exit(0);}}/*******************************************************/main(){int i,j=1;shu *G;G=(shu *)malloc(sizeof(shu)); //开辟一段空间while(j) //利用j来实现while循环{system("cls");system("color 9e");printf("\n\n\n");printf("\t\t┏━━━━━━━━━━━━━━━━━━━┓\n"); printf("\t\t┃* * * * * * * * * * * * * * * * * * * ┃\n"); printf("\t\t┃* ※欢迎使用数组应用系统※* ┃\n"); printf("\t\t┃* * * * ** * * * * * * * * * * * * * * ┃\n"); printf("\t\t┃* * ┃\n"); printf("\t\t┃* * ┃\n"); printf("\t\t┃* ☆☆☆☆☆☆☆☆* ┃\n"); printf("\t\t┃* ★★★★★* ┃\n"); printf("\t\t┃* ☆☆☆☆* ┃\n"); printf("\t\t┃* ★★★★* ┃\n"); printf("\t\t┃* ☆☆☆☆* ┃\n"); printf("\t\t┃* ★★★★* ┃\n"); printf("\t\t┃* ☆☆☆☆* ┃\n"); printf("\t\t┃* ★★★★* ┃\n"); printf("\t\t┃* ☆☆* ┃\n"); printf("\t\t┃* * ┃\n"); printf("\t\t┃* * * * * * * * * * * * * * * * * * * * * * * * * ┃\n"); printf("\t\t┗━━━━━━━━━━━━━━━━━━━┛\n"); printf("\n\t\t\t\3\3\3\3\3\3\3\3\3 简介 1 \3\3\3\3\3\3\3"); printf("\n\n\n\t\t\t\3\3\3\3\3\3\3\3\3 登录 2 \3\3\3\3\3\3\3"); printf("\n\n\n\t\t\t\3\3\3\3\3\3\3\3\3 退出 3 \3\3\3\3\3\3\3"); printf("\n\t\t\t请选择:");scanf("%d",&i);switch(i){ //case语句,控制输入情况case 1:j=0;introduce(G);break;case 2:j=0;menu(G);break;case 3:j=0;exit(0);default:printf("输入有误,请重新输入"); //增强程序健壮性j=1;}}return 0;}。