c语言实验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)求和:遍历二维数组,将所有元素相加。

c语言数组实验总结

c语言数组实验总结

c语言数组实验总结本次实验主要是关于C语言数组的内容,通过阅读相关教材和进行实践编程来学习和理解C语言中数组的使用方法和特点。

下面将对本次实验的整体过程和收获进行总结。

首先,在进行实验前,我先对C语言数组的相关概念和特点进行了学习和了解。

数组是指将具有相同类型的一组元素按一定顺序排列起来的集合,具有连续的存储空间。

在C语言中,数组的声明和使用主要有以下几个要点:数组的声明需要指定数组的数据类型和数组的名称;数组的元素可以通过下标来进行访问,下标是从0开始的;在数组的声明中可以指定数组的长度,也可以省略长度,由编译器自动计算。

在实验过程中,我按照实验指导书的要求完成了几个实例。

首先,我实现了一个简单的一维数组的求和程序。

这个程序要求用户输入一组数据,然后对这些数据进行求和,并输出结果。

通过编写这个程序,我熟悉了数组的基本声明和使用方法,了解了如何使用循环结构遍历数组中的元素,并且体会到了数组的便捷性和高效性。

然后,我又进行了一个二维数组的转置程序的实现。

这个程序要求用户输入一个3x3的矩阵,然后将这个矩阵进行转置,并输出转置后的结果。

通过编写这个程序,我进一步巩固了对数组的理解和使用,了解了二维数组的声明和使用方法,掌握了如何使用双重循环进行二维数组的遍历和操作。

接着,我尝试了一个动态分配内存的实例。

这个实例通过用户输入一个正整数n,然后动态地分配一个大小为n的一维数组,并为数组的每个元素赋值为其下标的平方。

通过编写这个程序,我了解到了动态分配内存的方法和步骤,掌握了使用malloc函数进行内存分配和free函数进行内存释放的操作,进一步提升了代码的灵活性和可扩展性。

在整个实验过程中,我遇到了一些问题,并且通过查阅资料和与同学讨论,得到了解决。

其中一个问题是关于数组长度的计算。

在程序中可以通过sizeof运算符来计算数组的长度,但是需要注意的是,数组作为函数参数传递时,其大小会变成指针类型的大小,而不是实际元素的个数。

C语言程序设计实验实验报告7

C语言程序设计实验实验报告7

C语言程序设计实验实验报告7实验名称:链表实现学生信息管理系统实验目的:通过设计链表实现学生信息管理系统,掌握链表的操作方法及其应用。

实验内容:设计一个学生信息结构体,包括学号、姓名、性别、年龄和成绩五个成员变量,并选择链式结构存储这些数据。

实现以下功能:1. 添加学生信息:从键盘输入学号、姓名、性别、年龄和成绩等信息,添加到链表中。

2. 删除学生信息:从链表中删除指定学号的学生信息。

5. 按成绩排序:按学生的成绩从高到低排序,并输出所有学生的信息。

7. 退出程序:退出学生信息管理系统。

实验方法:1. 设计学生信息结构体,定义链表节点结构体,并编写初始化链表和销毁链表的函数。

2. 编写添加学生信息函数,新建链表节点并插入链表末尾。

3. 编写删除学生信息函数,根据学号查找需要删除的节点,先将该节点从链表中删除,再释放节点空间。

4. 编写修改学生信息函数,根据学号查找需要修改的节点,并修改其成员变量。

6. 编写按成绩排序函数,使用冒泡排序法对链表进行排序,并输出所有学生的信息。

7. 编写输出所有学生信息函数,遍历链表并输出每个节点的信息。

8. 完成学生信息管理系统的主函数,实现菜单及相应功能的选择。

实验结果:依次选择菜单中的各个功能,添加、修改、删除、查找、排序和输出学生信息都能实现。

经测试,程序稳定运行,功能正常,符合需求。

本次实验主要让我们掌握了链式结构的概念、链表节点的定义、链表的初始化、插入、查找、删除和销毁链表的操作方法,以及在实际应用中如何使用链表来实现数据管理。

虽然链表操作相对于数组稍微有些繁琐,但其可以灵活处理数据结构的长度变化,具有更高的可扩展性和更好的操作效率,可以更好的适应各种实际需求。

在实验中,还需要注意节点指针的正确使用、各个函数之间的调用关系和输入输出数据格式的合理选择等问题,以保证程序能够正常运行。

同时,还需要保持认真细致的态度,严格按照实验需求和要求来完成每个步骤,以达到更好的实验效果和运行效率。

C语言实验报告数组

C语言实验报告数组

