实验八 一维数组与二维数组
- 格式:doc
- 大小:28.50 KB
- 文档页数:2
实验报告课程名称:高级语言程序设计实验六:一维数组和二维数组班级:学生姓名:学号:专业:指导教师:学期:2015-2016学年上学期云南大学信息学院一、实验目的1、掌握一、二维数组的定义及初始化2、掌握数组元素的输入、输出及引用方法3、掌握使用循环对数组元素进行访问4、掌握一、二维数组的简单应用 二、知识要点1、一、二维数组的定义与赋值(初始化、循环键盘输入)2、访问数组元素(下标的正确使用)3、数组的典型应用(复制、求和、统计某种元素个数、求数组中的最大/最小值、元素的查找与排序)三、实验预习 (要求做实验前完成)1、定义一个有四个元素的float 型数组:float a[4];2、定义一个具有五个元素的整型数组并将其初始化为{1,2,3,4,5}:inta[5]={1,2,3,4,5};3、要用循环从键盘输入整型数组s 的元素值(共6个),应该使用语句:4、交换数组元素d[2]和d[4],使用语句:5、语句for(k=0;k<3;k++) x[2][k] = 0; 将把哪些元素变为0? 四、实验内容 (要求提供:① 算法描述或流程图 ② 源程序 )1、已知一个数组有10个元素,值分别是3,6,8,4,5,66,80,72,69,70。
编程,将数组元素逆置后输出。
(提示:第一个与最后一个交换位置,第二个与倒数第二个交换位置,……)2、编程序求Fibonacci 数列的前30项,Fibonacci 数列的定义为:⎪⎩⎪⎨⎧>+===--)2()2(1)1(121n f f n n f n n n 要求将数列存放在数组中,并按每行5个数的格式输出该数列。
3、输入14 一个4行4列的二维数组,统计偶数的个数,并输出所有小于5的数。
4、已知一个二维数组:{{14,26,18,17},{24,37,21,8},{19,31,22,16},{7,19,14,26}},编程,输出该二维数组的最小元素的行下标与列下标。
一、实验目的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()); } }。
关于c语言数组(一维二维知识点总结)关于数组一、一维数组1)定义:int a[10];2)数组中元素的书写:a[0],…….a[9]3)数组名a是?数组的首地址:&a[0]4)一维数组中所有的元素在地址上是连续的!5)数组元素中数据的获得?1)在定义数组的同时初始化:完全初始化、部分初始化;2)定义后,对数组元素单独赋值:a[2]=120;3)从键盘接收数据:for(i=0;i<10;i++)scanf("%d",&a[i]);6)数组元素的输出for(i=0;i<10;i++)printf("%d",a[i]);7)数组元素的计算for(i=0;i<10;i++)s+=a[i];二、二维数组1.二维数组的定义:int b[3][4];2.行标号和列标号3.数组名b,也是它的首地址:&b[0][0]4.二维数组中数组元素是按行存储的,所有的元素地址是连续的5.每个二维数组可以把它看成多个一维数组(每行是一个一维数组)6.二维数组中数组元素的值的获得?1)在定义数组的同时初始化:完全初始化、部分初始化;2)定义后,对数组元素单独赋值:b[2][0]=120;3)从键盘接收数据:for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&b[i][j]);7.二维数组的输出:for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%d",b[i][j]);printf("\n");}三、。
实验九数组应用1一、教与学目的1、理解数组的基本概念(数组名,类型、大小、维数);2、数组基础知识(定义;数组元素引用;数组元素的输入和输出)3、基于数组的常用算法设计(求最大/小数;和/平均值,查找数据;排序)二、主要内容:1、一维数组基础知识:问题:给出10个整数,求和及平均值。
(思考:(1)定义有10个元素构成的数组(2)如何给定10个元素(初始化?输入?随机赋值?)(3)如何求和及平均值。
2、二维数组基础知识:问题:有一个3*4的矩阵, 编程求出其中的最大值及其所在的行号和列号。
(思考:(1)如何定义该矩阵?(2)如何给定矩阵元素值?(初始化?输入?随机赋值?)(3)如何求最大数(打擂台算法?)3、基于一维数组的算法设计:第7周作业1(1)求最大数/最小数;求最大数或最小数所在的位置(下标)方法:打擂台方法(假设---验证)设计:给定10个数据,求最大数及所在的位置。
(2)利用数组,求F数列前36项。
(教材P168)(3)设计一个查询程序:给定一个数组(假设10个,数据内容自定),输入一个待查找的数据,输出查找的结果。
(4)给定10名学生一门课程的考试成绩(假设是百分制),统计各分数段的人数。
分数段划分如下:优:>=90;良:>=80;中:>=70;及格:>=60;不及格:<60 4、基于二维数组的算法设计:第7周作业2(5)输出10行杨辉三角。
(6)有一个3*4的矩阵, 编程求出其中的最大值及其所在的行号和列号。
(7)将一个矩阵进行转置(即原来的行变为列)三、作业提交方法:把所有CPP文件打包上传。
第7周课后要求:1、把第1-6周的作业和课前练习全部整理出来,并上机运行,并熟练掌握,达到看到题目就能写对的程度,能理解算法以及能手动执行程序。
2、完成课本1-4章的所有思考与实验,以及6.1节的思考与实验P145,不懂的题目大家可以留言问我或者和同学讨论。
实验九一、实验目的:1、熟悉一维二维数组的定义、引用和初始化,以及字符数组的输入与输出。
2、进一步熟悉循环语句的使用,特别是多个for语句的嵌套。
3、通过练习,掌握几个字符串处理函数:puts、gets、strcat、strcpy(strncpy)、strcmp、strlen、strlwr、strupr,熟悉它们的功能与应用情况。
二、实验内容:1、#include<stdio.h>int main(){char a[5][9]={{'*','*','*','*','*'},{' ','*','*','*','*','*'},{' ',' ','*','*','*','*','*'},{' ',' ',' ','*','*','*','*','*'},{' ',' ',' ',' ','*','*','*','*','*'}};int i,j;for(i=0;i<5;i++){for(j=0;j<9;j++)printf("%5c",a[i][j]);printf("\n");}}结果:* * * * ** * * * ** * * * ** * * * ** * * * *Press any key to continue2、#include<stdio.h>#include<string.h>void main(){char s1[100],s2[100],a,b,sum;int i,j,m;printf("请输入两个字符串:\n");gets(s1);gets(s2);if(strlen(s1)==strlen(s2))if(strcmp(s1,s2)==0)printf("0\n");else{for(i=0,j=0;a=s1[i],b=s2[j];i++,j++)if(a>b){ sum=a-b;printf("%d\n",sum);break;}else if(a<b){ sum=a-b;printf("%d\n",sum);break;}}else if(strlen(s1)>strlen(s2)){m=strlen(s2);printf("%d\n",s1[m]);}else{m=strlen(s1);printf("%d\n",-s2[m]);}}结果:(1)请输入两个字符串:aswer-114Press any key to continue(2)请输入两个字符串:aseqw101Press any key to continue(3)请输入两个字符串:asdasdPress any key to continue(4)请输入两个字符串:sredwa15Press any key to continue三、实验总结:1、一维二维字符数组的一半形式分别为:“类型符数组名[常量表达式];”,“类型说明符数组名[常量表达式][ 常量表达式];”在字符数组的初始化中,可以不定义字符数组的长度,可以只给数组中的一部分元素赋值,其他部分元素默认为“0”。
第八课一维数组一维数组一、为什么要使用数组例1 输入50个学生的某门课程的成绩,打印出低于平均分的同学号数与成绩。
分析:在解决这个问题时,虽然可以通过读入一个数就累加一个数的办法来求学生的总分,进而求出平均分。
但因为只有读入最后一个学生的分数以后才能求得平均分,且要打印出低于平均分的同学,故必须把50个学生的成绩都保留下来,然后逐个和平均分比较,把高于平均分的成绩打印出来。
如果,用简单变量a1,a2,…,a50存放这些数据,可想而知程序要很长且繁。
要想如数学中使用下标变量ai形式表示这50个数,则可以引入下标变量a。
这样问题的程序可写为:tot:=0;{tot表示总分}for i:=1 to 50 do {循环读入每一个学生的成绩,并累加它到总分}beginread(a);tot:=tot+a;end;ave:=tot/50;{计算平均分}for i:=1 to 50 doif a<ave then writeln('No.',i,' ',a);{如果第i个同学成绩小于平均分,则将输出}而要在程序中使用下标变量,则必须先说明这些下标变量的整体―数组,即数组是若干个同名(如上面的下标变量的名字都为a)下标变量的集合。
二、一维数组当数组中每个元素只带有一个下标时,我们称这样的数组为一维数组。
1、一维数组的定义(1)类型定义要使用数组类型等构造类型以及第6章要学习的自定义类型(枚举类型与子界类型),应在说明部分进行类型说明。
这样定义的数据类型适用整个程序。
类型定义一般格式为:type<标识符1>=<类型1>;<标识符2>=<类型2>;:<标识符n>=<类型n>;其中type是Pascal保留字,表示开始一个类型定义段。
在其后可以定义若干个数据类型定义。
<标识符>是为定义的类型取的名字, 称它为类型标识符。
头歌云课C语言实验八:数组及其应用关卡1:折半查找关卡2:二位数组操作关卡3:二维数组的展开关卡4:数组元素交换关卡5:幻方第1关: 折半查找本关任务:由N个有序整数组成的数列已放在一维数组中,给定程序的功能是:利用折半查找法查找整数m在数组中的位置。
若找到,返回其下标值,否则返回-1。
编程要求请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写折半查找的小程序。
测试说明平台会对你编写的代码进行测试:测试输入:5预期输出:-5 4 9 15 28 45 66 89 100 180Not be found!测试输入:9预期输出:-5 4 9 15 28 45 66 89 100 180m=9,index=2代码:#include <stdio.h>#define N 10int main(){int i, a[N]={-5,4,9,15,28,45,66,89,100,180 }, k=-1, m; int low=0, high=N-1, mid;for(i=0;i<N;i++)printf("%d ", a[i]);printf("\n");scanf("%d",&m);while(low <= high){mid = (low + high) / 2;if(m < a[mid])high = mid-1;/***** 以下一行有错误*****/else if(m > a[mid]) low=mid+1;/***** 以下一行有错误*****/else {k=mid;break;}}if(k>=0)printf("m=%d,index=%d\n",m,k);elseprintf("Not be found!\n");return 0;}第2关: 二位数组操作本关任务:输入一个N×N的二维数组。
一维数组与二维数组对照表
题目一:用起泡法对10个数进行降序排列。
(起泡法排序的排序过程如下,首先将第一个记录与第二个记录进行比较,若为逆序(R[1]>R[2]),则将两个记录交换,然后比较第二个记录和第三个记录。
依次类推,直到第n- 1个记录完成比较为止。
上述过程称为第一次起泡排序过程,其结果使得最大的记录被放在了最后一个记录的位置上。
然后进行第二次起泡排序,对前n- 1个记录进行同样的操作将次大的记录放在第n-1个记录的位置上。
)
题目二:输入多个学生的身高(以米为单位),求学生的平均身高,并显示超过平均身高学生的个数。
题目三:输入3个学生的3门课的成绩,求每门课学生的平均成绩及每个学生的总成绩。
题目四:输入一个句子,计算句子中单词的个数
题目五:输入三角形的边长求三角型的面积。
√s(s-a)(s-b)(s-c) 其中:s=(a+b+c)/2
题目六:输入百分制成绩,按照5分制输出。
(A,B,C,D,E,F)
题目七:编程判断一个数是否是素数。
(判断一个数是否是素数的规则是:如果一个数m能被2和√m之间的任何一个整数整除,则m不是素数,否则是素数。
)
题目八:用*号输出“I LOVE C”.
题目九:输入多个学生的名字,按升序输出。
题目十:利用指针实现将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中各单元的值。
题目十一:利用字符指针求字符串中各种字符的个数
字符串操作列表
题目四:输入一个句子,计算句子中单词的个数。
实验8:一维数组与二维数组
实验名称:一维数组与二维数组成绩:
实验日期:年月日实验报告日期:年月日
一、实验目的
1、理解一维数组和二维数组的概念
2、掌握一维数组和二维数组的定义、初始、数组元素引用。
3、掌握一维数组和二维数组的输入/输出。
4、掌握与数组有关的算法。
二、实验内容
1、编制程序,求Fibonachi数列的前10项。
提示:Fibonachi的第1,2项分别为1,1。
其后任何一项满足a i=a i-2+a i-1。
2、编写找出1-100之间能被7或11整除的所有整数,存放在数组a中,并统计其个数。
要求
以每行排列5个数据的形式输出a数组中的数据。
3、设有4x4的方阵,其中的元素由键盘输入。
求出(1)主对角线上元素之和;(2)辅对角线
上元素之积;(3)方阵中最大的元素。
提示:主对角线元素行、列下标相同;辅对角线元素行、列下标之和等于方阵的最大行号(或最大列号)-下标、行列号基于0。
三、实验要求
1、编制源程序,对于程序3输入测试数据。
2、在Turbo C下完成程序的编辑、编译、运行。
查看、分析程序结果。
四、实验步骤、过程
1、编辑、编译、运行程序题1。
2、编辑、编译、运行程序题2。
3、编辑、编译、运行程序题3。
测试数据:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
五、源程序清单、测试数据、结果。
六、实验出现的问题、实验结果分析
(1)数组下标范围容易搞错,容易产生越界错误。
(2)利用 scanf()输入数据时取地址符号(&)容易忘记。
七、实验小结和思考
典型算法需要在理解的基础上记忆。