二维数组程序设计实验报告
实验报告6-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}},编程,输出该二维数组的最小元素的行下标与列下标。
实验报告Java二
JA V A实验报告系(教研室):专业:年级:实验课程:Java语言程序设计姓名:学号:实验室号:计算机号:实验时间:指导教师签字:成绩:实验2一、实验目的1.掌握声明二维数组变量,创建二维数组对象,使用二维数组解决实际问题。
2.使用构造方法创建对象,通过对象引用变量访问对象,。
3.封装数据域以便于类的维护。
二、实验要求1.(7.6)编写两个矩阵相乘的方法。
方法头如下:public static double[][] multiplyMatrix(double[][] a, double[][] b)为了是矩阵a能够和矩阵b相乘,矩阵a的列数必须与矩阵b的行数相同。
假设矩阵c是相乘的结果,而a的列数是n,那么每个元素c ij=a i1* b1j + a i2 * b2j+ …+ a in * b nj。
例如,对于两个3×3的矩阵a和b,c有:编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示他们的2.(8.1)创建一个名为Rectangle的类表示矩形,这个类包括:●两个名为width和height的double型数据域,它们分别表示矩形的宽和高。
width和height的默认值都为1。
●创建默认矩形的无参构造方法:Rectangle()。
●一个创建width和height为指定值的矩形的构造方法:Rectangle(double width, double height)。
●一个名为getWidth()的方法返回宽。
●一个名为getHeight()的方法返回高。
●一个名为getArea()的方法返回这个矩形的面积。
●一个名为getPerimeter()的方法返回周长。
实现这个类,编写一个测试程序,提示用户输入两个矩形,创建两个Rectangle对象,然后显示矩形的宽,高,面积和周长。
三、实验原理1.本题通过编写Matrix类实现题目要求。
Matrix类包含三个方法:存储矩阵的方法:public static double[][] inputMatrix()用于打印矩阵的方法:public static double[][] outputMatrix(double[][] x),利用两个for循环来实现输出二维数组。
实验七 二维数组实验报告
***软件类实验报告课程名称: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矩阵两条对角线元素之和五、实验小结。
00(实训)_实验06 二维数组,控制语句1
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资0配不料置仅试技可卷术以要是解求指决,机吊对组顶电在层气进配设行置备继不进电规行保范空护高载高中与中资带资料负料试荷试卷下卷问高总题中体2资2配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况卷中下安,与全要过,加度并强工且看作尽护下可关都能于可地管以缩路正小高常故中工障资作高料;中试对资卷于料连继试接电卷管保破口护坏处进范理行围高整,中核或资对者料定对试值某卷,些弯审异扁核常度与高固校中定对资盒图料位纸试置,卷.编保工写护况复层进杂防行设腐自备跨动与接处装地理置线,高弯尤中曲其资半要料径避试标免卷高错调等误试,高方要中案求资,技料编术试写5交、卷重底电保要。气护设管设装备线备置4高敷、调动中设电试作资技气高,料术课中并3试中、件资且卷包管中料拒试含路调试绝验线敷试卷动方槽设技作案、技术,以管术来及架避系等免统多不启项必动方要方式高案,中;为资对解料整决试套高卷启中突动语然过文停程电机中气。高课因中件此资中,料管电试壁力卷薄高电、中气接资设口料备不试进严卷行等保调问护试题装工,置作合调并理试且利技进用术行管,过线要关敷求运设电行技力高术保中。护资线装料缆置试敷做卷设到技原准术则确指:灵导在活。分。对线对于盒于调处差试,动过当保程不护中同装高电置中压高资回中料路资试交料卷叉试技时卷术,调问应试题采技,用术作金是为属指调隔发试板电人进机员行一,隔变需开压要处器在理组事;在前同发掌一生握线内图槽部纸内故资,障料强时、电,设回需备路要制须进造同行厂时外家切部出断电具习源高题高中电中资源资料,料试线试卷缆卷试敷切验设除报完从告毕而与,采相要用关进高技行中术检资资查料料和试,检卷并测主且处要了理保解。护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
数组处理实验报告
一、实验目的1. 掌握一维数组和二维数组的定义、初始化及输入输出方法。
2. 熟悉数组的基本操作,如查找、排序等。
3. 理解数组在实际问题中的应用。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C++三、实验内容1. 一维数组的定义、初始化及输入输出2. 二维数组的定义、初始化及输入输出3. 数组的基本操作:查找、排序4. 数组在实际问题中的应用四、实验步骤1. 一维数组的定义、初始化及输入输出(1)定义一维数组,并初始化```cppint arr[5] = {1, 2, 3, 4, 5};```(2)输出数组元素```cppfor (int i = 0; i < 5; i++) {cout << arr[i] << " ";}```2. 二维数组的定义、初始化及输入输出(1)定义二维数组,并初始化```cppint arr[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};```(2)输出数组元素```cppfor (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) { cout << arr[i][j] << " "; }cout << endl;}```3. 数组的基本操作:查找、排序(1)查找```cppint findElement(int arr[], int size, int element) {for (int i = 0; i < size; i++) {if (arr[i] == element) {return i; // 返回元素位置}}return -1; // 未找到元素,返回-1}int main() {int arr[5] = {1, 2, 3, 4, 5};int element = 3;int position = findElement(arr, 5, element);if (position != -1) {cout << "Element " << element << " found at position " << position << endl;} else {cout << "Element " << element << " not found" << endl;}return 0;}```(2)排序```cppvoid sortArray(int arr[], int size) {std::sort(arr, arr + size); // 使用std::sort对数组进行排序}int main() {int arr[5] = {5, 2, 1, 4, 3};sortArray(arr, 5);for (int i = 0; i < 5; i++) {cout << arr[i] << " ";}cout << endl;return 0;}```4. 数组在实际问题中的应用(1)计算平均值```cpp#include <iostream>#include <vector>#include <numeric> // 引入numeric库,用于求和double calculateAverage(const std::vector<int>& arr) {return std::accumulate(arr.begin(), arr.end(), 0) / arr.size(); }int main() {std::vector<int> arr = {1, 2, 3, 4, 5};double average = calculateAverage(arr);cout << "Average: " << average << endl;return 0;}```(2)判断矩阵是否为对称矩阵```cpp#include <iostream>#include <vector>bool isSymmetricMatrix(const std::vector<std::vector<int>>& matrix) { int size = matrix.size();for (int i = 0; i < size; i++) {for (int j = 0; j < size; j++) {if (matrix[i][j] != matrix[j][i]) {return false;}}}return true;}int main() {std::vector<std::vector<int>> matrix = {{1, 2, 3},{2, 4, 5},{3, 5, 6}};bool isSymmetric = isSymmetricMatrix(matrix);cout << "Is symmetric matrix: " << (isSymmetric ? "Yes" : "No") << endl;return 0;}```五、实验结果与分析1. 通过实验,掌握了数组的基本定义、初始化、输入输出方法。
数组应用的实验报告
一、实验目的1. 掌握数组的定义、声明、初始化和引用方法。
2. 熟悉数组在数据存储和操作中的优势。
3. 学习并实现一些常用的数组操作,如排序、查找、插入和删除等。
4. 提高编程能力,培养解决实际问题的能力。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C++三、实验内容1. 一维数组的定义、初始化和引用2. 二维数组的定义、初始化和引用3. 数组元素的查找4. 数组元素的排序5. 数组元素的插入和删除四、实验步骤1. 一维数组的定义、初始化和引用(1)定义一个整型一维数组,并初始化前5个元素为1、2、3、4、5。
(2)使用循环遍历数组,输出所有元素。
(3)使用指针遍历数组,输出所有元素。
2. 二维数组的定义、初始化和引用(1)定义一个整型二维数组,并初始化前3行3列的元素。
(2)使用嵌套循环遍历数组,输出所有元素。
(3)使用指针遍历数组,输出所有元素。
3. 数组元素的查找(1)定义一个整型数组,并初始化前10个元素为1、2、3、4、5、6、7、8、9、10。
(2)编写一个函数,用于查找数组中是否存在指定的元素。
(3)在主函数中调用该函数,查找元素5在数组中的位置。
4. 数组元素的排序(1)定义一个整型数组,并初始化前10个元素为1、2、3、4、5、6、7、8、9、10。
(2)编写一个冒泡排序函数,用于对数组进行排序。
(3)在主函数中调用该函数,对数组进行排序,并输出排序后的结果。
5. 数组元素的插入和删除(1)定义一个整型数组,并初始化前10个元素为1、2、3、4、5、6、7、8、9、10。
(2)编写一个插入函数,用于在数组中插入一个新元素。
(3)编写一个删除函数,用于删除数组中的指定元素。
(4)在主函数中调用插入和删除函数,对数组进行操作,并输出操作后的结果。
五、实验结果与分析1. 一维数组的定义、初始化和引用实验结果:成功定义、初始化和引用了一维数组,并输出所有元素。
二维数组的实验报告
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,无返回值。
实验七二维数组程序设计
实验七二维数组程序设计实验七二维数组程序设计一、实验学时 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.可以省略第一维的定义,但不能省略第二维的定义。
c语言实验报告六 二维数组
《C程序设计》课程实验报告学院:班级:姓名:学号:实验设备:计算机1台实验日期:2011年3月1日实验项目名称二维数组实验目的掌握二维数组的定义、初始化,以及二维数组元素的下标法引用。
实验要求:熟练掌握掌握二维数组的定义、初始化,以及二维数组元素的下标法引用。
编写简单程序。
实验内容(包括步骤):1.有5名学生,每名学生有语文、数学、物理和外语四门课的考试成绩,编程统计各学生的总分和平均分,以及所有学生各科的总计分和平均分。
要求:(1)成绩在程序中初始化,结果以表格的形式输出。
(2)用下标法实现。
2.将4×4阶矩阵的4个最小值按升序存放在主对角线上。
要求:(1)矩阵元素从键盘输入。
(2)用下标法实现。
调试与结果测试:调试与结果正常。
代码注释:6-1#include<stdio.h>int main(){inta[7][6]={{80,82,98,76},{78,89,96,68},{87,85,78,92},{68,69,72,76},{92,97,96, 94}};int i,j,m=0,s1=0,s2=0;printf("\t语文\t数学\t物理\t外语\t平均分\t总分\n");for(i=0;i<5;i++){for(j=0;j<4;j++){s1+=a[i][j];a[i][5]=s1;a[i][4]=s1/4;}s1=0;}for(j=0;j<4;j++){for(i=0;i<5;i++){s2+=a[i][j];a[6][j]=s2;a[5][j]=s2/5;}s2=0;}for(i=0;i<7;i++)for(j=0;j<6;j++){m++;if(m%6==1&&i<5){printf("学生%d\t",i+1);}if(m%6==1&&i==5){printf("平均分\t");}else if(m%6==1&&i==6){printf("总分\t");}printf("%d\t",a[i][j]);if(m%6==0)printf("\n");}return 0;}6-2#include<stdio.h>int main(){int a[4][4],b[16]={0},i,j,m,k=0,t=0;for(i=0;i<4;i++){for(j=0;j<4;j++)scanf("%d",&a[i][j]);}for(i=0;i<4;i++){for(j=0;j<4;j++){b[k]=a[i][j];k++;}}for(k=0;k<15;k++){ for(i=0;i<15-k;i++){if(b[i]>b[i+1]){t=b[i];b[i]=b[i+1];b[i+1]=t;}}}for(i=0;i<4;i++){ for(j=0;j<4;j++){if(a[i][j]==b[j]){ m=a[i][j];a[i][j]=a[j][j];a[j][j]=m;}}}for(i=0;i<4;i++){ for(j=0;j<4;j++)printf("%d\t",a[i][j]);printf("\n");}return 0;}――――――――――――以下内容为教师填写―――――――――――――――教师评阅:成绩:良2011年月日。
实验7 二维数组程序设计_C语言程序设计实验指导(第2版)_[共4页]
实验7
二维数组程序设计
7.1 实 验 目 的
1.掌握二维数组的定义、赋值和输入/输出的方法。
2.掌握二维数组元素在内存中的存储特点。
3.掌握与矩阵相关的算法,如矩阵转置、对角线元素求和等。
7.2 实 验 内 容
1.启动C语言环境,输入并执行如下程序:
#include <stdio.h>
main()
{
int i,j,n,sum=0;
int a[6][6];
scanf("%d", &n);
for(i=0; i<n; i++)
for(j=0; j<n; j++)
a[i][j] = i*n+j;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
printf("%d_ _", a[i][j]);
printf("\n");
for(i=0; i<n; i++)
sum += a[i][n-i-1];
printf("sum=%d\n", sum);
}
2.将程序补充完整,使其可以实现:统计3 × 4二维数组全体元素中正数、负数和零的个数。
3.求4 × 4二维数组中主对角线以上(包括主对角线)的元素之和。
4.将3 × 3矩阵的每行元素均除以该行上的主对角元素,输出调整后的3 × 3矩阵。
5.求两个3 × 3矩阵之和,输出新的矩阵。
35。
《C程序设计》数组的定义与使用实验报告
《C程序设计》数组的定义与使用实验报告return t[n];}main(){ char s[81],t[81]; int n;printf("\nEnter a string:\n"); gets(s);n=fun(s,t);printf("\nThere are %d letter which ASCII code is less than97: %s\n",n,t);}运行结果:(截图)2、完成改错后的程序#include<stdio.h>#define N 4void fun(int a[][N], int b[]){ int i, j;for (i=0; i<N; i++){/**********found**********/b[i]=a[i][0];/**********found**********/for (j=0; j<N; j++)/**********found**********/if ( b[i] > a[i][j])b[i] = a[i][j];}}main(){ int a[N][N]={{1,4,3,2},{8,6,5,7},{11,10,12,9},{13,16,14,15}},b[N]; int i;fun(a,b);for (i=0; i<N; i++) printf("%d,", b[i]);printf("\n");}运行结果:(截图)3、解题思路:源程序:#include<stdio.h>int main(){int a[10]={12,35,2,13,54,89,96,20,30,17},i,max,min;max=a[0],min=a[0];for(i=0;i<10;i++){if(max<a[i]){ max=a[i];continue;}if(min>a[i]){min=a[i];continue;}}printf("max=%d ,min=%d \n",max,min);return 0;}运行结果:(截图)4、解题思路:源程序:#include<stdio.h>#define N 10main(){int i,j;int a[N][N];for(i=0;i<N;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<N;i++){for(j=1;j<=i-1;j++)a[i][j]=a[i-1][j]+a[i-1][j-1];}for(i=0;i<N;i++){for(j=0;j<=i;j++)printf(" %4d ",a[i][j]);printf("\n");}printf("\n");}运行结果:(截图)5、解题思路:源程序:#include<stdio.h>int main(){char a[50],b[50];int c=0,i;gets(a);gets(b);for(i=0;i<50;i++){if(a[i]!=b[i]){c=a[i]-b[i];break;}} printf("%4d\n",c);return 0;}运行结果:(截图)。
二维数组程序设计实验报告
实验报告一、实验目的(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");}}四、实验结果(附截图)五、思考题如何引用二维数组中的元素?二维数组元素的表示形式是数组名【下标】【下标】。
实验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 , 计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。
实验7 二维数组 字符数组及字符串的应用
实验7 二维数组、字符数组及字符串的应用一、实验目的(1)掌握二维数组的定义及初始化方法。
(2)掌握利用二维数组解决问题的常用编程方法。
(3)掌握字符数组的定义及使用方法。
(4)掌握字符串的表示方法及正确处理方法。
(5)掌握字符串函数的使用方法。
二、实验内容1.在一个4×5方阵中,找出每列中的最小元素及其所在位置。
[源程序][回答问题](1)定义一个6行6列的二维数组并初始化,以矩阵的形式输出该二维数组。
(2)找出第1列中最小元素所在的位置并输出。
(3)总结规律,利用循环分别找出每一列中最小元素所在位置并输出。
2.对一个m×n的矩阵,交换指定的两列元素。
交换的两列列号由用户从键盘指定。
输出交换前后的矩阵。
[源程序][回答问题](1)定义一个m行n列的二维数组(设m为4,n为5)并输入元素值,以矩阵的形式输出该二维数组。
(2)手工交换该二维数组的第2列和第4列。
(3)总结规律,利用循环完成第2列与第4列的交换,并以矩阵形式输出该二维数组。
(4)把交换的第2列和第4列用变量x和y替换,即交换第x列与第y列,其中x、y 由键盘输入并且需要满足1<= x <= n,1<= y <= n,从而完成整个程序。
3.通过随机函数生成一个n×n矩阵,每个元素均为10—30之间的整数,求其每行元素的平均值。
[源程序][回答问题](1)定义一个n行n列的二维数组。
(2)使用随机组产生10-30之间的数值赋值给二维数组的各元素。
(3)对二维数组的第1行求累加和,再用累加和的结果除以n,即可求得第1行的平均值。
(4)若对每行均进行上述操作,应如何修改程序?4.从键盘输入一个字符串,求其长度和其中包含的数字字符的个数。
[源程序][回答问题](1)C语言中借用什么来处理字符串?如何定义?(2)你准备采用何种方式完成字符串的输入?指出你所采用输入方式的特点。
(3)如果使用C的库函数如何求串的长度?如果不使用C的库函数又如何求串的长度?(4)判断字符串中的每个字符是否数字字符(即′0′-′9′之间的符号),若是则计数。
C语言实验报告 实验六 参考答案
实验六二维数值数组(参考答案)(1) 设计程序sy6-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。
算法分析:方阵主对角线上的元素,行下标和列下标相同;辅对角线元素,如果行下标为i,列下标就为2-i;参考答案:# include <stdio.h># include <stdlib.h># include <math.h># include <time.h>void main(){int a[3][3];int i,j,sum=0;srand( time( NULL ) );printf("矩阵:\n");for(i=0;i<3;i++) //用随机函数生成3行3列的二维数组并按矩阵格式输出{for(j=0;j<3;j++){a[i][j]=rand()%20;printf("%4d",a[i][j]);}printf("\n");}for(i=0;i<3;i++)sum=sum+a[i][i]+a[i][2-i];printf("该矩阵的正、反对角线元素之和为:%d\n",sum);}运行结果:(2) 设计程序sy6-2.c,找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于b数组中。
算法分析:按列序遍历二维数组,每列用打擂台的方法求最大数,N列则有N个最大值,分别存于b数组的对应元素中。
# include <stdio.h># include <stdlib.h># include <math.h># include <time.h># define N 4void main(){int a[N][N],b[N];int i,j;srand( time( NULL ) );printf("矩阵:\n");for(i=0;i<N;i++) //用随机函数生成N行N列的二维数组并按矩阵格式输出{for(j=0;j<N;j++){a[i][j]=rand()%20;printf("%4d",a[i][j]);}printf("\n");}for(j=0;j<N;j++) //外循环控制列下标{b[j]=a[0][j]; //假设每列的0行元素是最大数for(i=1;i<N;i++)if(b[j]<a[i][j])b[j]=a[i][j];}printf("该矩阵每列元素的最大值是:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");}运行结果:(3) 设计程序sy6-3.c,定义一个3×3的二维数组,通过随机函数自动赋值。
输出鞍点实验报告
一、实验目的本次实验旨在通过编写程序,实现对二维数组的遍历,找出并输出数组中的鞍点。
鞍点定义为在一个数组中,其值在所在行中最大,在所在列中最小。
通过此实验,加深对二维数组操作的理解,提高编程能力。
二、实验内容1. 设计一个二维数组,并随机填充数据。
2. 编写程序遍历数组,找出鞍点。
3. 输出鞍点的行号、列号以及鞍点值。
4. 如果数组中没有鞍点,则输出“无”。
三、实验程序```vbModule Module1Sub Main()' 定义二维数组Dim arr(,) As Integer = {{1, 3, 2}, {4, 5, 6}, {7, 8, 9}}' 获取数组的行数和列数Dim rows As Integer = arr.GetLength(0)Dim cols As Integer = arr.GetLength(1)' 标记是否存在鞍点Dim isSaddlePoint As Boolean = False' 遍历数组For i As Integer = 0 To rows - 1For j As Integer = 0 To cols - 1' 获取当前位置的行最大值和列最小值Dim rowMax As Integer = 0Dim colMin As Integer = Integer.MaxValueFor k As Integer = 0 To rows - 1If arr(k, j) > rowMax ThenrowMax = arr(k, j)End IfNextFor l As Integer = 0 To cols - 1If arr(i, l) < colMin ThencolMin = arr(i, l)End IfNext' 判断当前位置是否为鞍点If arr(i, j) = rowMax AndAlso arr(i, j) = colMin ThenConsole.WriteLine("鞍点位于行:{0},列:{1},值为:{2}", i + 1, j + 1, arr(i, j))isSaddlePoint = TrueEnd IfNextNext' 如果没有找到鞍点,则输出“无”If Not isSaddlePoint ThenConsole.WriteLine("无")End If' 等待用户按键后退出Console.ReadKey()End SubEnd Module```四、实验过程及结果1. 首先定义了一个3x3的二维数组,并随机填充了数据。
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);}说明:获取发生键盘消息时对应的键值,判断此时是否游戏过关,如果没过关就记录当前的游戏数据,响应方向键,如果过关就响应回车键,进入下一关,同时调用屏幕刷新函数。
实 验 报 告(数组)
return 0;
}
程序运行时输入:
76 85 90
64 57 80
73 65 66
84 71 72
程序运行时输出:
3.编写程序,生成并输出杨辉三角(10行)。杨辉三角的特点是第一列和对角线数字为1,其余元素a[i][j]满足a[i][j]=a[i-1][j-1]+a[i-1][j]。
}
return 0;
}
程序运行时输入:
2.设某班有4个学生,每个学生选修了三门课,算并显示以下信息:
(1)每个学生的总成绩。
(2)每门课的平均成绩。
(3)所有学生总成绩的平均值。
【输入】4个学生三门课的成绩。
【输出】以二维表格形式输出学生成绩信息和计算结果。
1
1 1
1 2 1
1 3 3 1
.
.
.
程序代码:
#include "stdio.h"
int main()
{ int i,j,n=0,a[17][17]={0};
while(n<1 || n>16)
{printf("请输入杨辉三角形的行数:");
scanf("%d",&n); }
for(i=0;i<n;i++)
printf("%6d\n",sum);
}
for(b=0;b<3;b++)
{int s=0;
for(k=0;k<4;k++)
{s=s+c[k][b];
m+=c[k][b];}
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
一、实验目的
(1)掌握二维数组的定义、赋值、输入和输出及二维数组元素的引用方法。
(2)掌握二维数组的相关算法(矩阵行列互换、矩阵中特定数据的查找)。
(3巩固循环嵌套的使用。
(4)学习VC环境下调试二维数组程序的方法。
二、实验内容
(1)输入5×5的数组,编写程序实现:
1)求出对角线上各元素的和;
2)求出对角线上行、列下标均为偶数的各元素之积;
3)求出对角线上其值最大的元素和它数组中的位置。
(2)在屏幕上打印出如下杨辉三角形(要求打印出10行)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 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");}
}
四、实验结果(附截图)
五、思考题
如何引用二维数组中的元素?
二维数组元素的表示形式是
数组名【下标】【下标】。