实验七数组1.实验目的(1)熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;(2)熟练掌握字符数组和字符串函数的使用;(3)掌握与数组有关的常用算法如查找、排序等..2.实验指导(1)对任意一个一维型数组;从中找出数组元素的最大值和最小值并输出..要求:①数组有十个元素;②使用scanf函数实现数组元素的输入前给出必要的提示;③输出时;首先输出数组的十个元素;然后输出其最大值和最小值..分析指导:①算法分析:首先定义一个数组;通过循环从键盘输入十个数组元素的值;再通过另一个循环判断数组元素的最大只和最小值;②根据分析情况编写程序:include<stdio.h>mainint a10;i;max;min;printf"please input ten integers:";fori=0;i<=9;i++{scanf"%d";&ai;}max=a0;min=a0;fori=1;i<=9;i++{ifai>maxmax=ai;ifai<minmin=ai;}fori=0;i<=9;i++{printf"a%d=%d\n";i;ai;}printf"The maximum value is %d;and the minimum value is %d\n";max;min;运行程序;输入十个整数;如:21 37 6 17 9 12 89 76 35 59运行结果如下:(2)编写函数cmpStrchar s1;char s2比较两个字符串s1和 s2的大小..如果s1>s2;返回一个正数;s1=s2;返回0;s1<s2;返回一个负数;在主函数中调用该函数完成字符串的比较操作;并输出返回的值..要求:①不允许使用strcmp函数;②用gets函数在主函数中输入两个字符串;③实现触摸屏受托人函数;返回的正数或负数的绝对值应该是进行比较的两个字符传中相应字符的ASCII码的差值..分析指导:①算法分析:两个字符串从第一个字符开始一一对应进行比较;直到不相等的那个字符;从而求得它们的ASCII码的差值..比如;‘A’与‘C’相比;由于‘A’<‘C’;应输出负数;由于‘A’与‘C’的ASCII码的差值为2;因此;应输出“-2”..同理;“And”和“Aid”比较;根据第二个字符比较结果;‘n’比‘I’大5;因此应输出‘5’;②根据分析情况编写程序:include<stdio.h>int cmpstrchar s1;char s2{int i;diff;i=0;whiles1i==s2i&&s1i='\0'i++;ifs1i=='\0'&&s2i=='\0'diff=0;elsediff=s1i-s2i;return diff;}void main{int z;char s1100;s2100;printf"input the first string:";//输入字符串1gets s1;printf"input the second string:";//输入字符串2getss2;z=cmpstrs1;s2;//输出比较结果printf"the difference between two strings is %d\n";z;}查看运行结果如下:重新输入两个字符串meet;mood运行结果如下:(3)再给定的字符串中查找指定的字符..要求:①字符串采用直接初始化的方式处理;②通过scanf函数读入一个任意字符;③在字符串中查找该字符;如果存在该字符;输出该字符在字符串中的一次出现的位置;如果再给定的字符串中不存在该字符;则给出相应的说明信息..include<stdio.h>void main{int i;char ch;char s=" program";printf" 输入一个英文字母: ";scanf"%c";&ch;for i=0;si='\0';i++{if si==chbreak;}if i<7printf"s%d=%c\n";i;ch;elseprintf"No founded\n";}输入一个英文字母O运行程序如下:再次输入一个英文字母w运行程序如下:(4)首先输入一个大于二且小于十的整数n;然后定义一个二维整型数组nn;初始化该数组;讲述组中最大元素所在的行和最小元素所在的行对调..要求:①nn数组元素的值由scanf函数从键盘输入假定最大值最小值不在同一行上;然后输出该数组;②查找最大值最小值所在的行;将数组中最大元素所在的行和最小元素所在的行对调;并输出对调后的数组;③为直观起见;数组按n行n列的方式输出;④修改程序;对最大值与最小值可能出现在一行种的情况进行处理.. include<stdio.h>main{long matrix99;min;max;temp;int i;j;n;nMax=0;nMin=0;printf"\nplease inpute n of matrix:\n";scanf"%d";&n;printf"\nplease inpute elements of matrix%d%d:\n";n;n; fori=0;i<n;i++forj=0;j<n;j++scanf"%ld";&matrixij;min=max=matrix00;fori=0;i<n;i++forj=0;j<n;j++{ifmatrixij>max{max=matrixij;nMax=i;}else ifmatrixij<min{min=matrixij;nMin=j;}}forj=0;j<n;j++{temp=matrixnMaxj;matrixnMaxj=matrixnMinj;matrixnMinj=temp;}printf"\nResult matrix:\n";fori=0;i<n;i++{forj=0;j<n;j++printf"%5ld";matrixij;printf"\n";}}输入一个数4;输入一个44的数组1 3 6 72 4 5 81 3 5 72 6 9 7运行程序如下:再次输入一个数字3;输入一个33的数组1 2 32 4 537 8运行程序如下:3 实验结论通过本次实验熟练的掌握一维数组、二维数组的定义、初始化和输入/输出方法以及字符数组和字符串函数的使用;还有就是掌握与数组有关的常用算法。

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

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

实验报告课程名称程序设计实验项目名称数组班级与班级代码14级计算机科学与技术1班实验室名称(或课室) SS1-332专业计算机科学与技术任课教师学号:姓名:实验日期:2014年月日广东商学院教务处制一.实验目的1.熟练掌握一维数组、二维数组的定义、赋值、输入、输出方法。

2.熟练掌握字符数组和字符串函数的使用。

3.熟练掌握一位数组以及一位数组元素的存储关系。

4.熟练掌握一位数组和二维数组的使用以及在函数中的传递。

5.通过上机实践掌握与数组有关的算法。

二、实验内容上机题1输入并运行以下程序。

实验内容:用2个数组对第3个数组进行赋值#include<stdio.h>main(){int i,a[5],b[5],c[5];a[0]=2,a[1]=6,a[2]=4,a[3]=8,a[4]=9;b[0]=2,b[1]=7,b[2]=9,b[3]=5,b[4]=3;for(i=0;i<=4;i++){c[i]=a[i]*b[i];printf("c[%d]=%d\n",i,c[i]);}}实验步骤○1int a[5]:整型一维数组说明,a是数组名,也是数组的起始地址,该数组可以存储5个整数。

a[0]~a[4]也可以看成是变量标识字符,[]中的数值称为数组下标,下标从0开始。

○2数组赋值方法和一般变量一样。

例如,a[0]=2表示将2赋给a[0]。

运行结果上机题2 输入并运行以下程序。

实验内容:对不指明数组的数组进行赋值并用循环结构进行求和#include<stdio.h>main(){int sum,i;int a[]={5,8,4,6,4,3,8,2,4,5,6};sum=0;for(i=0;i<=10;i++)sum+=a[i];printf("sum=%d\n",sum);}实验结果实验小结○1对全部元素赋初值时,可以不指定数组长度,C编译系统自动根据初值个数来决定数组长度。

c语言数组实验报告

c语言数组实验报告

c语言数组实验报告C 语言数组实验报告一、实验目的本次实验旨在深入理解和掌握 C 语言中数组的基本概念、使用方法以及常见的操作。

通过实际编程和调试,提高对数组的运用能力,为今后解决更复杂的程序设计问题打下坚实的基础。

二、实验环境操作系统:Windows 10编译器:Visual Studio 2019三、实验内容1、一维数组的定义、初始化和遍历定义一个包含整数的一维数组,如`int arr10;`使用初始化列表为数组赋值,例如`int arr5 ={1, 2, 3, 4, 5};`通过循环遍历数组,输出每个元素的值。

2、一维数组的查找和修改实现线性查找算法,在数组中查找特定的元素。

根据找到的元素位置,修改其值。

3、二维数组的定义、初始化和遍历定义二维数组,如`int arr234;`以不同的方式初始化二维数组,如按行初始化或整体初始化。

使用双重循环遍历二维数组。

4、二维数组的应用:矩阵运算实现两个矩阵的相加和相乘运算。

四、实验步骤1、一维数组的定义、初始化和遍历编写代码如下:```cinclude <stdioh>int main(){int arr10;int i;//初始化数组for (i = 0; i < 10; i++){arri = i + 1;}//遍历数组并输出for (i = 0; i < 10; i++){printf("%d ", arri);}return 0;}```编译并运行代码,观察输出结果,验证数组的初始化和遍历是否正确。

2、一维数组的查找和修改以下是实现线性查找并修改元素值的代码:```cinclude <stdioh>int main(){int arr5 ={10, 20, 30, 40, 50};int target = 30;int found = 0;int i;//查找元素for (i = 0; i < 5; i++){if (arri == target) {found = 1;break;}}if (found) {printf("找到元素%d,位于索引%d\n", target, i);arri = 100; //修改元素值} else {printf("未找到元素%d\n", target);}//输出修改后的数组for (i = 0; i < 5; i++){printf("%d ", arri);}return 0;}```运行程序,输入不同的目标值,查看查找和修改的结果。

数组的实验报告结论(3篇)

数组的实验报告结论(3篇)

第1篇一、实验目的本次实验旨在通过一系列的数组操作,验证数组的定义、创建、赋值、遍历、排序、查找等基本操作,掌握数组在实际编程中的应用,提高编程能力。

二、实验内容1. 数组的定义与创建通过定义数组变量,并使用不同的方式创建数组,如使用{}直接创建、使用new创建等,验证了数组的创建方法。

2. 数组的赋值通过给数组元素赋值,观察数组的实际内容,验证了数组的赋值操作。

3. 数组的遍历通过for循环、增强型for循环、foreach循环等不同方式遍历数组,验证了数组的遍历方法。

4. 数组的排序通过冒泡排序、选择排序、插入排序等算法对数组进行排序,验证了数组的排序操作。

5. 数组的查找通过顺序查找、二分查找等算法对数组进行查找,验证了数组的查找操作。

三、实验结果与分析1. 数组的定义与创建实验结果显示,通过定义数组变量,并使用不同的方式创建数组,均能成功创建数组。

在实际编程中,应根据具体需求选择合适的创建方式。

2. 数组的赋值实验结果显示,给数组元素赋值后,数组的内容发生了变化,验证了数组的赋值操作。

3. 数组的遍历实验结果显示,通过不同的遍历方式,均能成功遍历数组。

在实际编程中,应根据具体需求选择合适的遍历方式。

4. 数组的排序实验结果显示,通过冒泡排序、选择排序、插入排序等算法对数组进行排序,均能成功实现数组的排序。

在实际编程中,应根据具体需求选择合适的排序算法。

5. 数组的查找实验结果显示,通过顺序查找、二分查找等算法对数组进行查找,均能成功实现数组的查找。

在实际编程中,应根据具体需求选择合适的查找算法。

四、实验结论1. 数组是实际编程中常用的一种数据结构,具有丰富的操作方法。

2. 掌握数组的定义、创建、赋值、遍历、排序、查找等基本操作,有助于提高编程能力。

3. 在实际编程中,应根据具体需求选择合适的数组创建、遍历、排序、查找等方法,以提高编程效率和代码质量。

4. 本实验为后续学习其他数据结构和算法奠定了基础,有助于提高编程水平。

C语言:数组的应用实验报告

C语言:数组的应用实验报告

课程名称:结构化程序设计与C语言开课实验室:年月日一、实验目的用C语言编写和调试数组的程序,包括一维数组和二维数组。

从而对数组的程序设计有比较深入的了解。

二、内容及结果1、程序二选择排序法1)题目:用选择法对10个整数排序。

