实验二一维数组与二维数组
- 格式:doc
- 大小:104.50 KB
- 文档页数:6
c语言数组实验报告C 语言数组实验报告一、实验目的1、深入理解 C 语言数组的概念和基本操作。
2、掌握数组的定义、初始化、遍历和访问。
3、学会使用数组解决实际问题,提高编程能力和逻辑思维能力。
二、实验环境1、操作系统:Windows 102、编译环境:Visual Studio 2019三、实验内容1、一维数组的操作定义一个包含 10 个整数的一维数组,并使用循环进行初始化。
编写程序,计算数组中所有元素的和与平均值,并输出结果。
实现对数组元素的遍历,输出每个元素的值。
2、二维数组的操作定义一个 3 行 4 列的二维整数数组,并进行初始化。
编写程序,计算二维数组中所有元素的总和。
打印出二维数组中每一行的元素值。
3、字符数组的操作定义一个字符数组,存储一个字符串。
实现字符串的输入和输出功能。
编写程序,统计字符串中字符的个数。
四、实验步骤(一)一维数组的操作1、定义并初始化一维数组```cint arr10 ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};```2、计算数组元素的和与平均值```cint sum = 0;float average;for (int i = 0; i < 10; i++){sum += arri;}average =(float)sum / 10;printf("数组元素的和为:%d\n", sum);printf("数组元素的平均值为:%2f\n", average);```3、遍历并输出数组元素```cfor (int i = 0; i < 10; i++){printf("%d ", arri);}printf("\n");```(二)二维数组的操作1、定义并初始化二维数组```cint arr234 ={{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};```2、计算二维数组元素的总和```cint sum2 = 0;for (int i = 0; i < 3; i++){for (int j = 0; j < 4; j++){sum2 += arr2ij;}}printf("二维数组元素的总和为:%d\n", sum2);```3、打印二维数组每一行的元素值```cfor (int i = 0; i < 3; i++){for (int j = 0; j < 4; j++){printf("%d ", arr2ij);}printf("\n");}```(三)字符数组的操作1、定义并初始化字符数组```cchar str100;```2、输入和输出字符串```cprintf("请输入一个字符串:");scanf("%s", str);printf("您输入的字符串是:%s\n", str);3、统计字符串中字符的个数```cint count = 0;for (int i = 0; stri!='\0'; i++){count++;}printf("字符串中字符的个数为:%d\n", count);```五、实验结果(一)一维数组的操作结果1、数组元素的和为:552、数组元素的平均值为:5503、数组元素的输出结果为:1 2 3 4 5 6 7 8 9 10(二)二维数组的操作结果1、二维数组元素的总和为:782、二维数组每一行的元素输出结果为:5 6 7 89 10 11 12(三)字符数组的操作结果1、输入字符串为:hello2、输出字符串为:hello3、字符串中字符的个数为:5六、实验分析(一)一维数组在对一维数组进行操作时,通过循环可以方便地对数组中的每个元素进行访问和处理。
一、实验背景本次实验旨在通过学习数组的相关知识,掌握数组的定义、初始化、赋值、引用等方法,以及数组的操作和应用。
通过本次实验,我对数组有了更深入的理解,同时也对编程思维和算法设计有了更全面的提升。
二、实验过程1. 实验一:一维数组的定义与初始化实验过程中,我首先学习了如何定义一维数组,以及如何对数组进行初始化。
通过实验,我掌握了以下知识:(1)一维数组的定义格式:类型符数组名[常量表达式];(2)一维数组的初始化方法:在定义数组时,可以在方括号内指定数组的长度,并为数组元素赋初值。
2. 实验二:二维数组的定义与初始化在实验二,我学习了二维数组的定义与初始化。
通过实验,我掌握了以下知识:(1)二维数组的定义格式:类型符数组名[常量表达式1][常量表达式2];(2)二维数组的初始化方法:可以在定义数组时,指定数组的行数和列数,并为数组元素赋初值。
3. 实验三:数组元素的引用与赋值在实验三,我学习了如何引用数组元素,以及如何为元素赋值。
通过实验,我掌握了以下知识:(1)数组元素的引用方法:数组名[下标];(2)数组元素的赋值方法:使用赋值运算符“=”。
4. 实验四:数组的操作与应用在实验四,我学习了数组的操作与应用,包括冒泡排序、选择排序等。
通过实验,我掌握了以下知识:(1)冒泡排序算法:通过比较相邻元素的大小,将较大的元素交换到后面,直到整个数组有序。
(2)选择排序算法:通过比较相邻元素的大小,选择最小(或最大)的元素放到数组的起始位置,然后继续对剩余的元素进行排序。
三、实验反思1. 数组的定义与初始化在实验过程中,我深刻体会到了数组在编程中的重要性。
数组作为一种数据结构,可以有效地存储和操作一组具有相同数据类型的元素。
通过对数组的定义与初始化,我学会了如何创建一个符合实际需求的数组,并为数组元素赋初值。
2. 数组元素的引用与赋值在实验过程中,我学会了如何引用数组元素,以及如何为元素赋值。
这使我更加熟练地掌握了数组的使用方法,为后续的编程实践打下了基础。
一维数组和二维数组是计算机科学中非常基础的概念,它们在数据存储和访问中起着至关重要的作用。
本文将介绍一维和二维数组的定义方法、赋值和访问方法,并深入探讨它们在编程中的应用。
1. 一维数组的定义方法一维数组是具有相同数据类型的元素组成的有序集合。
在许多编程语言中,可以使用以下方式来定义一维数组:int[] array = new int[5];在这个例子中,我们定义了一个包含5个整数元素的整型数组。
一维数组的长度是固定的,一旦定义了数组的长度,就无法更改。
2. 一维数组的赋值和访问方法一维数组的赋值可以通过索引来实现,索引从0开始计数。
例如:array[0] = 1;array[1] = 2;array[2] = 3;可以通过索引来访问数组的元素,例如:int x = array[0];通过循环遍历一维数组的元素,可以方便地对数组进行操作。
3. 二维数组的定义方法二维数组是由行和列组成的表格状数据结构。
在许多编程语言中,可以使用以下方式来定义二维数组:int[][] array2D = new int[3][3];在这个例子中,我们定义了一个包含3行3列整数元素的二维数组。
二维数组的长度也是固定的,无法更改。
4. 二维数组的赋值和访问方法二维数组的赋值同样可以通过索引来实现,例如:array2D[0][0] = 1;array2D[0][1] = 2;array2D[0][2] = 3;可以通过两个索引来访问二维数组的元素,例如:int y = array2D[0][0];同样可以通过循环遍历二维数组的元素,对数组进行操作。
总结回顾一维数组和二维数组是程序中常用的数据结构,它们可以方便地存储和访问大量的数据。
在实际编程中,我们可以根据具体的需求来选择使用一维数组还是二维数组,以便更加高效地处理数据。
个人观点和理解在我看来,一维数组和二维数组是编程中不可或缺的工具。
它们为我们提供了便利的数据存储和访问方式,可以帮助我们更好地处理各种复杂的问题。
实验二一维二维数组的创建和寻访一、实验目的1、掌握一维数组、二维数组创建和寻访的几种方法。
2、区别数组运算和矩阵运算的差别。
3、熟悉执行数组运算的常用数组操作函数。
4、掌握数组运算中的关系和逻辑操作及常用的关系、逻辑函数。
5、掌握“非数”、“空”数组在MA TLAB中的应用。
二、实验主要仪器与设备装配有MA TLAB7.6软件的计算机三、预习要求做实验前必须认真复习第三章MATLAB的数值数组及向量化运算功能。
四、实验内容及实验步骤1、一维数组的创建方法有哪几种?举例说明。
答:(1)“冒号”生成法;(2)线性(或对数)定点法;(3)逐个元素输入法;(4)运用MA TLAB 函数生成法。
例子:b1=linspace(0,pi,4)b2=logspace(0,3,4)运行结果:b1 =0 1.0472 2.0944 3.1416b2 =1 10 100 10002、根据要求补充输入指令,并写出运行结果。
本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作用。
A= zeros(2,6)%创建(2×6)的全零数组A(:)=1:12 %赋值号左边:单下标寻访(2×6) 数组A的全部12个元素%赋值号右边:拥有12个元素的一维数组A( 2,4 ) %双下标:A数组的第2行第4列元素A(8) %单下标:数组A的第8个元素A(: , [1,3]) %双下标:显示A的“第1列和第3列上全部行的元素”A([1, 2, 5, 6]') %单下标:把A数组第1,2,5,6个元素排成列向量A(: , 4:end) %双下标:显示A的“从第4起到最后一列上全部行的元素”%在此end用于“列标识”,它表示“最后一列”A(2,1:2:5)=[-1, -3, -5] %把右边的3个数分别赋向A数组第2行的第1,3,5个元素位置B=A([1, 2, 2, 2], [1, 3, 5]) %取A数组的1,3,5列的第1行元素作为B的第1行%取A数组的1,3,5列的第2行分别作为B的第2,3,4行L=A<3 %产生与A维数相同的“0,1”逻辑数组A(L)=NaN %把逻辑1标识的位置上的元素赋为“非数”运行结果:A =0 0 0 0 0 00 0 0 0 0 0A =1 3 5 7 9 112 4 6 8 10 12ans =8ans =8ans =1 52 6ans =1256ans=7 9 118 10 12A =1 3 5 7 9 11-1 4 -3 8 -5 12B =1 5 9-1 -3 -5-1 -3 -5-1 -3 -5L =1 0 0 0 0 01 0 1 0 1 0A =NaN 3 5 7 9 11NaN 4 NaN 8 NaN 123、补充输入以下指令,写出运行结果并说明reshape,diag,repmat,flipud,fliplr,rot90的作用。
一、实验目的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. 实验一和实验二成功完成了数组的定义、初始化、访问和修改,验证了数组的基本操作。
JAVA上机之一维数组和二维数组-报告JAVA上机实验之一维数组和二维数组报告|JAVA实验心得|JAVA语言编程序源代码下载1/1、定义一个处理数组的类Array,它有一个处理字符数组的成员方法,能够把数组的各元素变成小写,并在屏幕上分两行输出。
请在main方法中做如下测试:声明一个字符数组,该数组顺次赋值为连续的26个大写的英文字母,用上述Array对象处理它。
(思考:形参是二维字符数组的情况)2、定义一个描述矩形的类Rectangle,类中有两个双精度成员变量:length 和width,分别表示矩形的长和宽。
定义构造函数初始化这两个变量;定义方法求矩形的面积和周长。
编写应用程序测试类Rectangle,使用类中定义的各个方法,并将结果输出。
3、类似上题,如果是一个圆该如何定义,提示(有常量成员3.14)2/23(包括实验环境、实验内容的描述、完成实验要求的知识或技能) 实验环境:JDK1.6 + UltraEdit实验要求:1. 1、掌握Java 应用程序的编写,会熟练调试、运行Java 应用程序。
2. 2、能熟练创建和使用一维数组和二维数组。
3. 3、掌握类的定义、实例对象的创建、方法的调用。
4. 4、了解常量4()Test1:package fox.math.kmust;public final class Test1 {private static void print(Object obj) {if(obj==null){System.out.println("null");return;}if (Object[].class.isInstance(obj)) {for (Object temp : (Object[]) obj) {print(temp);}return;}if (String.class.isInstance(obj)) {String temp=(String) obj;System.out.println(temp+"\t--Lower Case--\t"+temp.toLowerCase()); } else {System.out.println(obj.toString());}}public static void main(String[] args){String[] stringArray1[]=new String[2][];stringArray1[0]=new String[13];stringArray1[1]=new String[13];for(int i=0,j=stringArray1[0].length;i<j;i++){ stringArray1[0][i]=((char)('A'+i))+""; stringArray1[1][i]=((char)('A'+i+13))+"";}print(stringArray1);}}Test2:package fox.math.kmust;public class Test2 {private static class Rectangle {private double length = 0.0;private double width = 0.0;public Rectangle(double length, double width) { if (length < 0) {length = 0.0;}if (width < 0) {width = 0.0;}this.length = length;this.width = width;}public double getArea() {return length * width;}public Rectangle() {}public double getGirth() {return 2 * (length + width);}}public static void main(String[] args) {Rectangle rectangle = new Rectangle(2.0, 4.0);System.out.printf("Area:%.2f\n", rectangle.getArea()); System.out.printf("Girth:%.2f\n", rectangle.getGirth()); }}Test3:package fox.math.kmust;public class Test3 {private static class Circle {private double radius = 0.0;public Circle() {}public double getArea() {return Math.PI * radius * radius;}public Circle(double radius) {if (radius < 0) {radius = 0.0;}this.radius = radius;}public double getGirth() {return 2 * Math.PI * radius;}}public static void main(String[] args) {Circle circle = new Circle(3.0);System.out.printf("Area:%.2f\n", circle.getArea()); System.out.printf("Girth:%.2f\n", circle.getGirth()); } }。
一、实验目的1. 掌握一维数组和二维数组的定义、初始化及输入输出方法。
2. 熟悉数组的基本操作,如查找、排序等。
3. 理解数组在实际问题中的应用。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C++三、实验内容1. 一维数组的定义、初始化及输入输出2. 二维数组的定义、初始化及输入输出3. 数组的基本操作:查找、排序4. 数组在实际问题中的应用四、实验步骤1. 一维数组的定义、初始化及输入输出(1)定义一维数组,并初始化```cppint arr[5] = {1, 2, 3, 4, 5};```(2)输出数组元素```cppfor (int i = 0; i < 5; i++) {cout << arr[i] << " ";}```2. 二维数组的定义、初始化及输入输出(1)定义二维数组,并初始化```cppint arr[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};```(2)输出数组元素```cppfor (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) { cout << arr[i][j] << " "; }cout << endl;}```3. 数组的基本操作:查找、排序(1)查找```cppint findElement(int arr[], int size, int element) {for (int i = 0; i < size; i++) {if (arr[i] == element) {return i; // 返回元素位置}}return -1; // 未找到元素,返回-1}int main() {int arr[5] = {1, 2, 3, 4, 5};int element = 3;int position = findElement(arr, 5, element);if (position != -1) {cout << "Element " << element << " found at position " << position << endl;} else {cout << "Element " << element << " not found" << endl;}return 0;}```(2)排序```cppvoid sortArray(int arr[], int size) {std::sort(arr, arr + size); // 使用std::sort对数组进行排序}int main() {int arr[5] = {5, 2, 1, 4, 3};sortArray(arr, 5);for (int i = 0; i < 5; i++) {cout << arr[i] << " ";}cout << endl;return 0;}```4. 数组在实际问题中的应用(1)计算平均值```cpp#include <iostream>#include <vector>#include <numeric> // 引入numeric库,用于求和double calculateAverage(const std::vector<int>& arr) {return std::accumulate(arr.begin(), arr.end(), 0) / arr.size(); }int main() {std::vector<int> arr = {1, 2, 3, 4, 5};double average = calculateAverage(arr);cout << "Average: " << average << endl;return 0;}```(2)判断矩阵是否为对称矩阵```cpp#include <iostream>#include <vector>bool isSymmetricMatrix(const std::vector<std::vector<int>>& matrix) { int size = matrix.size();for (int i = 0; i < size; i++) {for (int j = 0; j < size; j++) {if (matrix[i][j] != matrix[j][i]) {return false;}}}return true;}int main() {std::vector<std::vector<int>> matrix = {{1, 2, 3},{2, 4, 5},{3, 5, 6}};bool isSymmetric = isSymmetricMatrix(matrix);cout << "Is symmetric matrix: " << (isSymmetric ? "Yes" : "No") << endl;return 0;}```五、实验结果与分析1. 通过实验,掌握了数组的基本定义、初始化、输入输出方法。
一、实验目的1. 理解数组的定义和基本概念。
2. 掌握一维数组和二维数组的声明、初始化和访问方法。
3. 熟悉数组的内存存储结构及其特点。
4. 学习数组的输入输出操作。
5. 熟练运用数组解决实际问题。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 语言:C语言三、实验内容1. 一维数组的声明和初始化2. 一维数组的访问3. 二维数组的声明和初始化4. 二维数组的访问5. 数组的输入输出操作6. 数组的应用实例四、实验步骤1. 一维数组的声明和初始化```c#include <stdio.h>int main() {int a[5]; // 声明一个一维数组,包含5个整数元素a[0] = 1; // 初始化第一个元素为1a[1] = 2; // 初始化第二个元素为2a[2] = 3; // 初始化第三个元素为3a[3] = 4; // 初始化第四个元素为4a[4] = 5; // 初始化第五个元素为5return 0;}```2. 一维数组的访问```c#include <stdio.h>int main() {int a[5] = {1, 2, 3, 4, 5};printf("a[0] = %d\n", a[0]); // 访问第一个元素 printf("a[1] = %d\n", a[1]); // 访问第二个元素 printf("a[2] = %d\n", a[2]); // 访问第三个元素 printf("a[3] = %d\n", a[3]); // 访问第四个元素 printf("a[4] = %d\n", a[4]); // 访问第五个元素 return 0;}```3. 二维数组的声明和初始化```c#include <stdio.h>int main() {int b[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; return 0;}```4. 二维数组的访问```c#include <stdio.h>int main() {int b[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; printf("b[0][0] = %d\n", b[0][0]); // 访问第一个元素printf("b[1][1] = %d\n", b[1][1]); // 访问第二个元素printf("b[2][2] = %d\n", b[2][2]); // 访问第三个元素return 0;}```5. 数组的输入输出操作```c#include <stdio.h>int main() {int a[5];printf("请输入5个整数:\n");for (int i = 0; i < 5; i++) { scanf("%d", &a[i]);}printf("输入的整数为:\n"); for (int i = 0; i < 5; i++) { printf("%d ", a[i]);}return 0;}```6. 数组的应用实例```c#include <stdio.h>int main() {int a[5] = {1, 2, 3, 4, 5}; int max = a[0];int min = a[0];for (int i = 1; i < 5; i++) { if (a[i] > max) {max = a[i];}if (a[i] < min) {min = a[i];}}printf("最大值为:%d\n", max);printf("最小值为:%d\n", min);return 0;}```五、实验结果与分析通过本次实验,我们对数组的定义、声明、初始化、访问和内存存储结构有了更深入的了解。