实验四 数组(详细模板)
- 格式:docx
- 大小:114.78 KB
- 文档页数:7
一、实验目的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)一维数组的定义格式:类型符数组名[常量表达式];(2)一维数组的初始化方法:在定义数组时,可以在方括号内指定数组的长度,并为数组元素赋初值。
2. 实验二:二维数组的定义与初始化在实验二,我学习了二维数组的定义与初始化。
通过实验,我掌握了以下知识:(1)二维数组的定义格式:类型符数组名[常量表达式1][常量表达式2];(2)二维数组的初始化方法:可以在定义数组时,指定数组的行数和列数,并为数组元素赋初值。
3. 实验三:数组元素的引用与赋值在实验三,我学习了如何引用数组元素,以及如何为元素赋值。
通过实验,我掌握了以下知识:(1)数组元素的引用方法:数组名[下标];(2)数组元素的赋值方法:使用赋值运算符“=”。
4. 实验四:数组的操作与应用在实验四,我学习了数组的操作与应用,包括冒泡排序、选择排序等。
通过实验,我掌握了以下知识:(1)冒泡排序算法:通过比较相邻元素的大小,将较大的元素交换到后面,直到整个数组有序。
(2)选择排序算法:通过比较相邻元素的大小,选择最小(或最大)的元素放到数组的起始位置,然后继续对剩余的元素进行排序。
三、实验反思1. 数组的定义与初始化在实验过程中,我深刻体会到了数组在编程中的重要性。
数组作为一种数据结构,可以有效地存储和操作一组具有相同数据类型的元素。
通过对数组的定义与初始化,我学会了如何创建一个符合实际需求的数组,并为数组元素赋初值。
2. 数组元素的引用与赋值在实验过程中,我学会了如何引用数组元素,以及如何为元素赋值。
这使我更加熟练地掌握了数组的使用方法,为后续的编程实践打下了基础。
C语言程序设计实验报告数组实验目的:1. 了解数组的概念和使用方法;2. 掌握数组的定义和初始化;3. 掌握数组的遍历和元素访问;4. 掌握数组的排序算法和查找方法。
实验内容:一、数组的定义和初始化:1. 在C语言中,数组是一组有序、相同类型的元素的集合。
数组中的每个元素可以通过一个下标来标识,下标从0开始,最大为元素个数减1。
2. 定义数组的语法:类型名数组名[元素个数];3. 数组的初始化:可以在定义数组的同时进行初始化,也可以在定义后逐个赋值,还可以用花括号{}将初始值逐一列出进行初始化。
示例代码:```// 定义数组并初始化int a[5] = {5, 4, 3, 2, 1};// 定义数组后逐个赋值int b[3];b[0] = 1;b[1] = 2;b[2] = 3;// 使用花括号逐一初始化int c[] = {1, 2, 3, 4, 5};```二、数组的遍历和元素访问:1. 数组的遍历:可以使用for循环来遍历数组中的每个元素。
```int a[5] = {5, 4, 3, 2, 1};printf("%d", a[1]); // 输出4```三、数组的排序算法和查找方法:1. 排序算法:常用的数组排序算法有冒泡排序、插入排序和快速排序等。
```void bubbleSort(int a[], int n) {int i, j, temp;for (i = 0; i < n - 1; i++) {for (j = 0; j < n - i - 1; j++) {if (a[j] > a[j + 1]) {temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}}```2. 查找方法:常用的数组查找方法有线性查找和二分查找等。
实验结果:本次实验主要学习了数组的定义、初始化、遍历、元素访问、排序算法和查找方法。
南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合□√设计□创新实验日期:实验成绩:一、实验名称实验4 数组二、实验目的1.掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。
2.掌握字符数组与字符串的使用方法。
理解字符数组与其它数组的区别、理解字符串及其特点。
掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。
3.掌握与数组相关的算法,包括排序算法和查找算法等。
三、实验内容有关数组的程序设计四、实验环境PC微机DOS操作系统或Windows 操作系统Turbo C 程序集成环境五、实验步骤1.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。
要求:(1)数组为整型数组(10个元素)。
(2)使用scanf函数实现数组元素的输入。
在输入前给出必要的提示。
(3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。
(4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。
如果需要数组元素不断改变,应怎样修改程序?2.编程实现:在给定的字符串中查找满足条件的第一个字符。
要求:(1)字符串采用初始化的方式处理。
(2)通过scanf函数读入一个任意字符。
(3)在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的位置以及相应的说明。
如果不存在该字符,则要给出相应的信息。
3.编程实现:首先任意输入一个大于2且小于10的整数n,再输入一个由n决定的二维整型数组(n ⨯n),形成n ⨯n阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵(注意:数组不允许动态定义)。
例如:原始数据:n=4 结果数据:1 2 3 4 8 11 14 163 5 9 10 3 5 9 108 11 14 16 1 2 3 415 2 7 6 15 2 7 6要求:(1)本题中所涉及到的循环都采用for语句。
一、实验背景随着计算机科学的不断发展,数组作为一种基本的数据结构,在编程中得到了广泛的应用。
为了更好地理解数组的原理和特性,我们进行了数组实验,通过实际操作和理论分析,加深对数组概念的理解。
二、实验目的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. 在实际应用中,数组在排序、查找、动态规划等方面具有广泛的应用,为编程提供了便利。
实验四数组实验课程名:高级语言程序设计(C)专业班级:学号:姓名:实验时间:实验地点:指导教师:一、实验目的和要求(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法;(2)掌握字符数组和字符串函数的使用;(3)掌握与数组有关的算法(特别是排序算法)。
二、实验内容1、任务名称: 调试下列c50101.c程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。
写出调试过程。
源代码:#include <stdio.h>#define N 10void main(){ int i,a[N];double av=0;for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N;i++){ printf("%d",a[i]);if((i+1)%3==0)printf("\n");}for(i=0;i!=N;i++)av+=a[i];av=av/N;printf("\nav=%f\n",av);}运行结果:(需要截图)运行结果分析:求平均数首先应该要求和,题目中求和没有给变量赋初值,这样得到的结果是不可预料的,求和后应除以总数,但不能用语句av=sum/10;因为这样得到的结果是去掉小数点后的结果,不准确,应用语句av=sum/10.0;。
2、任务名称: 下面c50102.c程序是输入5个数据,然后求它们的和并输出结果。
源代码:#include <stdio.h>void main(){int i,a[5],sum=0;scanf("%d",&a[5]);for (i=0;i<=5;i++)sum+=a[5];printf("sum=%d\n",sum);}运行结果:(需要截图)运行结果分析:语句scanf("%d,%d,%d,%d,%d", a );错误,因为数组元素的输入和输出只能逐个元素操作,而不能以数组名作整体操作。
数组函数实验报告数组函数实验报告引言:数组是一种常用的数据结构,它可以存储多个相同类型的数据,并且可以通过索引来访问和操作这些数据。
在编程中,数组函数是一种非常实用的工具,可以对数组进行排序、查找、插入、删除等操作。
本文将介绍几个常用的数组函数,并通过实验验证其功能和效果。
一、数组排序函数数组排序函数可以将数组中的元素按照一定的规则进行排序,常见的排序算法有冒泡排序、选择排序、插入排序等。
我们选择了冒泡排序算法进行实验。
实验步骤:1. 定义一个包含多个整数的数组,例如arr = [5, 3, 8, 2, 1]。
2. 使用冒泡排序函数对数组进行排序。
3. 输出排序后的数组。
实验结果:经过冒泡排序函数的处理,原数组arr被排序为[1, 2, 3, 5, 8]。
实验分析:冒泡排序算法的基本思想是通过相邻元素的比较和交换,将较大(或较小)的元素逐渐“冒泡”到数组的一端。
该算法的时间复杂度为O(n^2),在处理大规模数据时效率较低。
二、数组查找函数数组查找函数可以在数组中查找指定的元素,并返回其所在的位置。
我们选择了线性查找算法进行实验。
实验步骤:1. 定义一个包含多个整数的数组,例如arr = [5, 3, 8, 2, 1]。
2. 输入一个要查找的整数x。
3. 使用线性查找函数在数组中查找整数x,并返回其位置。
4. 输出查找结果。
实验结果:假设要查找的整数为x = 3,经过线性查找函数的处理,整数3在数组arr中的位置为2。
实验分析:线性查找算法的基本思想是逐个比较数组中的元素,直到找到目标元素或遍历完整个数组。
该算法的时间复杂度为O(n),适用于小规模数据的查找。
三、数组插入函数数组插入函数可以在数组的指定位置插入一个新元素,并将原数组中的元素后移。
我们选择了插入排序算法进行实验。
实验步骤:1. 定义一个包含多个整数的数组,例如arr = [5, 3, 8, 2, 1]。
2. 输入一个要插入的整数x和插入位置pos。
实验四函数一、实验目的1.掌握函数的定义、函数的说明和调用。
2.掌握函数的参数及其传递方式,函数值的正确返回。
二、实验内容1.[目的]掌握标准库函数的说明和调用方法。
[题目内容]编写一个程序,首先显示一个菜单,然后根据用户的选择,输入数据后,执行相应的操作。
[输入]用户选择和函数自变量值[输出]如下菜单:=======MENU======1.。
sin2.。
cos3.。
pow4.。
sqrt0.。
exit==================[提示]使用标准库函数、多分支选择结构。
源代码:#include <stdio.h>#include <math.h>void main(){int choice,n;double x,z;printf ("======MUNE======\n");printf ("1..........sin\n");printf ("2..........cos\n");printf ("3..........pow\n");printf ("4..........sprt\n");printf ("0..........exit\n");printf ("请输入:");scanf ("%d",&choice);switch (choice){case '1':{printf ("请输入角度:");scanf ("%lf",&x);x=(x*3.14/180);z=sin(x);printf ("%lf的sin值为:%lf",x,z);break;}case '2':{printf ("请输入角度:");scanf ("%lf",&x);x=(x*3.14/180);z=cos(x);printf ("%lf的cos值为:%lf",x,z);break;}case '3':{printf ("请输入x和n:");scanf ("%lf%d",&x,&z);z=pow(x,n);z=sin(x);printf ("%lf的sin值为:%lf",x,z);break;}case '4':{printf ("请输入x:");scanf ("%lf",&x);if (x>=0){z=sprt(x);printf ("%lf的sqrt值为:%lf",x,z);}elseprintf ("Wrong");break;}case '0':{break;default:printf ("Wrong");}printf("\n");}2.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
数组实验报告姓名:学号:班级:计科1501班任课教师:一、实验目的掌握数组的排序、复制等操作二、实验要求实现编程代码,得出最后实验效果图三、实验内容1.编程实现:从键盘接收人任意个整数,并将其存放在数组中,然后求出该数组中的最大值(考察知识点:数组的length属性,求最大值的方法:打擂台).实验效果图如下:2。
编程实现:有一整型数组a,其中数据为3、4、5、1、2、6,编程实现将数组a复制到数组b中(考察知识点:数组的复制)3.编程实现:有一字符串数组,其中的数据有”张三”,”李四",”王五”,”赵六” ,"田七”,"李八" 。
编程查找该数组中是否包含”麻子"。
(考察知识点:数组的查找)实验效果图如下:4。
编程实现:有一整型数组,其中的数据有1、22、33、44、55、66、77.现将34插入到该数组中,并不打乱原来的升序(考察知识点:数组的插入。
提示:先将34替换到77)实验效果图如下:5。
编程实现:有一整型数组,其中数据为34,23,12,56,77,89。
编程实现对数组元素进行升序排序,并输出排序后的结果。
(考察知识点:数组的定义、排序,请使用冒泡排序、选择排序、Array。
sort()三种方法进行排序)6。
编程实现:有一3行3列的2维数组,其中数据为1、2、3、4、5、6、7、8、9。
编程实现其数据的输出(考察知识点:二维数组的赋值、输出)7。
编程实现:综合实例:学生成绩管理系统。
实验效果图如下:四、实验代码(含注释)1、import java.util。
Scanner;public class L1 {public static void main(String[] args){Scanner in=new Scanner(System。
in);System.out.print(”请输出数组的长度:");int num=in。