2)代码:#include<>int main(){int a[10];int i,j,t;printf("input 10 numbers:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("the sorted numbers:\n");for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");return 0;}3)运行截图:2、程序二将一个数组中的值按逆序重新存放。

1)题目:将一个数组中的值按逆序重新存放。

2)代码:# include <>int main (){int a[5]={8,6,5,4,1};int i,t;for(i=0;i<=2;i++){t=a[i];a[i]=a[4-i];a[4-i]=t;}for(i=0;i<=4;i++)printf("%d ",a[i]);return 0;}3)运行截图:3、程序三输出杨辉三角形(10行)1)题目:输出杨辉三角形(10行)2)代码:#include<>int main(){int yh[10][10]={0};int i,j;for(i=0;i<10;i++)yh[i][0]=1;for(i=1;i<10;i++)for(j=1;j<10;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];for(i=0;i<10;i++){for(j=0;j<i+1;j++)printf("%5d",yh[i][j]);printf("\n");}}3)运行截图:4、程序四找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该行上最小。

c语言数组实验总结

c语言数组实验总结

c语言数组实验总结
x
一、实验目的
1.掌握数组的几种基本操作;
2.掌握一维数组的基本操作;
3.掌握二维数组的基本操作;
4.掌握字符串数组的基本操作;
5.深入理解数组的实现原理;
二、实验内容
1.分类介绍数组的定义、用途及其特点;
2.介绍如何定义和使用一维数组;
3.详细讲解如何定义和使用二维数组;
4.运用数组实现冒泡排序;
5.编写程序,模拟按行读取并输出二维数组的值;
6.了解字符串数组的定义及应用;
7.实现字符串数组的排序;
三、实验结果
1.数组是一种容器,可以存放同一种类型的多个数据;
2.一维数组有一个维度,可以用一个下标来访问,并且可以用for循环来遍历一维数组;
3.二维数组有两个维度,可以用两个下标来访问,但是每次访问都需要两个循环;
4.冒泡排序通过比较两个相邻的数据,然后依次交换,实现对数据的排序;
5.可以使用二维数组来存放多行多列的表格数据,用一个for循环可以打印出二维数组里的数据;
6.字符串数组可以存放由字符组成的字符串;
7.可以使用冒泡排序实现字符串数组的排序;
四、总结分析
本次实验旨在通过一维数组、二维数组和字符串数组的定义和使用以及冒泡排序的实现,加深对数组的理解,巩固数组的基本操作。

