上机实验七 二维数组

合集下载

☆C语言实验六(第七章二维数组、字符串数组)

☆C语言实验六(第七章二维数组、字符串数组)

1、编写一个主函数:用二维数组存放六行的“杨辉三角形”。

2、编写一个主函数:输入五个国家的名称存放在字符串数组,然后按字母顺序排列输出。

3、编写一个主函数:实现两串字符串的合并、0821张成龙;周俊杰2、0823陈智勇、戴佳3、周徐明、顾文斌单选、填空题:0822(重点关注杨辉三角形、Fibonnacii数列形成)【第一题具体要求】参考下列三个资料后,①教科书P153习题7.6(实验指导书P55);②软件中“第七章填空第21题(或2010春阅读程序第11题)”;或后面附录③软件中“第六章填空第3题(或2006秋阅读程序第11题)”编一主函数,用二维数组存放六行的“杨辉三角形”,并要求按六行输出该三角形数据的参考源程序。

【第二题具体要求】输入五个国家的名称按字母顺序排列输出。

编程思路如下:五个国家名应由一个二维字符数组来处理。

然而C语言规定可以把一个二维数组当成多个一维数组处理。

因此本题又可以按五个一维数组处理,而每一个一维数组就是一个国家名字符串。

用字符串比较函数比较各一维数组的大小,并排序,输出结果即可。

input country's name:ChinaIndiaUSABKKorea输出:BKChinaIndiaKoreaUSA[参考程序]【第三题具体要求】【2009春上机编程题_C06;2010年秋上机题C02改错题中有相同内容】【参考程序】:涉及到书P374:strlen()函数。

【软件第七章】选择题:3、若有数组A和B的声明"static char A[]="ABCDEF",B[]={'A', 'B', 'C', 'D', 'E', 'F'};",则数组A和数组B_____(25)___。

B.6,7 C.6,6 D.7,79、若有声明"char ss[8]= "Red";",则sizeof(ss)的值是___(30)____。

实验七 二维数组实验报告

实验七 二维数组实验报告

***软件类实验报告课程名称:C语言程序设计学号:姓名:班级:指导教师:开课学期:学院:***教务处⑶二维数组处理矩阵问题。

四、实验过程及内容:(运行结果请抓图到对应题目的下方)1.输入下面的程序,说明程序的功能并分析运行结果。

2.程序填空题。

加法口诀表。

输入1个正整数n(1≤n≤10),输出一张10以内的加法口诀表。

加数与被加数都不大于n(将加数、被加数、和放入一个二维数组中,再输出该数组),程序运行结果如图7-1所示。

填空完成程序。

实验结果:3. 程序填空题。

下列程序定义了M×N的二维数组,并在主函数中对其赋值。

函数fun()的功能是计算数组周边元素的平均值并作为函数值返回给主函数。

实验结果:4. 编程insert函数,insert函数的功能是:实现在字符串s的指定的下标位置插入另一个字符串t。

例如:字符串s为“I am a boy.”,t为“good ”,调用insert(s,7,t);则s结果为“I am a good boy.”。

主函数框架如下:#include "stdio.h"#include "string.h"void main(){char s[100]="I am a boy.",t[50]="good ";void insert(char s[],int n,char t[]);insert(s,7,t);puts(s);}请完成insert函数的定义。

实验结果:5. 程序改错题。

打印九九乘法表。

6.编写程序实现,求3*3矩阵两条对角线元素之和五、实验小结。

php二维数组实训报告总结

php二维数组实训报告总结

php二维数组实训报告总结实训报告总结:PHP二维数组引言:在学习PHP编程语言的过程中,二维数组是一个重要的概念。

二维数组可以理解为一个数据表格,其中的元素由行和列来表示。

本次实训中,我们深入了解了二维数组的概念、创建、访问以及使用方法,为我们进一步学习和应用PHP打下了坚实的基础。

一、二维数组的概念:二维数组即为数组的数组,它是一种特殊的数据结构,用于存储具有相同数据类型的元素。

与一维数组不同的是,二维数组在横向上拥有行的概念,纵向上拥有列的概念,可以理解为一个表格。

每个元素在表格中的位置由行和列来确定。

二、创建二维数组:在PHP中,我们可以通过两种方式来创建二维数组。

一种是通过使用array()函数手动创建数组,另一种是将一维数组转换为二维数组。

例如:1.手动创建二维数组:```$students = array(array("张三", 18, "男"),array("李四", 19, "女"),array("王五", 20, "男"));```2.将一维数组转换为二维数组:```$students = array(array("name" => "张三", "age" => 18, "gender" => "男"),array("name" => "李四", "age" => 19, "gender" => "女"),array("name" => "王五", "age" => 20, "gender" => "男") );```三、访问二维数组:在访问二维数组时,我们需要使用双重循环来遍历所有元素。

