实验四 二维数值数组

合集下载

数组实验报告反思心得

数组实验报告反思心得

一、实验背景本次实验旨在通过学习数组的相关知识,掌握数组的定义、初始化、赋值、引用等方法,以及数组的操作和应用。

通过本次实验,我对数组有了更深入的理解,同时也对编程思维和算法设计有了更全面的提升。

二、实验过程1. 实验一:一维数组的定义与初始化实验过程中,我首先学习了如何定义一维数组,以及如何对数组进行初始化。

通过实验,我掌握了以下知识:(1)一维数组的定义格式:类型符数组名[常量表达式];(2)一维数组的初始化方法:在定义数组时,可以在方括号内指定数组的长度,并为数组元素赋初值。

2. 实验二:二维数组的定义与初始化在实验二,我学习了二维数组的定义与初始化。

通过实验,我掌握了以下知识:(1)二维数组的定义格式:类型符数组名[常量表达式1][常量表达式2];(2)二维数组的初始化方法:可以在定义数组时,指定数组的行数和列数,并为数组元素赋初值。

3. 实验三:数组元素的引用与赋值在实验三,我学习了如何引用数组元素,以及如何为元素赋值。

通过实验,我掌握了以下知识:(1)数组元素的引用方法:数组名[下标];(2)数组元素的赋值方法:使用赋值运算符“=”。

4. 实验四:数组的操作与应用在实验四,我学习了数组的操作与应用,包括冒泡排序、选择排序等。

通过实验,我掌握了以下知识:(1)冒泡排序算法:通过比较相邻元素的大小,将较大的元素交换到后面,直到整个数组有序。

(2)选择排序算法:通过比较相邻元素的大小,选择最小(或最大)的元素放到数组的起始位置,然后继续对剩余的元素进行排序。

三、实验反思1. 数组的定义与初始化在实验过程中,我深刻体会到了数组在编程中的重要性。

数组作为一种数据结构,可以有效地存储和操作一组具有相同数据类型的元素。

通过对数组的定义与初始化,我学会了如何创建一个符合实际需求的数组,并为数组元素赋初值。

2. 数组元素的引用与赋值在实验过程中,我学会了如何引用数组元素,以及如何为元素赋值。

这使我更加熟练地掌握了数组的使用方法,为后续的编程实践打下了基础。

实验四 数组应用程序设计实验

实验四  数组应用程序设计实验

实验四数组的应用程序设计一、实验目的1.掌握C语言的一维数组和二维数组的应用;2.掌握常用的排序算法;3.掌握字符数组和字符串函数的使用;二、实验内容编写程序,完成如下功能1. 编写程序实现如下功能,输入了20个整数,把这些整数存放在一个数组中,并且输出其中的最大者与最小者及他们在数组中的下标、这20个数的和及它们的平均值。

2. 从键盘输入15整数,对这些数进行从大到小排序后按次序显示各个数。

3. 在整型数组M中存放12个非0 整数,使用scanf( )函数将12个整数从键盘读入到M中,并要求M中有正数和负数,编写程序,将数组M中的所有正数存放在数组的前面,负数存放在数组的后面,并显示数组M中的各个元素的值。

4.从键盘输入一个字符串并存入字符数组中,分别统计其中的数字字符、字母、空格和其它字符的个数。

5. 从键盘输入一个字符串(小于50个字符,该字符串中可以含有字母、数字和空格),并存入字符数组strArray中,将数组strArray中的字符颠倒后存入另外一个数组reverseArray 中(也就是第一个字符变成最后一个字符,第二个字符变成倒数第二个字符…,), 再把reverseArray数组中的各个字母变成其后的第5个字母(如A变成F,B变成G,…,Z变成E等),分别显示这两个数组中的各元素。

6*. 从键盘输入16个数组成一个4行4列的二维数组,(1)求对角线上的各个元素的和与积;(2)求所有靠边元素的和与积;(3)求所有不靠边元素的和与积7*. 已知有两个矩阵:求矩阵的乘积:C = AB,并按行列显示矩阵C的各个元素。

8*.使用随机函数rand( ), 产生50个[0,100]之间的整数,并把这一批整数存在一个整型数组A中,定义另外一个整形数组B,请把A数组中的数按照从大到小的顺序放入数组B中,最后,分别显示数组A和数组B的各个元素。

提示:随机函数int rand(void) 在头文件stdio.h中,该函数可以返回一个在[0,32767]之间的整数,本实验后面附有例子。

湖北理工学院C语言实验四

