C语言实验五_数组
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语言数组的理论知识和基本操作进行练习,加深了对数组的了解和掌握。
C语言数组的应用实验报告

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)用多组数据进行测试,验证程序的正确性。
C语言实验五实验报告——数组

C语言实验五实验报告——数组实验五:数组实验目的:1.掌握数组的定义和使用;2.熟悉数组在函数中的传递;3.练习编写使用数组的程序。
实验原理:数组是一组相同类型的变量的集合,这些变量称为数组的元素。
数组的名字是一个指针常量,它存放的是数组首个元素的地址。
数组元素在内存中是连续存放的,可以通过下标访问每一个元素。
数组的定义:数组的定义格式为:数据类型数组名[数组长度];数组的初始化:数组可以在定义时进行初始化,也可以在定义之后通过赋值进行初始化。
数组作为函数参数:数组可以作为函数的形参进行传递,可以通过指针传递整个数组,也可以传递数组的部分元素。
实验步骤:1.编写一个程序,实现对学生成绩的管理。
要求如下:-使用一个数组保存学生的成绩;-能够动态添加学生的成绩,并显示添加成功的信息;-能够计算学生的平均成绩,并显示;-能够根据用户输入的学号查找对应学生的成绩,并显示。
2.编写一个程序,实现对一组整数进行排序。
要求如下:-首先自定义一个整数数组,数组元素个数为用户输入;-编写一个函数,实现对数组进行排序,要求使用选择排序算法;-在主函数中调用该函数,对数组进行排序后显示。
实验结果与分析:1.学生成绩管理程序运行结果如下:```-------学生成绩管理系统-------[1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:1请输入成绩:90添加成功![1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:1请输入成绩:85添加成功![1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:2平均成绩为:87.5[1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:3 [1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:4退出系统。
```2.整数排序程序运行结果如下:```-------整数排序-------请输入待排序的整数个数:6请输入第1个整数:5请输入第2个整数:3请输入第3个整数:9请输入第4个整数:2请输入第5个整数:7请输入第6个整数:1排序前的整数序列为:539271排序后的整数序列为:123579 ```实验总结:通过本次实验,我深入理解了数组的原理和用法,并且掌握了数组在函数中的传递。
c语言实验五数组

