实验四 数组(详细模板)

合集下载

数组及应用实验报告

数组及应用实验报告

一、实验目的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语言程序设计实验报告 数组

C语言程序设计实验报告 数组

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

实验4数组1

南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合□√设计□创新实验日期:实验成绩:一、实验名称实验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 );错误,因为数组元素的输入和输出只能逐个元素操作,而不能以数组名作整体操作。

实验四 数组与指针

实验四 数组与指针

所包含的10天再累加到Tday中。
内容四:测试数据
2012 2012 2012 2012 年 2月10日 年 5月10日 年10月10日 年12月21日 存1000元 存200元 取300元 计息 年利率0.36%
计算结果:利息 = 3.38元
计算过程: 5月10日 日积数 1000元*90天
10月10日
注:5 即金额变动日期3.10减去开户日期3.5,也即1000元的存款天数。 10 即计息日期3.20减去金额变动日期3.10,也即3000元的存款天数。
由此,我们看出利息的计算重要的是计算出每次金额变动时日积数 的累计值,而要计算此值首先需要计算每次金额变动时前次金额的存款 天数。
内容四:活期储蓄类设计
主控函数实现:
Int main() { int i,n ; float s ; char na[10]; Cstudent st[N]; //定义对象数组 for(i=0;i<N;i++) { cout<<"输入学号 姓名 成绩:"; cin>>n>>na>>s; st[i].setdata (n ,na ,s); //调用设置函数给对象的数据成员赋值 } cout<<endl<<" 输出数据:"<<endl; cout<<setw(10)<<"学号"<<setw(10)<<"姓名"<<setw(5)<<"成绩"<<endl; for(i=0;i<N;i++) st[i].disp(); cout<<" 平均分="<<setprecision(4)<<Cstudent::Avg()<<endl; return 0; }

数组函数实验报告

数组函数实验报告

数组函数实验报告数组函数实验报告引言:数组是一种常用的数据结构,它可以存储多个相同类型的数据,并且可以通过索引来访问和操作这些数据。

在编程中,数组函数是一种非常实用的工具,可以对数组进行排序、查找、插入、删除等操作。

本文将介绍几个常用的数组函数,并通过实验验证其功能和效果。

一、数组排序函数数组排序函数可以将数组中的元素按照一定的规则进行排序,常见的排序算法有冒泡排序、选择排序、插入排序等。

我们选择了冒泡排序算法进行实验。

实验步骤: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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
编程点拨:
①初始化row、colum及max。
②使用for循环的双重循环逐行把元素值与max值进行比较,比较结果如果元素值比max值大,则改变max值,同时改变row和colum的值。
③最后输出max,row和colum的值。
相关知识:①二维数组的定义和初始化;②使用二重循环对二维数组元素的访问;③求最值时相关变量初值的设定。
av+=a[i];
printf("av=%f\n",av);
}
上面给出的程序是完全可以运行的,但是运行结果是完全错误的。调试时请注意数组元素的输入问题、输出格式问题等。请使用前面实验所掌握的调试工具,判断程序中的错误并改正。
相关知识:①数组元素值的输入;②求和求平均值的相关变量初始化问题;③输出格式符的正确使用。④数组元素的格式化输出。
部分源代码:
k=0;
if ( a[k]<a[1] )真
k=1;执行
if ( a[k]<a[2] )假
k=2;不执行
if ( a[k]<a[3] )真
k=3;执行
相关知识:①删除数组元素的概念;②移动数组元素的算法;③求最大值位置的算法。
7.以下c50107.c程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空:
#include <stdio.h>
voidmain( )
{int i, j, row, colum, max;
static int a[3][4] = {{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}};
……
printf(" Max = %d, Row = %d, Colum = %d \n", max, row, colum);
j=1 a[j] ≥k?即18 ≥15 ?是j++
j=2 a[j] ≥k?即16 ≥15 ?是j++
j=3 a[j] ≥k?即14 ≥15 ?不是,结束循环
while( a[j]>=k && j<10 ) j++;
找不到比k小的元素时也要退出循环
③向右移动插入点后的元素;先把a[9]移到a[10],a[8]移到a[9],…a[i]移到a[i+1],直到把a[j]移到a[j+1],即:i=j停止移动元素。
#include <stdio.h>
#include <string.h>
void main()
{ char a[10],b[10];
int c,d,k,ch;
scanf("%s",&a);
scanf("%s",&b);
printf("a=%s,b=%s\n",a,b);
c=strlen(a);
d=strlen(b);
将整个字符串一次输入或输出。用“%s”格式符,意思是输出字符串(string),此时输入输出函数中的输入输出项是字符数组名,而不是数组元素名。写成下面这样是不对的:printf("%s",c[0]);
② gets()函数和scanf()函数输入字符串的区别,puts()函数和printf()函数输出字符串的区别;
1 4 6 4 1
1 51010 5 1
编程点拨:
杨辉三角形有如下特点:
只有下半三角形有确定的值;
第一列和对角线上的元素值都是1;
其它元素值均是前一行同一列元素与前一行前一列元素之和。
9.调试下列c50201.c程序,使之具有如下功能:任意输入两个字符串(如:“abc 123”和“china”),并存放在a,b两个数组中。然后把较短的字符串放在a数组,较长的字符串放在b数组。并输出。
实验四
一、实验目的及要求
1.掌握一维数组和二维数组的定义、赋值和输入输出的方法;
2.掌握字符数组和字符串函数的使用;
3.掌握与数组有关的算法(特别是排序算法)。
二、实验学时
6学时
三、实验任务
1.调试下列c50101.c程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。写出调试过程。
else printf("Not found%d\n",x);
}
5.编写程序,任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。
编程点拨:
①定义数组时多开辟一个存储单元;
②找合适的插入位置;
j=0 a[j] ≥k?即20 ≥15 ?是j++
scanf("%s", s1);
printf(" \n Please input string2:");
scanf("%s", s2);
while (s1[i]!= '\0' )
i++;
while (s2[j]!= '\0' )
s1[i++]=s2[j ++];
s1[i]= '\0';
printf("\n New string: %s", s1);
printf("sum = %d \n", sum);
}
该程序中有哪些错误?如何修改?写出正确运行后的结果。
相关知识:数组元素的输入和输出只能逐个元素操作,而不能以数组名作整体操作。
3.有一个3行4列的距阵,现要求编程求出其中最大的那个元素的值,以及它所在的行号与列号。程序c50103.c的初始说明和输出语句如下所示,请补充完成该程序。
voidmain ( )
{ int num[26],i; charc;
for (i=0;i<26;i++) num[i]=0;
while ((1)!='#') /*统计从终端输入的大写字母个数*/
if (isupper(c)) num[c-65](2);
for (i=0;i<26;i++) /*输出大写字母和该字母的个数*/
#include <stdio.h>
voidmain ( )
{ char str1[100],str2[100];
int i,s;
printf("\n Input string 1:\n");gets(str1);
printf(“\n Input string 2:\n”);gets(str2);
i=(1);
if(c>d)
for(k=0;k<d;k++)
{ ch=a[k];a[k]=b[k];b[k]=ch;}
printf("a=%s\n",a);
printf("b=%s\n",b);
}
相关知识:程序中的strlen()是库函数,功能是求字符串的长度,它的原型保存在头文件"string.h"中。调试时注意库函数的调用方法,不同的字符串输入方法,通过错误提示发现程序中的错误。
六、注意事项
1.对应该有花括号的复合语句,忘记加花括号
2.在不该加分号的地方加了分号
3.引用数组元素时误用圆括号
4.引用数组元素超界
5.对二维或多维数组定义和引用的方式不对
6.误以为数组名代表整个数组
7.混淆字符数组与字符指针的区别
#include <stdio.h>
voidmain( )
{ float x[1000], sum=0.0, ave, a;
int n=0, i;
printf ("Enter mark : \n") ;
scanf("%f", &a);
while (a>=0.0 && n<1000)
{ sum+=;
x[n]=;
③求每个字符串的长度函数strlen()的使用,字符串比较函数strcmp()的使用;
④二维数组处理多个字符串。
14.编写程序,输入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。如:输入"BEIJING"、"123"和位置3,则输出:"BEI123JING123"。
四、实验重点、难点
}
编辑、运行该程序,然后分别输入Country和side。请问:
程序执行的结果是什么?
该程序的功能是什么?
相关知识: 串结束符’\0’; 自编写库函数。
11.填空完成c50203.c程序,使其功能是对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdefg和abceef,则输出为-1。程序如下:
for(i=9;i>=j;i-- ) a[i+1]=a[i];
c50105.c部分源代码:
#include<stdio.h>
#define N 11
voidmain()
{ int i,j,a[N];
printf(“Please input 10 numbers:”);
for (i=0; i<N-1; i++)
n++;
scanf("%f", &a);
}
ave=;
相关文档
最新文档