湖北理工学院C语言实验四
for(i=0;i!=N;i++)
av+=a[i];
printf("av=%f\n",av);
}
解答:
(1)源代码:
#include <stdio.h>
void main( )
{
int i,n,a[10];
float avg;
n = 10;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
}
printf("\n");
return;
}
}
}
(2)运行结果:
(3)运行结果分析:
6.输入十个互不相同的整数并存在数组中,找出最大元素,并删除。
解答:
#include <stdio.h>
int main()
{
int a[10];
int i,k;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
#include <stdio.h>
void main( )
{int i, a[5], sum = 0;
scanf("%d,%d,%d,%d,%d", a );
for (i = 0; i <= 4; i ++)
sum += a[i];
printf("sum = %d \n", sum);
}
该程序中有哪些错误?如何修改?写出正确运行后的结果。
for(i=0;i<n;i++)

实验四实验报告-数组

实验四实验报告-数组

实验四函数一、实验目的1.掌握函数的定义、函数的说明和调用。

2.掌握函数的参数及其传递方式,函数值的正确返回。

二、实验内容1.[目的]掌握标准库函数的说明和调用方法。

[题目内容]编写一个程序,首先显示一个菜单,然后根据用户的选择,输入数据后,执行相应的操作。

[输入]用户选择和函数自变量值[输出]如下菜单:=======MENU======1.。

sin2.。

cos3.。

pow4.。

sqrt0.。

exit==================[提示]使用标准库函数、多分支选择结构。

源代码:#include <stdio.h>#include <math.h>void main(){int choice,n;double x,z;printf ("======MUNE======\n");printf ("1..........sin\n");printf ("2..........cos\n");printf ("3..........pow\n");printf ("4..........sprt\n");printf ("0..........exit\n");printf ("请输入:");scanf ("%d",&choice);switch (choice){case '1':{printf ("请输入角度:");scanf ("%lf",&x);x=(x*3.14/180);z=sin(x);printf ("%lf的sin值为:%lf",x,z);break;}case '2':{printf ("请输入角度:");scanf ("%lf",&x);x=(x*3.14/180);z=cos(x);printf ("%lf的cos值为:%lf",x,z);break;}case '3':{printf ("请输入x和n:");scanf ("%lf%d",&x,&z);z=pow(x,n);z=sin(x);printf ("%lf的sin值为:%lf",x,z);break;}case '4':{printf ("请输入x:");scanf ("%lf",&x);if (x>=0){z=sprt(x);printf ("%lf的sqrt值为:%lf",x,z);}elseprintf ("Wrong");break;}case '0':{break;default:printf ("Wrong");}printf("\n");}2.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。

c语言二维数组体会

c语言二维数组体会

c语言二维数组体会C语言是一种高级编程语言,它提供了一种以结构化形式编写程序的方法。

在C语言中,数组是一种重要的数据结构,它允许我们存储和操作多个相同类型的数据。

而二维数组是C语言中的一种特殊数组形式,它可以理解为一个由多个一维数组组成的矩阵。

在C语言中,二维数组的操作和使用非常灵活,通过对二维数组的学习和理解,我对C语言的掌握和应用能力得到了提升。

首先,二维数组的定义和初始化是学习二维数组的第一步。

在C语言中,我们可以通过使用方括号来定义一个二维数组,其语法形式如下:datatype arrayname[size1][size2];其中,datatype表示数组中元素的数据类型,arrayname表示数组的名称,size1表示二维数组的行数,size2表示二维数组的列数。

例如,我们可以定义一个3行4列的整型数组:int arr[3][4];这样,我们就创建了一个名为arr的二维数组,它包含3行4列的整型元素。

二维数组的初始化可以分为静态初始化和动态初始化两种方式。

静态初始化是在定义数组的同时给数组元素赋初始值,它的语法形式如下:datatype arrayname[size1][size2] = { {val1, val2, ...}, {val1,val2, ...}, ...};其中,val1、val2等表示各个元素的初始值。

例如,我们可以定义一个3行4列的整型数组并进行静态初始化:int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };这样,数组arr的第一行元素为1、2、3、4,第二行元素为5、6、7、8,第三行元素为9、10、11、12。

动态初始化是在定义数组后通过遍历的方式为数组元素逐个赋值,它的语法形式如下:for (int i = 0; i < size1; i++) {for (int j = 0; j < size2; j++) {arrayname[i][j] = value;}}其中,value表示待赋给数组元素的值。

二维数组的实验报告

二维数组的实验报告
void Sort(int array[],int length);
int main()
{ int a[100],i,n,k;
do
{
printf("输入数组的元素个数:\n");
scanf("%d",&n);
}while(n<0||n>100);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
{
sum+=array[i];
if(max<array[i])
max=array[i];
if(min>array[i])
min=array[i];
}
average=sum*1.0/10;
printf("数组的最大值与最小值,平均值如下\n");
printf("%5f%15f%15f\n",max,min,average);
return 0;
}
实验结果:
2,实验2
#include<stdio.h>
void Print(int array[],int length);
double Average(int array[],int length);
int GetMax(int array[],int length);
int Retrieve(int array[],int length,int x);
2.在main()中定义一个一维数组,从键盘读入数组元素,定义下列函数并在主函数中对各函数进行调用和测试。各自定义函数原型及功能分别如下:
A.打印函数,输出整个数组,数组名array,数组长度length,无返回值。