实验五数组
实验目的:
1、熟练掌握一维数组、二维数组的定义、赋值和输入输出方法;
2、熟练掌握字符数组和字符串函数的使用;
3、掌握与数组有关的常用算法(如查找、排序等)。
实验内容:
1. 实现用选择法对n个整数的排序,按从小到大的顺序。
2.有n个整数,使其前面各数顺序向后移动m(m<=n)个位置,最后的m个数变成最前面的m个数,且移动的元素之间的相对位置不变。
3. 编程实现:输入4行5列的矩阵,输出其中最大的那个元素的值,以及其所在的行号和列号。
4. 编写一个程序,将一个3*4的矩阵转置。
5. 编程实现:输入一行文字,求出其中大写字母、小写字母、空格、数字及其他字符各有
多少。
6. 编写一程序,将两个字符串连接起来,要求不用strcat函数。
7.译密码。
为使电文保密,往往按照一定规律将其转换成密码,收报人再按约定的规律将其译回原文。
一种明文向密文转换的规则是:将字母A变成F,a变成f,即变成其后的5个字母,W变成B,X变成C,Y变成D,Z变成E。
例如,”China”变成了”Hmnsf”,请编写程序实现上述的加密功能。
(很多实验内容都是书上的,请参看书上程序,但一定要自己看懂,不要只抄袭)。
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;}```运行程序,输入不同的目标值,查看查找和修改的结果。
实验五 数组实验

实验五数组的使用一实验目的要求1 掌握数组的概念和使用方法。
2 掌握数组初始化的方法。
3学会字符数组和字符串的应用。
4 学会用数组名作函数的参数。
二有关概念1 只有静态数组和外部数组才能初始化。
2 引用数组时,对下标是否越界不作检查。
如定义int a[5];在引用时出现a[5],不给出错信息,而是引a[4]下面一个单元的值。
3 字符串放在字符数组中,一个字符串以‘/o’结束,有一些字符串函数如strcpy,strcmp,strlen等可以方便一进行字符串运算。
4 如有如下定义:char *str=“I love china”;表示 str是一个字符型指针变量,它的值是一个字符数据的地址。
不要认为str是字符串变量,在其中存放一个字串“I love china”。
5 用数组名作函数实参时,传到形参的是数组的首地址。
三实验内容和步骤1 定义三个数组int a[5];int b[2][2];char c[10];(1)分别在函数体外和函数体内对它们进行初始化,然后输出它们的值。
(2)在程序中再加一语句,输出a[5],b[2][2] ,分析结果。
(3)对C数组改为用赋值语句给各元素赋初值:c[0] ~ c[9]各元素分别为:…I‟, …‟, …a‟, …m‟, …‟, …b‟, …o‟, …y‟。
然后用printf(“%s”,c)输出字符串,分析结果。
参考程序如下:(1)main(){ int i,x,y;static int a[5]={1,2,3,4,5};static int b[3][2]={{3,4},{6,7},{9,5}}static char c[10]={ …i‟, …l‟, …p‟, …q‟, …k‟, …s‟, …d‟, …e‟, …a‟};for(i=0;i<5;i++)printf( “%5d”,a[i]);for(x=0;x<3;x++)for(y=0;y<2;y++)printf(“%5d”,b[x][y]);for(i=0;i<10;i++)printf(“%3c”,c[i]);}(2)结果无此值,在上面程序中要输出a数组第5个元素,和b数组的第3行第2例元素,应加此程序行:Printf(“%d”,a[4]);Printf(“%d”,b[2][1]);2 有一数组,内放10个整数,要求找出最小的数和它的下标。
C语言程序设计实验报告-数组

一、实验项目名称数组二、实验目的1.掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。
2.掌握字符数组与字符串的使用方法。
理解字符数组与其它数组的区别、理解字符串及其特点。
掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。
3.掌握与数组相关的算法,包括排序算法和查找算法等。
三、实验内容进行有关数组的程序设计。
具体内容: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语句。
(2)在输入/输出时进行必要的说明。
(3)对输入的2~10之间的整数(例如4)以n=4的格式输出。
C 实验五 数组的程序设计解析

}
}
for(i=0;i<n;i++)
{
if (i>0)
printf(" ");
printf("%d",ascanf("%d",&m);
for(i=0;i<m;i++)
{
int t,mid;
scanf("%d",&t);
int s=0,e=n-1;
while(s<=e)
2.Problem Description如果矩阵A中存在这样的一个元素A[i][j]满足下列条件:A[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。编写一个程序计算出矩阵A的马鞍点的值。
Input输入数据首先包含一个整数T,表示测试实例的个数,然后是T组测试数据。
实验名称:实验五 数组的程序设计
班级学号姓名
实验地点完成日期成绩
(一)实验目的
1.掌握一维和二维数组定义、赋值和使用方法;
2.掌握字符数组和字符串函数的用法;
3.掌握与数组有关的算法(特别是排序算法)。
(二)实验内容
1.Problem Description对于输入的n个整数,先进行升序排序,然后进行二分查找。
Output对于每组测试数据,输出马鞍点的值,若不存在鞍点,输出Impossible。(1208)
运行结果:
3.对给定的数据进行排序。每组测试数据的结构是:第一行为一个整数N(0<N<100),表示后面有N个整数(每个整数最多可达80位)需要排序输出,先按长度排(短的在前),如长度一样则按大小排(小的在前)。若遇到N等于零,则运行结束。每组结果之间留一个空行。(1154)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验(实训)报告项目名称实验五数组所属课程名称 C 语言程序设计项目类型验证性实验(实训)日期2011/11.16/11.23/11.30班级10统计2学号100112100236姓名裴晓晓指导教师刘亚楠浙江财经学院教务处制一、实验(实训)概述:【实验目的】1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。
2. 掌握字符数组和字符串函数的使用。
3. 掌握与数组有关的算法(特别是排序算法)。
【实验要求】1.选择合适的数据类型表达应用要求;2.正确运用循环结构处理数组问题;3.输入和输出格式清晰,有提示信息。
能对输入数据进行基本的合理性判断。
【基本原理】见第五章课件和课本内容【实施环境】(使用的材料、设备、软件)Visual C++ 6.0二、实验(实训)内容:第1题【项目内容】完成课后第3题。
求一个3×3矩阵对角线元素之和。
【方案设计】提示:请在此粘贴你的完整程序。
□#include <iostream>using namespace std;int main(){int a[3][3];int i,j,sum;sum=0;for(i=0;i<3;i++)for(j=0;j<3;j++){cin>>a[i][j];if(i==j)sum=sum+a[i][j];}cout<<"sum="<<sum<<endl;return 0;}【实验(实训)过程】(步骤、记录、数据、程序等)【结论】(结果、分析)提示:请记录该程序的运行过程:输入输出。
比如:123 456↙(↙表示输入,如果没有输入,则没有这一行)a+b=579 (输出)并尽可能对程序的执行结果进行分析。
□4 55 62 34 723 5 66sum=104第2题【项目内容】完成课后第4题。
提示:自定义数组a的大小和内容。
插入一个数number到已排好的数组中,可以有以下两种方法:(1)先从数组前面开始比较number和数组元素a[i]的大小,直到找到待插入的正确位置(即a[i-1]<number<a[i]),接着把这个位置上和以后位置上的数组元素向后移动,空出待插入元素的位置,然后插入。
(2)或者先把待插入的数放在数组的最后,然后再对数组元素的次序逐步调整以到达有序的状态。
【方案设计】提示:请在此粘贴你的完整程序。
□#include <iostream>using namespace std;int main(){int a[11]={2,5,8,17,28,39,58,89,100,298},n,i,j;cout<<"a[i]="<<endl;for (i=0;i<10;i++)cout<<a[i]<<" ";cout<<endl;cout<<"n="<<endl;cin>>n;if(n>a[9])a[10]=n;else{for(i=0;i<10;i++){if(n<a[i]){for (j=9;j>=i;j--)a[j+1]=a[j];a[i]=n;break;}}}cout<<"the new order:"<<endl;for(i=0;i<11;i++)cout<<a[i]<<" ";cout<<endl;return 0;}【实验(实训)过程】(步骤、记录、数据、程序等)【结论】(结果、分析)提示:请记录该程序的运行过程:输入输出。
比如:123 456↙(↙表示输入,如果没有输入,则没有这一行)a+b=579 (输出)并尽可能对程序的执行结果进行分析。
□a[i]=2 5 8 17 28 39 58 89 100 298n=56the new order:2 5 8 17 28 39 56 58 89 100 298第3题【项目内容】完成课后第5题。
提示:注意程序的通用性,即考虑数组元素个数为奇数或偶数两种情况下,都可以实现。
【方案设计】提示:请在此粘贴你的完整程序。
□#include <iostream>using namespace std;int main(){const int n=6;int m,i,j,a[n];cout<<"the origial array:";cout<<endl;for(i=0;i<n;i++)cin>>a[i];cout<<endl;for(i=0;i<n/2;i++)for(j=7;j>n/2;j--)if(i+j==n-1){m=a[i];a[i]=a[j];a[j]=m;}cout<<endl<<"the sorted array:"<<endl;for(i=0;i<n;i++)cout<<a[i]<<" ";cout<<endl;return 0;}【实验(实训)过程】(步骤、记录、数据、程序等)提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。
□回答:【结论】(结果、分析)提示:请记录该程序的运行过程:输入输出。
比如:123 456↙(↙表示输入,如果没有输入,则没有这一行)a+b=579 (输出)并尽可能对程序的执行结果进行分析。
□the origial array:14 8 9 78 4 2the sorted array:2 4 9 78 8 14第4题【项目内容】完成课后第6题。
提示:杨辉三角形是(a+b)n展开后各项的系数。
例如:(a+b)0展开后为 1 系数为1(a+b)1展开后为a+b 系数为1,1(a+b)2展开后为a2+2ab+b2系数为1,2,1(a+b)3展开后为a3+3a2b+3ab2+b3系数为1,3,3,1(a+b)4展开后为a4+4a3b+6a2b2+4ab3+b4系数为1,4,6,4,1以上就是杨辉三角形的前5行。
第n行的系数个数为n,各行的系数有以下规律:(1) 各行第一个数都是1。
(2) 各行最后一个数都是1。
(3) 从第三行起,除上面指出的第一个数和最后一个数外,其余各数是上一行中的同列和前一列两个数之和。
算法如下:(1) 使二维数组a第1列和对角线元素的值为1。
(2) 数组其它各元素的值为a[i][j]=a[i-1][j-1]+a[i-1][j]。
(3) 输出数组各元素的值。
【方案设计】提示:请在此粘贴你的完整程序。
□#include <iostream>#include <iomanip>using namespace std;int main(){int i,j,a[11][11];for(i=1;i<11;i++){for(j=1;j<=i;j++)if(j==1)a[i][j]=1;elseif(j==i)a[i][j]=1;elsea[i][j]=a[i-1][j-1]+a[i-1][j];}cout<<"杨辉三角:"<<endl;for(i=1;i<11;i++){for(j=1;j<=i;j++)cout<<a[i][j]<<" ";cout<<('\n')<<endl;}return 0;}【实验(实训)过程】(步骤、记录、数据、程序等)提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。
□回答:【结论】(结果、分析)提示:请记录该程序的运行过程:输入输出。
比如:123 456↙(↙表示输入,如果没有输入,则没有这一行)a+b=579 (输出)并尽可能对程序的执行结果进行分析。
□杨辉三角:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 11 8 28 56 70 56 28 8 11 9 36 84 126 126 84 36 9 1Press any key to continue第5题【项目内容】完成课后第8题。
提示:假定有n个不同的整数n>=1,且它们已经排序并且存放在数组list中,即list[0]<=list[1]<=……<=list[n-1]。
要求判定某个整数searchnum是否在数组list中,如果在数组中,则返回下标i,使list[i]=searchnum。
如果不在数组list中,就返回-1。
如果此数组已经被排序,则可以采用如下折半查找法(binary search)来查找。
设两个变量left和right分别表示被查找表的左边界和右边界,初始化时,left=0,right=n-1。
令middle=(left+right)/2为list的中间位置。
如果将list[middle]与searchnum进行比较,则会出现下列三种情况:(1)searchnum<list[middle]。
此时,如果searchnum在数组中,则其一定在0到middle-1之间。
因此,把查找右边界right设置为middle-1。
(2)searchnum=list[middle]。
此时,返回middle。
(3)searchmun>list[middle]。
此时,如果searchnum在数组中,则其一定在middle+1到n-1之间,因此,把查找左边界left设定为middle+1。
如果没有找到searchnum,且数组中还有没检查过的数,那么就重新计算middle 值,并继续查找。
【方案设计】提示:请在此粘贴你的完整程序。
□【实验(实训)过程】(步骤、记录、数据、程序等)提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。
□回答:【结论】(结果、分析)提示:请记录该程序的运行过程:输入输出。
比如:123 456↙(↙表示输入,如果没有输入,则没有这一行)a+b=579 (输出)并尽可能对程序的执行结果进行分析。
□第6题【项目内容】完成课后第10题。
【方案设计】提示:请在此粘贴你的完整程序。