实验七 数组及其应用(二)

实验七  数组及其应用(二)

实验七 数组及其应用(二)
一、实验目的
1.掌握数组的基本概念。

2.掌握二维数组的声明、引用。

3.掌握静态数组和动态数组的区别。

4.掌握控件数组。

二、实验内容
1 有矩阵A ,用二维数组求其转置矩阵B 。

要求将两矩阵按照矩阵样式显示。

⎥⎦⎤⎢⎣⎡654321A =,⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡635241B = 【提示】
所谓转置,即:b(i,j)=a(j,i)。

2 有3×4矩阵A ,求其中值最大和值最小的那两个元素的值,以及它们所在的行号和
列号。

其中,⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡735086792741A =。

3 打印出如图9-1a 所示的杨辉三角形,要求先输入行数n 。

进一步要求:如果要显示为图9-1b 所示的样式,该如何改动原来的程序呢?
【提示】
(1)杨辉三角形是n b a )(+展开后各项的系数,具有如下规律:各行的第一个和最后一个数都是1;从第三行起,除上面指出的第一个数和最后一个数之外,其它的数是上一行同列和前一列两个数之和,即:]1,1[],1[],[--+-=j i a j i a j i a ,i 为行,j 为列。

(2)为了便于控制,将内容显示在图片框(PictureBox )中。

(3)要显示为图9-1(b )所示的样式,应该利用TAB 函数对每行显示的起始位定位。

图9-1(a ) 实验10.3程序运行界面
图9-1(b ) 实验10.3程序运行界面。

实验七二维数组程序设计

实验七二维数组程序设计

实验七二维数组程序设计实验七二维数组程序设计一、实验学时 2学时二、实验目的(一)掌握二维数组的定义、赋值及输入输出的方法;(二)掌握与二维数组有关的算法如查找、矩阵转置等;(三)掌握在程序设计中使用数组的方法。

数组是非常重要的数据类型,循环中使用数组能更好地发挥循环的作用,有些问题不使用数组难以实现。

(四)掌握在VC++环境下上机调试二维数组程序的方法,并对结果进行分析。

三、预习要求熟悉二维数组的定义、引用和相关算法(求最大值、最小值)的程序设计,同时要掌握在程序设计中利用双重循环来实现二维数组的输入和输出。

四、实验内容(一)二维数组的初始化,即给二维数组的各个元素赋初值。

下面的几个程序都能为数组元素赋值,请输入程序并运行,比较这些赋值方法有何异同。

1.在定义数组的同时对数组元素分行初始化。

/* c7-1.c *//*二维数组的初始化(分行)*/#include "stdio.h"void main( ){ int i,j,a[2][3]={{1,2,3},{4,5,6}};for(i=0; i<2; i++){ for(j=0; j<3; j++)printf("%d ",a[i][j]);printf("\n");}}2.不分行的初始化。

把{ }中的数据依次赋值给数组的各个元素。

/* c7-2.c *//*二维数组的初始化(不分行)*/#include "stdio.h"void main( ){ int i,j,a[2][3]={1,2,3,4,5,6};for(i=0;i<2;i++){ for(j=0;j<3;j++)printf("%d ",a[i][j]);printf("\n");}}3.为部分数组元素初始化。

如:数组定义语句为:int i,j,a[2][3]={{1,2},{4}};4.可以省略第一维的定义,但不能省略第二维的定义。

数据结构二维数组实验报告

数据结构二维数组实验报告

数据结构二维数组实验报告————————————————————————————————作者:————————————————————————————————日期:数据结构(2013)实验报告04班级:XXXX姓名:XXX实验方式:上机成绩:教师批阅处:一、实验名称二维数组基本操作的编程实现二、实验目的二维数组基本操作的编程实现,掌握二维数组的建立、读取数据、压缩存储等基本操作的编程实现,存储结构可以在顺序结构或链接结构中任选,也可以全部实现。

也鼓励学生利用基本操作进行一些应用的程序设计。

三、实验内容修改程序补充推箱子游戏的遗缺的部分,使之能正常运行,逻辑结果正确。

之后增加至少一关自己的关数,墙体,箱子的最初位置,人的最初位置由自己设定,要求必须有解,而且有一定的破解难度。

主要的问题是部分移动方向的代码没有给出,另外计数器的整体工作不正常,更完善的修改包括启用栈结构实现后悔的机制。

1、补充左方向和上方向移动根据源程序提供的右方向和下方向移动的原码,只需将原码稍作修改就能完成移动功能了。

很明显上和下、左和右是两两对应的两个方向,所以只需将原码的‘+’、‘-’号相应修改即可。

但是,抵消人不动的情况中的“count--”不能改动。

2、计数器的改正刚开始游戏的时候,计数器的值应该为0,所以用以计数的变量应初始化为0。

当运行程序时,发现计数器的初始值为111。

所以找到计数器变量并将其致值为0。

而且,当修改好四个方向后,向左和上移动时,计数器的值没变化。

这里,要在条用左方向和上方向的下面,添加计数器,使每调用一次(走一步),计数器加1。

3、添加关数在原来的基础上,我添加了第四和第五两关。

地图原码及截图如下:int map4[roomsize+2][roomsize+2]={ //0,1,2,3,4,5,6,7,8,9,10{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},//0{-1,0,1,1,1,1,1,1,1,-1,-1}, //1{-1,0,1,0,4,2,2,2,1,-1,-1}, //2{-1,0,1,0,0,0,1,1,1,1,-1}, //3{-1,1,1,1,3,0,0,0,0,1,-1}, //4{-1,1,0,0,0,1,3,1,0,1,-1}, //5{-1,1,0,3,0,1,0,0,0,1,-1}, //6{-1,1,0,0,0,1,1,1,1,1,-1}, //7{-1,1,1,1,1,1,0,0,0,-1,-1}, //8{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},//9{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1} //10};int map5[roomsize+2][roomsize+2]={ //0,1,2,3,4,5,6,7,8,9,10{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},//0{-1,1,1,1,1,1,1,1,1,-1,-1}, //1{-1,1,0,0,0,0,0,0,1,-1,-1}, //2{-1,1,0,0,1,1,1,0,0,1,-1}, //3{-1,1,3,4,3,0,0,3,0,1,-1}, //4{-1,1,2,2,1,1,3,0,0,1,-1}, //5{-1,1,2,2,1,1,0,0,0,1,-1}, //6{-1,1,1,1,1,1,1,1,1,1,-1}, //7{-1,1,1,1,1,1,1,1,1,-1,-1}, //8{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},//9{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1} //10};第四关:游戏前游戏完成时图 1第五关:游戏前游戏完成时图 24、添加后退功能在本实验中添加的后退功能,只能后退一步。

实验七: 二维数组和函数程序设计

实验七: 二维数组和函数程序设计

实验七: 二维数组和函数程序设计1、实验目的熟悉二维数组和函数的综合编程方法进一步熟悉排序、查找等基本算法。

2、实验内容某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。

考试后要求:(1)计算每个学生的总分和平均分;(2)按总分成绩由高到低排出成绩的名次;(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。

2、实验要求用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。

(1)用函数编程实现计算每个学生的总分;(2)用函数编程实现按总分由高到低对学生成绩排序,注意:排序时,一维数组sum 元素的变化应连同二维数组score和一维数组num和aver一起变化;(3)用函数编程实现打印名次表(4)用函数编程实现查找学号为k的学生在班级中的排名名次及相关成绩等信息,找不到时返回-1值。

程序画面如下: (仅供参考)Please enter the total number of the students(n<=30):5↙Enter No. and score as: MT EN PH99010 80 87 83↙99011 90 95 93↙99012 67 78 87↙99013 76 89 81↙99014 60 56 45↙Before sort:NO | MT EN PH SUM AVER-------------------------------------------------------------- 99010 | 80 87 83 250 8399011 | 90 95 93 278 9399012 | 67 78 87 232 7799013 | 76 89 81 246 8299014 | 60 56 45 161 54After sort:NO | MT EN PH SUM AVER-------------------------------------------------------------- 99011 | 90 95 93 278 9399010 | 80 87 83 250 8399013 | 76 89 81 246 8299012 | 67 78 87 232 7799014 | 60 56 45 161 54Please enter searching number:99012↙position: NO MT EN PH SUM AVER4 99012 67 78 74 232 77。

二维数组程序设计实验报告

二维数组程序设计实验报告

实验报告一、实验目的(1)掌握二维数组的定义、赋值、输入和输出及二维数组元素的引用方法。

(2)掌握二维数组的相关算法(矩阵行列互换、矩阵中特定数据的查找)。

(3巩固循环嵌套的使用。

(4)学习VC环境下调试二维数组程序的方法。

二、实验内容(1)输入5×5的数组,编写程序实现:1)求出对角线上各元素的和;2)求出对角线上行、列下标均为偶数的各元素之积;3)求出对角线上其值最大的元素和它数组中的位置。

(2)在屏幕上打印出如下杨辉三角形(要求打印出10行)11 11 2 11 3 3 11 4 6 4 11 5 1010 5 1三、实验原理(包括程序源代码、图表等)#include <stdio.h>void main(){int a[5][5];int i,j,n=1,s=0,m,x,y;for(i=0;i<5;i++){for(j=0;j<5;j++)scanf("%d",&a[i][j]);}for(i=0;i<5;i++)for(j=0;j<5;j++)if(i==j)s=s+a[i][j];printf("对角线上数的和为:%d\n",s);for(i=0;i<5;i++)for(j=0;j<5;j++)if(i%2==0&&j%2==0)n=n*a[i][j];printf("行、列下标均为偶数的数的积为:%d\n",n); m=a[0][0];for(i=0;i<4;i++){for(j=0;j<4;j++)if(i==j){if(a[i][j]<a[i+1][j+1]){m=a[i+1][j+1];x=i+1;y=j+1;}}}printf("对角线上最大数为:%d,其行下标为:%d,列下标为%d.\n",m,x,y); }#include <stdio.h>void main(){int a[10][10],i,j;for(i=0;i<10;i++){a[i][0]=1;a[i][i]=1;if(i>1)for(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}for(i=0;i<10;i++){for(j=0;j<=i;j++)printf("%-4d",a[i][j]);printf("\n");}}四、实验结果(附截图)五、思考题如何引用二维数组中的元素?二维数组元素的表示形式是数组名【下标】【下标】。

二维数组知识点

二维数组知识点

二维数组知识点在编程的世界里,二维数组是一个非常重要的概念。

它就像是一个整齐排列的表格,能够帮助我们更有效地组织和处理数据。

接下来,让我们深入了解一下二维数组的奥秘。

首先,什么是二维数组呢?简单来说,二维数组就是一个由行和列组成的数组。

想象一下,我们有一个方格纸,上面的每个小方格都可以存放一个数据,那么这一整张方格纸就可以看作是一个二维数组。

二维数组的声明和初始化有多种方式。

比如说,我们可以这样声明一个二维数组:`int arr34;`这里的“3”表示行数,“4”表示列数,也就是说这个二维数组有 3 行 4 列。

初始化二维数组也有不同的方法。

我们可以在声明的时候直接进行初始化,像这样:`int arr34 ={{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};`这就把每个位置上的值都给定好了。

另外,我们还可以先声明,然后再逐个元素进行赋值。

比如:`int arr34;`之后通过循环或者逐个指定的方式来给数组中的元素赋值。

在使用二维数组的时候,我们通过行和列的下标来访问其中的元素。

比如说,要访问上面声明的数组中的第一个元素,就是`arr00` ,第二个元素就是`arr01` ,以此类推。

二维数组在实际编程中的应用非常广泛。

比如说,在图像处理中,图像可以看作是一个二维数组,每个元素代表一个像素的颜色值。

在游戏开发中,地图也可以用二维数组来表示,不同的元素值代表不同的地形或者物体。

再举个例子,如果我们要编写一个程序来记录学生的成绩,每个学生有多门课程的成绩,那么就可以用二维数组来存储。

行代表学生,列代表课程,每个元素就是该学生对应课程的成绩。

在处理二维数组的时候,循环是经常用到的工具。

比如,我们想要打印出一个二维数组的所有元素,就可以使用嵌套的循环。

外层循环控制行,内层循环控制列。

而且,在很多算法中,二维数组也发挥着重要的作用。

比如,在寻找二维数组中的最大值、最小值,或者进行排序等操作时,都需要对二维数组的特性有深入的理解。

实验7.2 二维数组

实验7.2 二维数组

实验7.2 二维数组1 求矩阵各行元素之和(调试示例error07_3)2 矩阵运算3 九九乘法表4 判断上三角矩阵5 算算看,这是第几天?6 找鞍点(选作)1 求矩阵各行元素之和(调试示例error07_3)/*-----程序填空,不要改变与输入输出有关的语句。

输入2个正整数m 和n (1<=m<=6, 1<=n<=6),然后输入矩阵a(m 行n 列)中的元素,分别求出各行元素之和,并输出。

输出使用语句:printf("sum of row %d is %d\n", i, sum);输入:3 2 (m=3,n=2)6 31 -83 12输出:sum of row 0 is 9sum of row 1 is -7sum of row 2 is 15----*/#include <stdio.h>int main(void){int i, j, m, n, sum;int a[6][6];scanf("%d%d",&m,&n);for(i = 0; i < m; i++)for(j = 0; j < n; j++)scanf("%d", &a[i][j]);for(i=0;i<m;i++){sum=0;for(j=0;j<n;j++)sum=sum+a[i][j];printf("sum of row %d is %d\n", i, sum);}return 0;}2 矩阵运算/*---程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0<repeat<10),做repeat 次下列运算:读入1 个正整数n(1≤n≤6), 再读入n 阶方阵 a , 计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

实验07-1参考答案

实验07-1参考答案

实验七-1 数组程序设计班级:学号:姓名:评分:一.【实验目的】1、熟练掌握使用一维数组编程的方法。

2、熟练掌握排序算术。

3、熟练掌握使用二维数组编程的方法。

4、进一步掌握C程序的调试方法和技巧。

二.【实验内容和步骤】1、程序调试题A.目标:进一步学习掌握程序调试的方法和技巧。

B.内容:从键盘输入一个正整数n(0<n<9)和一组(n个)有序的整数,再输入一个整数x,把x插入到这组数组中,使该组数据仍然有序。

改正程序中的错误,使其实现程序的功能。

(注:程序文件保存在“调试示例”文件夹中,文件名为error07_1.cpp)①调试正确的源程序清单#include <stdio.h>int main( ){int i, j, n, x, a[10];printf("输入数据的个数n:");scanf("%d", &n);printf("输入%d个整数:", n);for(i = 0; i < n; i++)scanf("%d", &a[i]);printf("输入要插入的整数:");scanf("%d", &x);for(i = 0; i < n; i++){if(x > a[i]) continue;j = n - 1;while(j >= i){ /* 调试时设置断点 */a[j+1] = a[j];j--;} /* 调试时设置断点 */a[i] = x;break;}if(i == n) a[n]=x;for(i = 0; i < n + 1; i++)printf("%d ", a[i]);putchar('\n');return 0;}②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。

二维数组知识点

二维数组知识点

二维数组知识点二维数组是编程中一个非常重要的概念。

在这篇文章里,咱们就来好好聊聊二维数组到底是怎么一回事。

想象一下,你有一个书架,这个书架不是一层,而是分成了好几层,每一层又分成了好多格子。

二维数组就有点像这个书架,它不仅有行,还有列。

咱们先从最基础的说起。

二维数组在很多编程语言里,就像是一个表格。

比如说,你可以定义一个 3 行 4 列的二维数组,那就像是一个 3 行 4 列的表格。

那怎么创建一个二维数组呢?不同的编程语言有不同的方法,但原理是差不多的。

以 C 语言为例,你可以这样写:`int arr34;`这就创建了一个 3 行 4 列的整数类型的二维数组。

创建好了之后,怎么给里面放东西呢?还是拿刚才的例子来说,你可以通过下标来给每个位置赋值。

比如`arr00 = 1;`这就把 1 放到了第一行第一列的位置。

在使用二维数组的时候,要注意下标的范围。

因为如果下标越界了,程序可能就会出错。

比如说,咱们刚才创建的是 3 行 4 列的数组,那么行的下标就只能是 0、1、2,列的下标就只能是 0、1、2、3。

二维数组在实际编程中有很多用处。

比如说,你要存储一个矩阵的数据,二维数组就很合适。

再比如,你要表示一个棋盘的状态,二维数组也能派上用场。

咱们来举个例子,假设你要写一个程序来计算一个矩阵的和。

那首先,你得把矩阵的数据存到二维数组里,然后通过两层循环来遍历这个二维数组,把每个元素加起来。

```cinclude <stdioh>int main(){int arr33 ={{1, 2, 3},{4, 5, 6},{7, 8, 9}};int sum = 0;int i, j;for (i = 0; i < 3; i++){for (j = 0; j < 3; j++){sum += arrij;}}printf("矩阵的和为:%d\n", sum);return 0;}```在这个例子里,我们先定义了一个 3 行 3 列的二维数组来存储矩阵的数据,然后通过两层循环来计算矩阵的和。

二维数组上机作业

二维数组上机作业

二维数组上机作业
1、定义一个二维数组,用来记录3个学生的java,c#,sql三门功课的成绩,二维数组的一行记录一个人的成绩,要求循环输入,最后输出格式如下,并计算出第2个学生的总分和平均分,以及java课程的总分平均分:
javac#sql
第1名学生897998
第2名学生9980100
第3名学生799987
2、定义一个二维数组,int[3][4],要求是循环输入12个整数,放入到数组中,然后使用嵌套循环找到这个数组中的最大值。

3、求一个3*3矩阵对角线元素之和
4、使用二维数组完成杨辉三角:要求使用循环,显示10行。

10000
11000
12100
13310
14641
5、判断一个数是不是回文数。

采用数组的方式实现
如12321、45954这种正念反念完全一样的数字就成为回文数
6、用数组完成Fibonacci数列的前20项,规律为:1,1,2,3,5,8,13,21,34。

7、询问用户希望生成一个几行几列的二维数组,然后询问用户希望在数组的哪个位置出现“人”,然后按要求打印数组。

如用户希望生成4行5列数组,希望在3行2列出现“人”,则显示结果为:
* * * * *
* * * * *
* 人 * * *
* * * * *
定义一个10行10列的二维数组(未赋值情况下整形数组中元素默认为0),在这个二维数组中,随机显示10个数字1(像扫雷游戏那样每局开始都能随机生成雷)。

C语言程序设计实验七 数组的应用

C语言程序设计实验七   数组的应用
char s[]={‘\t’‘\n’,
‘\n’,
‘/’,
‘*’,
‘\n’,
/* (213 lines deleted)*/
0
};
/* The string is a representation of the body of this program from ‘0’to the end */
printf(“%d”,num[i]);
}
3、操作符&用以求一个变量的地址,这在函数scanf中已经使用过了。现在要你设计一个程序,返回一个3 * 5的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存诸的。
4、1983年,在ACM图林奖颁奖大会上,杰出的计算机科学家,UNIX的鼻祖,C语言的创始人之一,图林大奖得主,Ken Thompson上台的第一句话是:“我是一个程序员,在我的1040表上,我自豪地写上了我的职业。作为一个程序员,我的工作就是写程序,今天我将向大家提供一个我曾经写过的最精练的程序。”这个程序如下:
}
(3)#include <stdio.h>
main()
{int a[2+2*4];
}
通过这一实验,可以说明什么问题?
2、运行下面的C程序,根据运行结果,可以说明什么?
#include <stdio.h>
main( )
{int num[5]={1,2,3,4,5};
int i;
for(i=0;i<=5;i++)
main( )
{ int i;
printf(“char \ts[]={\” };
for (i=0;s[i];i++)

二维数组的实验报告

二维数组的实验报告
高级语言程序设计实验报告
班级:0900姓名:学号:*****
课程名称
高级语言程序设计
实验项目
一级指针与一维数组变成及函数编程练习
实验项目类型
验证
演示
综合
设计
指导教师
李养群
成绩
一、实验目的
(1)掌握一级指针的定义与使用。
(2)掌握一维数组的定义与使用,理解数组的长度与下标的范围。
(3)正确使用流程控制语句,掌握指针法与下标法访问数组元素的方法。
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
if(array[j]<array[i])
{ temp=array[i];
array[i]=array[j];
array[j]=temp;}
}
printf("数组从小到大的排列顺序为:\n");
for(i=0;i<10;i++)
{
sum=sum+p[i];
if(max<p[i])
max=p[i];
if(min>p[i])
min=p[i];
}
average=sum/10;
printf("数组的最大值与最小值,平均值如下\n");
printf("max=%5f\n",max);
printf("min=%5f\n",min);
printf("average=%5f\n",average);
for(i=0;i<10;i++)

exp7—二维数组字符数组

exp7—二维数组字符数组

上机实验七二维数组与字符素组班级学号姓名一共6个题,其中2个选做题。

第一个选做题应该比较简单,希望大家都能试试。

一.目的要求1.掌握二维数组的基本概念,如何定义二维数组,如何初始化二维数组。

2.掌握二维数组的基本操作:引用数组元素、行(列)求和,行(列)最大最小值,整个数组的输入输出等。

3.掌握与二维数组有关的算法,如找最大最小值(或位置)、矩阵转置等。

4.掌握字符串与字符数组的基本应用方法二.实验内容【实验题1】程序填空:输入一个4×4矩阵,求出主对角线上的元素之和sum1、副对角线上的元素之和sum2,并输出结果。

提示:每一行只有一个主对角线元素a[i][i](特征:i==j),也仅有一个副对角线元素a[i][n-i-1](特征:i+j==n-1,即j=n-1-i)源程序:#include<stdio.h>void main(){ int i,j,sum1=0,sum2=0, a[4][4];printf("Input a 4*4 matrix:\n");for() //输入矩阵元素for()scanf("%d", &a[i][j]);for(i=0; i<4; i++ ){ //计算sum1和sum2sum1 +=;sum2 +=;}printf("sum1=%d, sum2=%d\n", sum1,sum2); //输出结果}运行程序,并输入数据: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16运行结果:sum1= , sum2=【实验题2】程序填空:打印杨辉三角形前10行:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1……………………算法提示:分析一个10行的杨辉三角,需要一个10×10的二维矩阵a,则:1)杨辉三角为下三角矩阵,只需要求出第i行(i=0,1,2,…,9)前i+1个元素,即a[i][j]!=0 (j=0…i). 2)每行的第0列元素均为1,即a[i][0]=1;3)每行的主对角线元素也均为1,即a[i][i]=1;4)从第2行开始,每行夹在第0列元素与主对角线元素之间的元素a[i][j]( i=2,3,…,9, j=1,..,i-1 ) 等于其左上方元素a[i-1][j-1]与正上方元素a[i-1][j]之和,即a[i][j]=a[i-1][j-1]+a[i-1][j];5)输出该矩阵的下三角,即得出杨辉三角的前10行。

实验7-二维字符数组

实验7-二维字符数组

1、有一个2×4的矩阵,要求编程序找出每一行中值最大的那个元素并与该行第1列的元素交换。

2、编写n个学生、m门课程的成绩处理程序:(1)n个学生、m门课程的成绩用二维整型数组描述(2)求出每个学生的总成绩、平均成绩。

(3)求出每门课程的平均成绩。

\3、程序填空,编写一个字符串复制程序,它的功能是把一个字符串的所有内容复制给另一个字符串,并输出复制后的字符串。

#include <stdio.h>void main(){char s1[80],s2[80];int i;printf("请输入字符串s1(<=80 字符)\n");gets(s1);for(i=0;_s1[i]!=’\0’_______;i++)s2[i]=s1[i];___s2[i]=’\0’;______printf("s2=%s\n",s2);printf("谢谢,按回车键结束");}4、若有数组str1[20]={"abcd"},str2[30]={"1234"}和str3[30]={"computer"},要得到str1[20]=“12cdcomputer”的结果,应如何编程,再把str1[20]=“12cdcomputer”与str2[30]={"1234"}做比较,如果str1数组的值较大,输出str1数组的实际长度。

(全部用字符串函数实现)问题:可以使用2个函数实现字符串的复制,对于此题,是否使用2个函数都可以达到题目要求,如不行,说明采用另一种时结果将变成什么样。

做完上述题目可让老师检查5、利用二维数组输入6个float类型数据(不超过4位),利用switch语句判断其位数,如果是3位或4位数据,输出其最高位,如果是1位或2位数据,输出其最低位(提示:先取整再判断)void bsnhk(float a){float *p;p=&a;}main(){}6、编写程序,读入若干国家的名称,按字典顺序排序输出。

上机实验七_答案(请自行校对)

上机实验七_答案(请自行校对)

上机实验七学号: ____________ 目的要求1. 掌握二维数组的基本概念,如何定义二维数组,如何初始化二维数组。

2.掌握与数组有关的算法,如最大最小值(或位置)、转置数组等。

3. 掌握gets(s)、put(s)等字符串函数的作用:把以回车结束的键盘输入的字符串赋值给 字符数组s 。

二.实验内容第1题、 求一个3X 4矩阵的所有靠外侧的的元素之和/*解题思路: 矩阵外侧元素总共有 4部分组成:第一行、最后一行、第一列和最后一列*/#define N 3#define M 4#include vstdio.h>void main() {int a[N][M];int i, j, sum;printf (”请输入%d*%d 二维数组的值:",N, M); for (i=0; i<N; i++)for (j=0; j<M; j++)scanf("%d", &a[i][j]);〃先计算第1行和最后一行所有元素的和sum = 0;for (i=0; i<M; i++)sum += a[0][i]+a[N-1][i];//计算第1列和最后1列所有元素的和 for (i=0; i<N; i++)sum += a[i][0] + a[i][M-1];〃再减去4个角落的元素,因为它们重复计算了一次 sum -= a[0][0] + a[0][M-1] + a[N-1][0] + a[N-1][M-1];printf("矩阵的外侧元素之和为 %d\n", sum);打印输出其转置矩阵。

二维数组 姓名:#include <stdio.h> void main() {int a[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}}, b[4][3]; int i, j;printf(" 矩阵 a 为:\n");for (i=0; i<3; i++) {for (j=0; j<4; j++){b[j][i] = a[i][j];printf("%5d", a[i][j]);} printf("\n");}printf(" 矩阵 b 为:\n");for (j=0; j<4; j++) {for (i=0; i<3; i++){printf("%5d", b[j][i]);} printf("\n");}}第3题、给定一个N*N 的方阵,求出其上三角元素之和/*解题思路:上三角形是指主对角线右上角的所有元素*/#define N 10#include <stdio.h>void main() {int a[N][N];int i, j, sum;printf(" 请输入%d*%d 二维数组的值:\n", N, N); for (i=0; i<N; i++) for (j=0; j<N; j++)scanf("%d", &a[i][j]);// 计算上三角形所有元素之和sum = 0;for (i=0; i<N; i++) {//对于第i行,列是从i开始,直到N-1时结束for (j=i; j<N; j++) sum +=a[i][j];}printf(" 上三角形元素之和为:%d\n", sum);}第4题、打印杨辉三角形前10 行(分别用二维数组和一维数组实现)11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1//杨辉三角形(二维数组)#include <stdio.h> main(){int a[10][10];int i, j, k;for (i=0; i<10; i++){a[i][O] = 1; II第i行的第0个元素是1 a[i][i] = 1; // 第i 行的第i 个元素是1II 其它列的元素是由前一行的当前列和前一列的和for (j=1; j<i; j++)a[i][j] = a[i-1][j-1]+a[i-1][j];printf(" 杨辉三角形为:\n");for (i=0; i<10; i++) {for (j=0; j<=i; j++) printf("%d ", a[i][j]);printf("\n");}printf("\n");}//杨辉三角形(一维数组)#include <stdio.h>main() {int a[10];int i, j, k;printf(" 杨辉三角形为:\n");for (i=1; i<=10; i++){〃处理第i行,下面计算第i行各列的值a[i-1] = 1; // 最后一列为 1 for (j=i-2; j>0;j--) {// 第j 列是其本身与前一列之和a[j] = a[j]+a[j-1];}// 打印第i 行所有元素for (j=0; j<i; j++) printf("%d ", a[j]);printf("\n");}printf("\n");第5题、假设一个班级有 5 名学生,每个学生有 6 门课的成绩,请求出每个学生的平均成绩和每门课的平均成绩。

实训七 二维数组程序设计和答案

实训七 二维数组程序设计和答案

实训七二维数组程序设计(附答案在后面)一、语法基础1、二维数组中元素在内存中的排列顺序是。

2、对于数组a[M][N],行下标的最大值是 ,列下标的最大值是。

3、字符串以为结束标志,C语言中,有/没有字符串类型,字符串用来表示。

二、实训内容和步骤1、二维数组的初始化,即给二维数组的各个元素赋初值。

下面的几个程序都能为数组元素赋值,请调试并运行程序,比较这些赋值方法有何异同。

/*分行*/#include <stdio.h>void main(){ int i,j,a[2][3]={{1,2,3},{4,5,6}};for(i=0;i<2;i++){for(j=0;j<3;j++)printf(“%d”,a[i][j]);printf(“\n”);}}/*不分行*/#include <stdio.h>void main(){ int i,j,a[2][3]={{1,2,3,4,5,6};for(i=0;i<2;i++){for(j=0;j<3;j++)printf(“%d”,a[i][j]);printf(“\n”);}}注意:为部分数组元素初始化,如:数组定义语句为:int i,j,a[2][3]={{1,2},{4}};数组定义语句可以省略第一维的定义,但不能省略第二维的定义。

2、求一个4*4矩阵的主对角元素之和,填空(每个空可能包括多条语句)并调试运行程序编程提示:○1定义一个4行4列的二维数组a○2可利用双重循环的嵌套为该二维数组的各个数组元素赋值,一般格式为:for(i=0;i<4;i++)for(j=0;j<4;j++)scanf(“%d”,&a[i][j])○3利用循环求和,并注意矩阵对角上线元素的特征是:行下标和列下标相同。

○4输出对角线元素之和/*求主对角线元素之和*/#include<stdio.h>Void main(){Int a[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};Int I,sum=0;For(i=0;i<4;I++);/*把对角线元素和放在变量sum中*/Printf(“sum=%d\n”,sum);/*输出对角线元素的和*/}横线下面应填:3、改错(复制下面源程序到VC编辑栏),程序功能为:输入两个正整数m和n(m和n应≥1且≤6),然后输入该m行n列二维数组a中的元素,分别求出各行元素之和,并输出。

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

上机实验七二维数组
学号: 姓名:
一.目的要求
1.掌握二维数组的基本概念,如何定义二维数组,如何初始化二维数组。

2.掌握与数组有关的算法,如最大最小值(或位置)、转置数组等。

3.掌握gets(s)、put(s)等字符串函数的作用:把以回车结束的键盘输入的字符串赋值给字符数组s。

二.实验内容
第1题、求一个3×4矩阵的所有靠外侧的的元素之和。

第2题、已知一个3×4矩阵a[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}},打印输出其转置矩阵。

第3题、给定一个N*N的方阵,求出其上三角元素之和。

第4题、打印杨辉三角形前10行。

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 1010 5 1
……………………
第5题、假设一个班级有5名学生,每个学生有6门课的成绩,请求出每个学生的平均成绩和每门课的平均成绩。

第6题、将一个整数字符串转换为整数输出。

(注:整数字符串和整数是不同的,比如"123"是一个整数字符串,每个元素都是一个数字,但不能进行数
值运算,而123是一个整数,可以进行数值运算。

两者外观形态相似,
本质不同)
第7题、编写一个字符串复制程序,它的功能是把一个字符串的所有内容复制给另一个字符串,并输出复制后的字符串。

第8题、编写一个求字符串长度的程序,它的功能求出一个字符串中有效字符的个数。

第9题、编写一个字符串连接程序,它的功能是把两个不知道长度的字符串s1、s2的内容连接成为一个字符串,并保存在字符串s1中。

(提示:要定义
足够长的字符串s1)
第10题、判断一个字符串是否为回文,如果是输出“yes”,否则输出“no”。

所谓回文是指正读和反读相同的字符串,比如“12321”
第11题、有一篇文章,共有3行文字,每行有80个字符,统计这篇文章中各个英文字母的个数。

(提示:可以定义一个长度为26的整型数组num,
分别记录26个英文字母的个数,比如读入的字母为'a',则num[0]++,
读入的字母为'b',则num[1]++,......)
第12题、该程序功能:输入1个字符串,按字母出现次序输出其中所出现过的大写英文字母。

如运行时输入字符串"FONTNAME and
FILENAME",应输出"F O N T A M E I L"。

该文件中“/***** N *****
/”的下一行中有错误,请改正!。

相关文档
最新文档