C语言实验二维数组的

C语言实验二维数组的
三、实验指导
1,题一:利用循环嵌套,外层控制行变化,然后通过一个二层循环首先可以寻找到当前行中得最大元素,记下其列号;再利用一个并列的二层循环到本列中再扫描各行,判断它是不是本列的最小元素,如果是,则是鞍点,输出对应的信息;否则,再扫描一行。程序中需要定义一个统计鞍点个数的变量,如果行都扫描结束还没有一个鞍点,说明该矩阵没有鞍点,给出相应额提示信息。
2,题二:(a)从结构化程序设计的角度来考虑,要设计两个函数来完成数次二维数组的功能,形参分别是行指针和列指针(b)如果列指针p要能正确访问二维数组arr的元素,首先需要定义该列指针,形式是int*p;zai p=*arr的前提下,通过指针q访问一个二维数组的元素arr[i][j],可以有这样集中后方法:q[i][j],*(q[i]+j),*(*(q+i)+j)和(*(q+i))[j]
题(4):用一维指针数组方式进行访问。
3题三:(a)动态二维数组空间的申请分为两步:第一,申请一维指针数组,分量个数=二维数组的行数,第二步;利用每一个一级指针元素再申请动态一维数组,分量个数=二维数组的行列数,这样二维数组的元素就可以表示为从p[0][0]一直到p[n-1][m-1](b)读入动态二维数组元素的方式与静态二维数组是一样的(c)释放动态空间:首先通过一维指针数组的每一个指针元素释放动态二维数组的空间,第二步:再通过二级指针变量释放动态一维指针数组空间。
课程名称高级语言程序设计实验项目二维数组编程练习实验项目类型验证演示综合设计指导教师李养群成绩一实验目的1掌握二维数组的定义初始化与使用方法会正确访问二维数组的元素2了解行指针列指针会利用他们来访问二维数组中得元素二实验步骤1了解操作环境2编写程序3对程序进行调试纠错三实验指导1题一

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

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

数据结构二维数组实验报告————————————————————————————————作者:————————————————————————————————日期:数据结构(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)掌握二维数组的相关算法(矩阵行列互换、矩阵中特定数据的查找)。