通过本次实验,大家可以体会到数组的强大之处,节省大量的编程时间。

总得来说,本次实验对大家的数组操作有一定的提升,也对理解数组有了深入的认识。

c 实验报告7

c 实验报告7

c 实验报告7C 实验报告7实验目的:通过C语言编程实现对数组的排序和查找功能。

实验设备:计算机、C语言编程环境实验原理:数组是一组连续存储的相同数据类型的元素,可以通过下标来访问数组中的元素。

排序是将数组中的元素按照一定的顺序重新排列,查找是在数组中寻找指定的元素。

实验步骤:1. 编写C语言程序,实现对数组的排序功能。

利用冒泡排序、快速排序或其他排序算法对数组进行排序,使数组中的元素按照从小到大或从大到小的顺序排列。

2. 编写C语言程序,实现对数组的查找功能。

利用线性查找、二分查找或其他查找算法在数组中寻找指定的元素,并输出该元素的位置或提示未找到。

3. 编译并运行程序,测试排序和查找功能的正确性和效率。

实验结果与分析:经过实验,我们成功地实现了对数组的排序和查找功能。

通过对不同大小的数组进行排序和查找操作,我们发现排序算法的效率对于数组的大小有一定的影响,而查找算法的效率则受到排序后数组的影响较大。

因此,在实际应用中,需要根据具体情况选择合适的排序和查找算法。

实验总结:通过本次实验,我们深入了解了C语言中数组的排序和查找操作,掌握了不同的排序和查找算法,并通过实验验证了它们的正确性和效率。

这对我们进一步提高编程能力和解决实际问题具有重要意义。

实验中遇到的问题和解决方法:在实验过程中,我们遇到了一些问题,如排序算法的选择、查找算法的实现等。

我们通过查阅资料、与老师和同学讨论等方式,最终解决了这些问题,并得以顺利完成实验。

下一步工作展望:在今后的学习和实践中,我们将继续深入研究和应用C语言中的排序和查找算法,探索更多的优化方法和技巧,提高程序的效率和性能,为解决实际问题提供更好的支持。

通过本次实验,我们不仅学到了实际编程技能,还培养了解决问题的能力和团队合作精神,为我们今后的学习和工作打下了坚实的基础。