(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");}}四、实验结果(附截图)五、思考题如何引用二维数组中的元素?二维数组元素的表示形式是数组名【下标】【下标】。

实验4-数组

实验4-数组

数组一维数组1. 用Array函数生成一个包含10个整数的一维数组,并在窗体上输出,然后分别统计其中正数之和与负数之和,运行效果如图所示。

2. 随机生成10个两位正整数,求其中的最大值和平均值,并将结果显示出来,运行效果如图所示。

3. 实现以下程序功能:程序运行后,在四个文本框中各输入一个整数。

然后单击命令按钮,即可使数组按升序排序,并在文本框中显示出来。

提示:可用array函数生成数组。

二维数组1. 设有一个二维数组A(5,5),给所有数组元素赋值为1-9之间的随机整数,试计算:●所有元素之和。

●所有靠边元素之和。

●正对角线上元素之和。

2. 设有一个二维数组A(5,5),试计算矩阵第三行各项的和,并在窗体上显示出来。

3. 设有一个二维数组A(5,5),试找出正对角线上最大的值。

4.产生一个二维数组A(5,5),要求中心位置值为9,对角线位置值为1,其余位置值为0。

5.设有一个二维数组A(4,4),请交换其中的第二列和第四列,并显示。

6. 实现以下程序功能:运行程序时,随机产生一个4行4列的二维数组,单击“计算”命令按钮时,将统计矩阵两个对角线的元素中能被3整除的个数,统计结果显示在标签lblfirst中;同时计算矩阵主对角线的元素之和,计算结果显示在标签lblSecond中。

列表框和组合框1. 设在窗体中有一个名称为List1的列表框,其中有若干项目。

要求选中一项后单击Command1按钮,就删除选中的项,运行效果如图所示。

点击前选中”北京”点击按钮后删除2. 窗体上有一个组合框,其中已输入了若干项目。

程序运行时,单击其中一项,即可以把该项与上面的一项交换,运行效果如图所示。

点击前选中”重庆”点击后交换3.有10位同学的VB课程的期末成绩,信息如下:82、75、91、65、57、44、78、64、95、62,请将他们的信息保存到数组中,显示在列表框中,在“优秀”、“通过”和“不通过”三个分数段的人数进行统计。

实验04数组

实验04数组

实验04数组
1 定义一个5个元素组成的一维数组,对其进行赋值,再把该值输出来。

2 定义一个5个元素组成的一维数组,对其赋值,再把该数组反向输出。

3 定义一个10个元素组成的一维数组,求该数组中的最大值和最小值。

及最大值和最小值的平均值。

4定义一个10个元素组成的一维数组,求该数组中的最大值,以及最大值在该数组中的位置。

5 在一个由5个元素组成的一维数组中查找一个数字‘5’,如果该有数组中有此元素,由提示“数字5在此数组中”。

6在一个由5个元素组成的一维数组中查找一个已经定义好的数字,如果该有数组中有此元素,由提示“此数组中有***数字”,如果此数组中没有则提示“该数字不在此数组中”
7求一个由10个元素组成的一维数组中,所有元素的平均值
9 求1-1/3+1/5-1/7+1/9......的值。

,要求出前50项和值。

(循环即可)
10 将一个数组中的元素倒排过来,不能新开一个数组的临时存储空间,只能在原数组上改。

(冒泡)
11 编写一个5个元素的数组,将1-22个数随机抽取放到数组中,要求22个数不能有重复的(福彩22选5玩法)
12 编写一个二维数组(5行5列),将1-25这些数字放入数组中,要求二维数组的每一行每一列和对角线的和相加都相等(提示将1放到数组第一行的中间位置,下一个数字放到1的左上方,如果从矩阵上面出界,则放到最后一行,如果从左侧出界则放入到最后一列,如果左上
角被占用,则放到该数字的下方,类推)。

综合性、设计性实验报告(数组应用)4维数组

综合性、设计性实验报告(数组应用)4维数组

综合性、设计性实验报告姓名学号专业计算机科学与技术班级1402实验课程名称____数据结构_指导教师及职称___开课学期2016 年_上学期上课时间实验名称:数组应用实验时间:小组合作:是●否○1、实验目的:(1)掌握数组的基本应用和方法;(2)掌握字符数组和字符串函数的使用。

(3)掌握与字符串处理有关的算法。

2、实验设备及材料:机器配置:4G内存,AMD A8操作系统:windows xp开发工具:V C ++6.03、理论依据:【1】在C语言的环境,有一个四维数组,在计算机中都是以一维的形式保存。

【2】例如int cof[2][2][2][2]在计算机中保存形式与一个2*2*2*2大小的一维数组相同, 想要寻址一个数,因为编译器在看到数组的定义时就知道了数组每一维的大小.于是可以计算定位到相对于数组开始处的偏移.【3】为了容易理解,都是把多维数组分解成几行,每行中又有几列的这种形式,例如int cof [4][6][4][4],就是4行,每行中有6个元素,每个元素又是一个有4个子元素一维数组,而数组中的每个子元素仍然还是一个有4个子元素数组,【4】四维数组可视为以三维数组为数据元素的向量,四维数组中的每个元素都属于四个向量。

【5】由于计算机内存是一维的,多维数组的元素应排成线性序列后存人存储器。

数组一般不做插入和删除操作,即结构中元素个数和元素间关系不变化。

一般采用顺序存储方法表示数组。

分为行优先顺序和列优先顺序。

【6】由地址计算公式可得,数组中任一元素可通过地址公式在相同时间内存取。

即顺序存储的数组是随机存取结构。

4、算法步骤及注意事项:算法步骤:(1)首先,在定义四维数组的数据类型时,我选择了整型以方便编程及利于数据的输入和输出。

为了实现任务所要求的功能,我将程序划分为三类:功能函数,界面函数以及主函数。

另外,其中的功能函数包括以下几种函数:四维数组元素输入函数、四维数组元素输出函数、元素查找函数、功能介绍函数以及主函数。

二维数组的正确说明

二维数组的正确说明

二维数组的正确说明二维数组是一种在编程中常用的数据结构,它可以存储一个数组的数组。

具体来说,二维数组是一个可以包含多个一维数组的数组。

每个一维数组称为一个“行”,而每个一维数组中的元素称为“列”。

在大多数编程语言中,二维数组的声明和初始化方式会有所不同。

下面是一些常见的编程语言中二维数组的声明和初始化示例:Python:```python声明一个3x4的二维数组(即3行4列)array = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]初始化值array[0][0] = 1array[1][2] = 2array[2][3] = 3```Java:```java// 声明一个3x4的二维数组(即3行4列)int[][] array = new int[3][4];// 初始化值array[0][0] = 1;array[1][2] = 2;array[2][3] = 3;```C++:```cpp// 声明一个3x4的二维数组(即3行4列)int array[3][4] = {0}; // 所有元素初始化为0// 初始化值array[0][0] = 1;array[1][2] = 2;array[2][3] = 3;```JavaScript:```javascript// 声明一个3x4的二维数组(即3行4列)let array = ({length: 3}, () => Array(4).fill(0)); // 所有元素初始化为0// 初始化值array[0][0] = 1;array[1][2] = 2;array[2][3] = 3;```。

C语言 实验4指针实验

C语言 实验4指针实验

实验4指针实验一、实验目的(四号黑体)(1)通过实验进一步掌握指针的概念,会定义和使用指针变量;(2)能够正确使用数组的指针和指向数组的指针变量;(3)能够正确使用字符串的指针和指向字符串的指针变量;(4)能正确使用指向函数的指针变量。

二、实验原理(算法分析(包括流程图))1、a是二维数组,p和形参 pointer是指向整型数据的指针变量,P指向数组0行0列元素a[0][0]。

在调用move函数时,将实参p的值&a[0][0]递给形参 pointer,在move函数中将a[i][j]与a门的值互换。

由于a数组的大小是3×3,而数组元素是按行排列的,因此a[j在a数组中是第(3×i+j)个元素,例如,a[2[1是数组中第(3×2+1)个元素,即第7个元素(序号从0算起)。

a[i[j的地址是( pointer+3*i+j),同理,a[j][i]的地址是( poInter+3*j+i)。

将*( pointer+3*i+j)和*( pointer+3*j+i)互换,就是将a[i][j]和[i][j]互换算法如下:2、当p1所指向的字符比p2大时,t为正数(即,p1所指向的字符的ASC II码,减去p2所指向的字符的ASC II码大于0),当p1所指向的字符比p小大时,为负数,当p1所指向的字符与p2一样大时,t=0;所以实现上诉命令的算法如下:三、实验过程原始记录(数据、图表、计算等)1、(1)本题目要求编程实现矩阵的转置,并且在实现这一操作时只能使用指针,因此解决这一问题时,应注意下面几个问题:数组名是一个指针变量,但该指针变量是一个常量;int a[10] 中的a 的类型等同于 int *p 定义的指针变量p;int a[10][5]中定的a的类型等同于 int (*p)[5];(2)程序代码如下:#include <stdio.h>int main(){void move(int * pointer);int a[3][3], * p, i;printf("输入矩阵:\n");for (i = 0; i < 3; i++)scanf_s("%d%d%d", &a[i][0], &a[i][1], &a[i][2]);p = &a[0][0];move(p);printf("转置后:\n");for (i = 0; i < 3; i++)printf("%d %d %d\n", a[i][0], a[i][1], a[i][2]);return 0;}void move(int * pointer){int i, j, t;for (i = 0; i < 3; i++)for (j = i; j < 3; j++){t = *(pointer + 3 * i + j);*(pointer + 3 * i + j) = *(pointer + 3 * j + i);*(pointer + 3 * j + i) = t;}}2、程序代码如下:#include "stdio.h"int main(int argc, char* argv[]){int strcmp(char* p1, char* p2);char s[100], a[100];printf_s("输入一串字符1: ");gets_s(a);printf_s("输入一串字符2: ");gets_s(s);printf("%d\n", strcmp(a, s)); return 0; }int strcmp(char* p1, char* p2){int t;t = *p1 - *p2;for (;t == 0 && p1!="0"&&*p2!='0';) {p1++;p2++;t = *p1 - *p2;}return t;}四、实验结果及分析1、输入矩阵结果如下:2、(1))输入第一个字符串比第二个小结果如下:分析:a 的ASCII代码是97,c的是99,所以二者相减t=-2(2)第一个字符串比第二个大(3)输入完全相同的字符串五、附录(自己实现的源代码)1、#include <stdio.h>int main(){void move(int * pointer);int a[3][3], * p, i;printf("输入矩阵:\n");for (i = 0; i < 3; i++)scanf_s("%d%d%d", &a[i][0], &a[i][1], &a[i][2]);p = &a[0][0];move(p);printf("转置后:\n");for (i = 0; i < 3; i++)printf("%d %d %d\n", a[i][0], a[i][1], a[i][2]);return 0;}void move(int * pointer){int i, j, t;for (i = 0; i < 3; i++)for (j = i; j < 3; j++){t = *(pointer + 3 * i + j);*(pointer + 3 * i + j) = *(pointer + 3 * j + i);*(pointer + 3 * j + i) = t;}}2、#include "stdio.h"int main(int argc, char* argv[]){int strcmp(char* p1, char* p2);char s[100], a[100];printf_s("输入一串字符1: ");gets_s(a);printf_s("输入一串字符2: ");gets_s(s);printf("%d\n", strcmp(a, s)); return 0;}int strcmp(char* p1, char* p2){int t;t = *p1 - *p2;for (;t == 0 && p1!="0"&&*p2!='0';){p1++;p2++;t = *p1 - *p2;}return t;}。

数组、字符处理实验报告[五篇范例]

数组、字符处理实验报告[五篇范例]

数组、字符处理实验报告[五篇范例]第一篇:数组、字符处理实验报告验实验 4数组1.实验目的和要求(1)掌握一维数组与二维数组的定义、使用及初始化方法。

(2)学习数组作为函数参数的用法。

(3)掌握字符数组和字符串函数的使用方法。

(4)掌握与数组有关的常用排序算法,进一步理解模块化程序设计的方法。

(5)掌握字符、字符串的输入/输出方法。

(6)掌握字符数组的使用。

(7)学会使用字符串的指针和指向字符串的指针变量。

2.实验内容:实验指导书中的实验六、实验七3.实验步骤实验六数组部分:6-1:解决问题的算法或源程序代码:程序的运行测试结果截图(考虑各种情况下的运行结果):6-2:该程序完整的源程序代码是:程序运行结果截图:6-3 :该程序完整的源程序代码是:程序运行结果截图:6-4.:解决问题的关键算法的源程序代码是:程序运行结果截图:6-5:解决问题的关键算法的源程序代码是:程序运行结果截图:6-6(选作):我使用的算法为:请用文字描述一下程序运行结果截图:6-7(选作):我使用的算法为:程序运行结果截图:7-1 该程序的功能是:去除空格后的字符串程序运行结果截图:7-2:解决问题的关键算法的源程序代码是:程序运行结果截图:7-3:解决问题的关键算法的源程序代码是:程序运行结果截图:7-4:解决问题的关键算法的源程序代码是:程序运行结果截图:7-5:解决问题的关键算法的源程序代码是:程序运行结果截图:7-6:解决问题的关键算法的源程序代码是:程序运行结果截图:、实验小结一维数组与二维数组使用和初始化,数组作为函数参数的用法还是不太熟练。

掌握了与数组有关的常用排序算法,字符、字符串的输入输出方式。

进一步掌握使用字符串的指针和指向字符串的指针变量的方法。

掌握了字符串数组和数字数组的运算。

第二篇:实验:字符数组与字符串实验11:字符数组与字符串一、实验目的1、理解字符数组和字符串的概念。

2、掌握字符数组的定义、初始、数组元素引用、输入输出。

C语言二维数组和字符数组程序设计实验

C语言二维数组和字符数组程序设计实验

C语言二维数组和字符数组程序设计实验
一、实验目的
1.通过C程序的运行,强化掌握C程序在VC++6.0上的开发过程。

2.掌握C语言二维数组和字符数组程序设计。

二、实验环境
1.WIN XP、WIN7、WIN10等操作系统的PC机;
2.VC++6.0集成开发环境;
三、实验内容
1.参考第4章【例4-7】中的程序,定义4行5列的浮点型数组a并初始化,按行列格式输出,理解简单二维数组程序设计。

2.参考第4章【例4-10】中的程序,字符数组存储10个元素,输出数组中第3到第7个元素,理解简单字符数组程序设计。

3.修改第4章【例4-14】中的程序,for循环扫描字符串的结束条件,用i<输入字符串的长度进行判断,理解字符数组程序设计的应用。

4.修改第4章【例4-16】中的程序,输入一个字符串,删除字符串中某个指定字符和字符r,理解字符数组程序设计的应用。

5.参考第4章【例4-6】P102-103选择排序的程序,输入12个整数,输出由大到小的排序,理解一维数组排序应用的程序设计。

四、实验数据及处理结果
1.实验内容的源代码以及运行结果的截图;。

二维数组基本操作的编程实现

二维数组基本操作的编程实现

实验四二维数组基本操作的编程实现一、实验目的掌握二维数组的建立、读取数据、压缩存储等基本操作的编程实现,存储结构可以在顺序结构或链接结构中任选,也可以全部实现。

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

二、实验要求1. 修改程序:补充推箱子游戏的遗缺的部分,使之能正常运行,逻辑结果正确。

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

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

2.运行程序了解二维结构:稀疏矩阵的压缩和解压缩、生命繁衍模型、迷宫问题等,通过这些程序的运行过程或结果体会二维结构在程序设计中的重要性和实用性。

原始数据构建方式最简模式为:键盘输入。

其他的方式也在鼓励之中:数据内置,计算机自动生成,文件读入。

三、程序说明程序中用于建立栈的类//节点class Reback{public:int re_key_up;int re_key_down;int re_key_left;int re_key_right;int re_count;int re_movex;int re_movey;int re_movexold;int re_moveyold;int re_peopleflag;int re_Maptemp[11][11];Reback *next;Reback *before;};Reback *headp=new Reback;//头指针Reback *tailp=new Reback;//尾指针说明:此类用于存储每一步的游戏临时数据,用于回退程序中的功能函数void myDraw(HWND hWnd,HDC &dc);//界面的绘制void Key_D(HWND &hWnd,HDC &dc,int key_value);//响应键盘void init();//初始化函数void CueatMap(int AimMap[][11]);//创建地图void rememberbefore();//保存数据(入栈)void returnbefore();//还原数据(出栈)void delrecord();//删除数据(清空栈)功能的实现:1.游戏中的鼠标操作的实现:case WM_LBUTTONDOWN://鼠标左键点击消息{int x,y,i=0,j=0,count=0;x=LOWORD(lParam);//相对于窗口的位置y=HIWORD(lParam);if(x>=775&&y<=35){delrecord();//释放资源PostQuitMessage(0);//发送窗口销毁消息用于关闭窗口}else if(x>=0&&x<=774&&y<35){SendMessage(hWnd,WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0);//发送消息}else if(x>600&&y>120&&x<720&&y<160){//上一关if(Mapdatacounnt-1>=0){Mapdatacounnt--;delrecord();}CueatMap(Mapdata[Mapdatacounnt]);InvalidateRect(hWnd, NULL, true);}else if(x>600&&y>200&&x<720&&y<240){//下一关if(Mapdatacounnt+1<Checkpoint){Mapdatacounnt++;delrecord();}CueatMap(Mapdata[Mapdatacounnt]);InvalidateRect(hWnd, NULL, true);}else if(x>600&&y>280&&x<720&&y<320){//后退一步returnbefore();InvalidateRect(hWnd, NULL, true);}else if(x>600&&y>410&&x<720&&y<450){ShellExecute(hWnd,"open","about.exe","","", SW_SHOW );}}说明:此处的设计方法为,先获取鼠标在窗口中的点击坐标,然后判断该坐标点是否在设定的区域,如果是,则执行相应的操作2.游戏中键盘操作的实现:/*键盘消息处理函数*/void Key_D(HWND &hWnd,HDC &hdc,int key_value){//用于响应键盘消息的处理//限定区域if(count!=4){rememberbefore();switch(key_value){case 38:{//在key_up-40之前进行判断看执行此计算后是否还在游戏区域内其他方向相同if((key_up-40+key_down+40)/40>0){key_up-=40;}}break;case 39:{if((key_left+key_right+40+40)/40<=9){key_right+=40;}}break;case 40:{if((key_up+key_down+40+40)/40<=9){key_down+=40;}}break;case 37:{if((key_left-40+key_right+40)/40>0){key_left-=40;}}break;}keyflag=key_value;InvalidateRect(hWnd, NULL, true);}说明:获取发生键盘消息时对应的键值,判断此时是否游戏过关,如果没过关就记录当前的游戏数据,响应方向键,如果过关就响应回车键,进入下一关,同时调用屏幕刷新函数。

实验4 一维数组、二维数组

实验4 一维数组、二维数组

实验四一维数组、二维数组一、实验目的与要求1、熟练掌握一维数组、二维数组的定义、赋值和输入输出的方法。

2、掌握与数组有关的算法。

二、实验内容1、(1)定义一个长度为N(N为符号常量,定义方法:”#define N 8”,下同)的数组,键盘输入N个整数,使用冒泡排序,将数据由大到小输出。

#(2)定义一个程度为N的数组,键盘输入N个整数,使用改进的冒泡排序,将数据由大到小输出。

2、定义一个长度为N的数组,键盘输入N-1个整数组成一个数列,用选择排序法将它们由大到小排序后,再输入某个数x,根据x的值插入到有序数列中,并按小到大输出所有N个数。

#3、键盘输入行数n(n由键盘输入),打印出n行杨辉三角。

4、设计青年歌手参加歌曲大奖赛计分系统:共有M个选手参加比赛,N个评委进行打分#(1)从键盘输入某一位选手的的N个得分,输出这位选手的平均得分(平均得分的计算方法:去掉一个最高分和一个最低分,其余N -2个得分的平均分为该选手的最终平均得分)。

(2)从键盘输入M个选手的各N个成绩(按照先输入第一个选手的N的个成绩,再输入第二个选手的N个成绩,………),求M个选手每个人的平均得分(去掉一个最高分和一个最低分后的平均分),并按平均得分由高到低排序输出。

三、算法四、源程序五、程序结果六、总结int a[3]={1,2,3},b[4],c,d,i=0,j=0;scanf("您输入的数以及它所插在第几个数后面%d%d",&c,&d);for(;i<3;i++){if(i<d)b[j++]=a[i];if(i==d)b[j++]=c;b[j++]=a[i];if (i>d)b[j++]=a[i];}for(j=0;j<4;j++)printf("%d\n",b[j]);#include <stdio.h>void main(){int a[6]={1,3,6,8,9};int i,n;printf("请输入一个数");scanf("%d",&n);for(i=0;i<5;i++){if(n<=a[i]) //找出已有序列中比n大的第一个数;{for(int j=5;j>i;j--) //然后将以后的数都向后移一位,a[j]=a[j-1];a[i]=n; //将n插入到break;}}if(i>=5) //若输入的n比已有数据都要大的话,就直接放在数组的最后一个。

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

实验四二维数值数组
一、实验目的
(1)熟悉C语言关于“数组”的语法规则。

(2)掌握C语言程序中关于数值“数组”的应用技巧。

(3)掌握一维数组和二维数组的定义、赋值和输入输出的方法;数组元素的存储形式和引用方法;
(4)掌握与数组有关的排序(选择法、冒泡法)、查找(顺序查找、折半查找)、有序数列的插入和删除操作等算法(特别是排序算法)
二、实验准备
1.C语言实现循环的方法
①数组的定义:
Int b[3][4]; \*二维数组b包含了3行4列个元素*\
②数组的赋初值:定义数组的同时给元素赋值,可以整体赋值
Int b[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; \*按行进行赋值*\
Int b[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; \*可以省略行下标,但不能省略列下标*\
Int b[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; \*也可以存储空间位序顺序赋值*\
③数组元素的引用:数组元素只能单个应用如a[3][2];
③数组元素的遍历:
二维数组用双重循环,外循环循环控制变量为行下标,内循环循环控制变量为列下标。

3.阅读以下程序,并分析其功能,调试运行程序后再分析其运行结果。

1 程序二,程序文件名为ex4-2.c。

(掌握二维数组的输入输出,和转置)
# include <stdio.h>
main()
{
int a[2][3]={{1,2,3},{4,5,6}}; //二维数组赋初值
int b[3][2],i,j;
for(i=0;i<2;i++) //转置算法
for(j=0;j<3;j++)
b[j][i]=a[i][j];
printf("数组a:\n");
for(i=0;i<2;i++) // 输出二维矩阵
{ for(j=0;j<3;j++)
printf("%5d",a[i][j]); //内循环一遍输出一行3个元素
printf("\n"); //输出一行后换行
}
printf("\n输出转置后的数组b:\n");
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
printf("%5d",b[i][j]); //内循环一遍输出一行2个元素
printf("\n"); //输出一行后换行
}
}
三、实验内容(按要求设计以下程序,并调试分析运行结果,此部分完成在实验报告上)
(1) 设计程序sy4-1.c,功能是如下所示规律构造二维数组下三角的前m行;
1
5 7
9 11 13
13 15 17 19
17 19 21 23 25
……
要求:在main函数中输入一整数m(1<=m<=10),输出该二维数组下三角的前m行。

(2) 设计程序sy4-2.c,任意输入一个一维数组a(n)(n<10),要求输出如下形式的二维数组。

其中n由操作人员从键盘输入指定。

a(1) a(2) …….a(n)
a(n) a(1) …….a(n-1)
…………
a(2) a(3) …….a(1)
如输入a(4):2,4,5,6,则二维数组是:
2 4 5 6
6 2 4 5
5 6 2 4
4 5 6 2
(直接建立二维数组不得分)
(3) 设计程序sy4-3.c,要求编写程序根据m的值(2<=m<=9),在m行m列的二维数组中存放如下所示的数据,由输出结果。

结果显示在屏幕上。

例如:如输入3
则输出:1 2 3
2 4 6
3 6 9
如输入5
则输出:1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
(4) 设计程序sy4-4.c,从键盘上输入矩阵的阶数n(n<10),然后按以下规律形成二维数组Anxn:A中第一行元素为1,2,……n;第二行元素为n+1,n+2,……2n; 第三行元素为2n+1,2n+2,……3n;……
然后计算:(1)A中所有不靠边元素之和sum1;(2)A的两条对角线元素之和sum2。

要求:将形成的二维数组Anxn和计算结果(1)(2)显示在屏幕上。

例如:输入矩阵的阶数为3,输出二维数组
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
sum1=34
sum2=68
(5) 设计程序sy4-5.c,从键盘输入m的值(2<=m<=9),并用双重循环给数组赋值,在m行m列的二维数组中存放如下所示的数据,并将结果输出在显示上。

例如:输入3 输入5
则输出: 则输出:
1 2 3 1 2 3 4 5
2 4 6 2 4 6 8 10
3 6 9 3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
分析:m的值是不定的,所以可以申明一个二维数组int a[10][10],当m=3时,只用前三行三列,当m=5时,就只用前五行五列;元素a[i][j]的值和他的行列下标可找到规律如下:每行的第0列元素a[i][0]=i+1;除第0列元素其它元素a[i][j]=a[i][0]*(j+1)。

四、实验要求:
“实验内容”中的任务要求在实验课上完成,若未完成请在下次上课前利用课外时间完成。

五、实验报告填写要求:
1、第一页用《攀枝花学院实验报告》纸,其后用《实验报告附页》纸。

2、第一页填写项目:
实验课程:计算机基础2-C语言实验项目:[本次实验名称] 实验日期:[本次实验日期]
系:班级:姓名:学号:
指导教师:
3、实验报告正文要求:
实验目的:(抄写本次实验目的)
实验仪器设备:PC机一套
实验步骤(内容):
(要求完成以上第三部分内容,编程题要求抄写题目并写出程序源代码,并记录程序的运行结果)
实验结论:(分析通过本次实验掌握的知识或是还有什么遗留问题)
4、实验报告写好后将完成的实验报告纸订(或粘)在一起,于下一次上课前交给指导老师。

相关文档
最新文档