数组实验报告实验分析

数组实验报告实验分析

一、实验目的1. 理解数组的概念和基本操作。

2. 掌握数组的创建、初始化、访问和修改方法。

3. 学习数组的排序、查找和统计等常用算法。

4. 分析数组在实际应用中的优缺点。

二、实验内容1. 数组的创建与初始化2. 数组元素的访问与修改3. 数组的排序4. 数组的查找5. 数组的统计6. 数组在实际应用中的优缺点分析三、实验过程1. 数组的创建与初始化在实验中,我们首先学习了如何创建一个数组。

在C语言中,可以使用以下语句创建一个整型数组:int arr[10];这里创建了一个包含10个整数的数组,名称为arr。

接下来,我们学习了如何初始化数组。

初始化可以通过以下语句实现:int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};这里初始化了一个包含10个整数的数组,并将前10个整数依次赋值给数组元素。

2. 数组元素的访问与修改访问数组元素可以通过以下语句实现:int value = arr[3]; // 获取数组第4个元素的值修改数组元素可以通过以下语句实现:arr[5] = 20; // 将数组第6个元素的值修改为203. 数组的排序在实验中,我们学习了冒泡排序算法。

冒泡排序是一种简单的排序算法,其基本思想是通过比较相邻的元素,将较大的元素交换到数组的后面。

以下是冒泡排序算法的C语言实现:void bubbleSort(int arr[], int n) {int i, j, temp;for (i = 0; i < n - 1; i++) {for (j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}4. 数组的查找在实验中,我们学习了二分查找算法。

二分查找算法是一种高效的查找算法,其基本思想是将查找区间分为两半,每次查找时缩小查找范围。

数组实验报告范文

数组实验报告范文

数组实验报告范文实验报告标题:数组操作实验摘要:本实验通过对数组的基本操作实例进行实践,探讨了数组的定义、初始化、元素赋值、元素访问、元素修改和数组长度等操作的方法和注意事项。

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};然后,我们使用循环结构对数组进行逐元素赋值的方式进行初始化。

C语言数组实验报告

C语言数组实验报告
(2)输岀数据
序号输出数据描述
1num[i]3、程序源代码(填写程序调试正确后的代码)
#include <stdio.h>
int main()
{
int num[5]={1,2,3,4,5};/*
int i;
for(i=0;i<5;i++)/*
/*依次输出num[0]至num[4]*/ return 0;
char s []={
‘\t',
‘0',
‘\n',
‘}',
‘;'
J5
‘\n',
‘\',
‘/',
‘*'
‘\n',
/*(213lines deleted)*/
0
};
/*
*The string is a
*representation of the body
*of this program from'O'
#include <stdio.h>
int main()
{
int a[3][5];
int *adress;//
int i,j;
for(i=0;i<3;i++)//
{
printf("\n");
for(j=0;j<5;j++)//
{
定义并初始化adress
每行循环
每列循环
adress=&a[i][j];//
(1)
输入数据
序号
输入数据描述
数据类型
(1)
n,a[n]

数组应用实验报告

数组应用实验报告

数组应用实验报告
《数组应用实验报告》
在计算机科学领域,数组是一种非常重要的数据结构,它可以存储多个相同类型的数据,方便进行管理和操作。

在本次实验中,我们将探讨数组的应用,并通过实验报告来展示其在不同场景下的使用情况。

实验一:数组的创建和初始化
在本实验中,我们首先学习了如何创建和初始化数组。

通过编写简单的代码,我们成功创建了一个包含整数类型的数组,并对其进行了初始化。

我们发现,数组的索引是从0开始的,这意味着我们可以通过索引来访问数组中的元素。

实验二:数组的遍历和操作
接下来,我们学习了如何遍历数组并对其进行操作。

我们使用循环结构来遍历数组中的每个元素,并进行相应的操作。

我们发现,使用数组可以方便地对一组数据进行统一的处理,比如求和、平均值等操作。

实验三:多维数组的应用
在这个实验中,我们学习了多维数组的应用。

通过创建二维数组,我们可以模拟二维空间中的数据结构,比如矩阵、图像等。

我们发现,多维数组可以方便地表示复杂的数据结构,并且可以通过多重循环来对其进行遍历和操作。

实验四:数组的应用案例
最后,我们通过实际案例来展示数组的应用。

我们使用数组来实现一个简单的学生成绩管理系统,通过输入学生的成绩,然后计算平均分、最高分、最低分等统计数据。

我们发现,数组的使用大大简化了数据的管理和操作,提高了程序的效率和可维护性。

综上所述,本次实验通过实验报告展示了数组在不同场景下的应用情况。

通过学习和实践,我们深刻理解了数组的重要性和灵活性,相信在今后的编程工作中,我们将能够更加熟练地运用数组来解决实际问题。

数组实验实验报告

数组实验实验报告
malloc(sizeof(struct students));
printf("the original list is:\nname\tgrade\n");
for(m=0;m<=6;m++)
printf("%s\t%d\n",ACM[m].name,ACM[m].grade);
for(i=0;i<6;i++)
scanf("%d",&n);
if(n>=-32768&&n<=32767)
;
else
{
printf("wrong:the number is too large");
return -1;
}
if(n>=0)
{
for(i=0;n!=0;i++)
{
s[i]=n%2+'0';
n/=2;
}
for(;i<=MAX-1;i++)
C语言程序设计实验报告
专业:计算机科学与技术班级:计算机科学与技术创新实验班日期:2011-12-22成绩:
实验组别:第次实验:指导教师:
学生姓名:学号:同组人姓名:
实验名称:数组实验
一、实验目的
(1)掌握数组的说明、初始化和使用
(2)掌握一维数组作为函数参数时实参的用法;
(3)掌握字符串处理函数的设计,包括串操作函数及数字串与数之间转换函数的实现算法。
s[i]='1';
}
for(i=MAX-1;i>=0;i--)
putchar(s[i]);

C语言实验报告 数组

C语言实验报告   数组

实验四数组学号:姓名:一、实验目的数组是有序数据的集合,通过实验上机掌握一维数组和二维数组的使用,以及字符串处理函数的使用方法。

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

二、实验内容按要求完成程序的设计和调试1.用选择法对10个整数排序。

10个整数用scanf函数输入。

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

三、实验要求1.掌握一维数组和二维数组的定义和正确使用方法。

2.熟悉在神魔情况下使用数组,并熟练运用数组来解决实际问题。

3.掌握字符数组的存储形式、字符串标志以及字符串函数的使用。

四、程序流程图五、实验源程序及注释#include<stdio.h>#define N 15int main(){int i,number,top,bott,mid,loca,a[N],flag=1,sign;char c;printf("enter data:\n");scanf("%d",&a[0]);i=1;while (i<N) //检查是否输入完毕{scanf("%d",&a[i]);if (a[i]>=a[i-1])i++;elseprintf("enter this data again:\n");}printf("\n");while (flag){printf("input the number you look for:");scanf("%d",&number); //20sign=0; //sign=0表示尚未找到top=0;bott=N-1; //bott是查找区间的末位if ((number>a[N-1])||(number<a[0]))loca=-1; //表示找不到while ((!sign)&&(top<=bott)){ mid=(bott+top)/2; //找出中间元素的下标if (number==a[mid]){ loca=mid;printf("Has found %d,its position is %d\n",number,loca+1); //30下标表示从零开始起,输出数的位置加一便于查找sign=1;}elseif (number<a[mid])bott=mid-1;elsetop=mid+1;}if(!sign||(loca==-1))printf("can't find %d\n",number); //40printf("continue or not?(Y/N)");scanf("%c",&c);if ((c=='n')||(c=='N'))flag=0; //flag为变量开关,控制程序是否结束}return 0;}实验小结1.本次实验我基本掌握了数组的算法,练习了折半寻找法和选择法排列数据。

数组及其应用实验报告(3篇)

数组及其应用实验报告(3篇)

第1篇一、实验目的1. 熟练掌握数组的定义、初始化、赋值和输入输出方法。

2. 掌握一维数组和二维数组的操作方法。

3. 学会使用数组进行数据存储和排序。

4. 理解数组在实际编程中的应用场景。

二、实验环境硬件:个人电脑软件:Windows操作系统、C语言编译器三、实验内容1. 一维数组的定义、初始化和赋值2. 一维数组的输入输出3. 一维数组的查找与排序4. 二维数组的定义、初始化和赋值5. 二维数组的输入输出6. 二维数组的遍历7. 数组在实际编程中的应用案例四、实验步骤1. 一维数组的定义、初始化和赋值```cinclude <stdio.h>int main() {int array[5]; // 定义一个包含5个整数的数组array[0] = 1; // 赋值操作array[1] = 2;array[2] = 3;array[3] = 4;array[4] = 5;return 0;}```2. 一维数组的输入输出```cinclude <stdio.h>int main() {int array[5];printf("请输入5个整数:\n"); for (int i = 0; i < 5; i++) { scanf("%d", &array[i]);}printf("输入的数组元素为:\n"); for (int i = 0; i < 5; i++) { printf("%d ", array[i]);}return 0;}```3. 一维数组的查找与排序```cinclude <stdio.h>void selectionSort(int array[], int length) {for (int i = 0; i < length - 1; i++) {int minIndex = i;for (int j = i + 1; j < length; j++) {if (array[j] < array[minIndex]) {minIndex = j;}}int temp = array[minIndex];array[minIndex] = array[i];array[i] = temp;}}int main() {int array[5] = {3, 1, 4, 1, 5};int length = sizeof(array) / sizeof(array[0]); selectionSort(array, length);printf("排序后的数组为:\n");for (int i = 0; i < length; i++) {printf("%d ", array[i]);}return 0;}```4. 二维数组的定义、初始化和赋值```cinclude <stdio.h>int main() {int array[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; return 0;}```5. 二维数组的输入输出```cinclude <stdio.h>int main() {int array[3][4];printf("请输入一个3x4的二维数组:\n");for (int i = 0; i < 3; i++) {for (int j = 0; j < 4; j++) {scanf("%d", &array[i][j]);}}printf("输入的二维数组为:\n");for (int i = 0; i < 3; i++) {for (int j = 0; j < 4; j++) {printf("%d ", array[i][j]);}printf("\n");}return 0;}```6. 二维数组的遍历```cinclude <stdio.h>int main() {int array[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; for (int i = 0; i < 3; i++) {for (int j = 0; j < 4; j++) {printf("%d ", array[i][j]);}printf("\n");}return 0;}```7. 数组在实际编程中的应用案例(1)计算矩阵的转置```cinclude <stdio.h>void transposeMatrix(int matrix[][3], int rows, int cols, int transposed[][3]) {for (int i = 0; i < rows; i++) {for (int j = 0; j < cols; j++) {transposed[j][i] = matrix[i][j];}}}int main() {int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};int rows = 3, cols = 3, transposed[3][3];transposeMatrix(matrix, rows, cols, transposed);printf("矩阵的转置为:\n");for (int i = 0; i < rows; i++) {for (int j = 0; j < cols; j++) {printf("%d ", transposed[i][j]);}printf("\n");}return 0;}```(2)计算数组中最大值和最小值```cinclude <stdio.h>void findMaxMin(int array[], int length, int max, int min) { max = array[0];min = array[0];for (int i = 1; i < length; i++) {if (array[i] > max) {max = array[i];}if (array[i] < min) {min = array[i];}}}int main() {int array[] = {1, 3, 5, 7, 9};int length = sizeof(array) / sizeof(array[0]);int max, min;findMaxMin(array, length, &max, &min);printf("数组中的最大值为:%d,最小值为:%d\n", max, min);return 0;}```五、实验结果及分析本次实验通过一系列的实例,使我们对数组及其应用有了更深入的了解。

C语言实验报告《数组》_工作报告

C语言实验报告《数组》_工作报告

C语言实验报告《数组》学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验三数组一、实验目的1、掌握一维和二维数组的定义、赋值和输入输出2、掌握字符数组和字符串数组的使用3、掌握与数组有关的排序算法二、实验内容1、已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。

(习题7.4)2、将一个数组中的值按逆序重新存放。

例如,原来顺序为8,6,5,4,1。

要求改为1,4,5,6,8。

(习题7.5)3、如下程序是按选择法对数组中的n个元素按从小到大的顺序排序,请对程序中的错误进行改正,使其正常运行。

#include#define N 20void main(){1 / 2int a[N]={9,6,8,3,-1};int i,m;printf("before sort:");for(i=0;i printf("%d",a[i]);printf("\n");{ int i,j,t,p;for(j=0;j { p=j;for(i=j;i if(a[i] t=a[p]; a[p]=a[j]; a[j]=t;}}printf("after sort:");for(i=0;i printf("%d",a[i]);printf("\n");}三、实验步骤与过程第一┆范文网diyiFANWEN整理该文章,版权归原作者、原出处所有...四、程序调试记录2 / 2。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告课程名称程序设计实验项目名称数组班级与班级代码14级计算机科学与技术1班实验室名称(或课室) SS1-332专业计算机科学与技术任课教师学号:姓名:实验日期:2014年月日广东商学院教务处制一.实验目的1.熟练掌握一维数组、二维数组的定义、赋值、输入、输出方法。

2.熟练掌握字符数组和字符串函数的使用。

3.熟练掌握一位数组以及一位数组元素的存储关系。

4.熟练掌握一位数组和二维数组的使用以及在函数中的传递。

5.通过上机实践掌握与数组有关的算法。

二、实验内容上机题1输入并运行以下程序。

实验内容:用2个数组对第3个数组进行赋值#include<stdio.h>main(){int i,a[5],b[5],c[5];a[0]=2,a[1]=6,a[2]=4,a[3]=8,a[4]=9;b[0]=2,b[1]=7,b[2]=9,b[3]=5,b[4]=3;for(i=0;i<=4;i++){c[i]=a[i]*b[i];printf("c[%d]=%d\n",i,c[i]);}}实验步骤○1int a[5]:整型一维数组说明,a是数组名,也是数组的起始地址,该数组可以存储5个整数。

a[0]~a[4]也可以看成是变量标识字符,[]中的数值称为数组下标,下标从0开始。

○2数组赋值方法和一般变量一样。

例如,a[0]=2表示将2赋给a[0]。

运行结果上机题2 输入并运行以下程序。

实验内容:对不指明数组的数组进行赋值并用循环结构进行求和#include<stdio.h>main(){int sum,i;int a[]={5,8,4,6,4,3,8,2,4,5,6};sum=0;for(i=0;i<=10;i++)sum+=a[i];printf("sum=%d\n",sum);}实验结果实验小结○1对全部元素赋初值时,可以不指定数组长度,C编译系统自动根据初值个数来决定数组长度。

○2由于数组元素的下标可以是变量,因此数组的操作一般用循环实现。

上机题3 程序实现:从键盘输入5个数,输出最大、最小元素的值以及它们的下标。

将程序补充完整并上机调试。

实验内容:用循环结构对数组进行输入并求出最大最小值及下标#include<stdio.h>main(){int i,j,k,max,min;int a[5];for(i=0;i<5;i++)scanf("%d",&a[i]);max=min=a[0];i=k=0;for(i=0;i<5;i++){if(max<a[i]){max=a[i];j=i;}else if(max>a[i]){min=a[i];k=i;}}printf("max:a[%d]=%d,min:a[%d]=%d\n",j,max,k,min);}实验结果实验小结:比较最值时令第一个值为最大最小值,再用循环结构把最大值最小值赋给max min上机题4 输入并运行以下程序,分析程序运行结果。

实验内容:二维数组的加法#include<stdio.h>main(){int i,j;int a[3][2]={12,34,24,11,45,20};int b[3][2]={11,23,34,13,10,64};int c[3][2];for(i=0;i<=2;i++)for(j=0;j<=1;j++)c[i][j]=a[i][j]+b[i][j];for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf("%d+%d=%d ",a[i][j],b[i][j],c[i][j]); printf("\n");}}实验结果:实验小结:以上程序实现两个3行2列的矩阵相加,如果要实现两个矩阵相乘,在其程序的第9行和第12行的“+”改为“*”。

上机题5 程序实现:从键盘输入12个数,组成一个3行4列的二维数组并输出。

将程序补充完整并上机调试。

实验内容:对二维数组的输入输出#include<stdio.h>main(){int a[3][4];int i,j;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);printf("The result is:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%5d",a[i][j]);printf("\n");}}实验小结运行程序后,从键盘输入的12个整数应以空格、Enter键或Tab 键分开。

分别输出各行最小值各列最大值实验过程:#include<stdio.h>main(){int a[3][4];int i,j,min ,max;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);printf("The result is:\n");for(i=0;i<3;i++){for(j=0;j<4;j++){printf("%5d",a[i][j]);min=a[i][0];if(a[i][j]<a[i][0])min=a[i][j];} printf("\t%d\n",min);};for(j=0;j<4;j++){for(i=0;i<3;i++){max=a[0][j];if(a[i][j]>a[0][j])max=a[i][j];} printf("\t%d",max);}实验结果:实验小结:注意格式上机题6 输入并运行以下程序。

实验内容:字符串的输入与输出#include<stdio.h>main(){char a[7]="Foxpro";printf("%s\n");printf("%c\t%c\t%c\n",a[0],a[1],a[2]);}实验结果:实验小结:○1数组可以用字符串进行初始化“char a[7]=“Foxpro”;”,但是不能将字符串直接赋给数组,如“a[7]=”Foxpro;”和“a=”Foxpro;”都是错误的。

○2字符串的最后有串尾标志‘\o’,所以“char a[6]=”Foxpro”;”也是不正确的。

○3用“%s”格式输出指定地址开始的字符串,用“%c”格式输出数组元素的字符。

上机题7 输入并运行以下程序。

实验内容:利用二维数组对字符串进行输入输出#include<stdio.h>main(){int i;char a[][8]={"SQL","Foxpro","Unix","ASP"};for(i=0;i<=3;i++)printf("%s\n",a[i]);}实验小结:“char a[][8]={"SQL","Foxpro","Unix","ASP"};”定义了一个二维数组。

a[0]是一个字符串的串首地址,a[1]是第2个字符串的串首地址,a[i]为第i个字符串的串首地址。

因此,字符串输出时用“printf(“%s”,a[i] );”。

上机题8 输入并运行以下程序,分析程序运行结果。

实验内容:引用函数对数组进行运算#include<stdio.h>main(){int a[5]={1,2,3,4,5};int i;pr(a);for(i=0;i<5;i++)printf("%5d",a[i]);printf("\n");}pr(p)int p[];{int i;for(i=0;i<5;i++)p[i]=p[i]*p[i];}实验结果:实验小结:当形参为数组时,对应的实参为数组名,传递的是数组的首地址,此时实参数组与形参数组共享同一段内存单元,形参数组元素的改变会影响实参数组元素的改变。

上机题9编写程序:从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序并输出。

自定义函数void antitone(int a[],int n)实现将数组中的n个数据按逆序存放。

实验内容:将数组反序并输出,实验步骤:#include<stdio.h>void antitone(int a[],int n);int b[5],n;int i;main(){ n=5;for(i=0;i<n;i++){scanf("%d",&b[i]);}antitone(b,5);}void antitone(int a[],int n){int i,t,c[5];for(i=0;i<n;i++){c[i]=a[n-i-1];printf("%d",c[i]);}}实验结果:实验小结:注意局部变量与全局变量作用域,数组的常量表达式必须是常量,格式必须对,还有对程序的了解。

上机题10已知某数列的前两项为2和3,其后每一项为其前两项之积。

分别用函数和数组实现:从键盘输入一个整数x,判断并输出x最接近数列的第几项?实验内容:从键盘输入一个整数x,判断并输出x最接近数列的第几项实验步骤:#include<stdio.h>#include<math.h>#define M 100int a[M]={2,3};int i,x,t;main(){for(i=0;i<98;i++)a[i+2]=a[i+1]+a[i];scanf("%d",&x);for(i=0;i<99;i++){if(fabs(a[i+1]-x)<fabs(a[i]-x))t=i+1;else t=i;if(x-a[i]<0)break;}printf("%d",t);}实验结果:实验小结:注意对输出时,不要相互赋值例如a【i+1】=a【i】,这样会使输出结果出现数组后几组数据的丢失,注意循环结构的结束循环的控制。

相关文档
最新文档