实验 6-2-数组

合集下载

《C++语言程序设计》第6章 数组 指针与字符串

《C++语言程序设计》第6章 数组  指针与字符串
• 例如:static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
• 可以只对部分元素初始化
• 例如:static int a[3][4]={{1},{0,6},{0,0,11}};
• 列出全部初始值时,第1维下标个数可以省略
• 例如:static int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12}; • 或:static int a[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
其中数组a的存储顺序为:
a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23
12
二维数组的初始化
• 将所有初值写在一个{}内,按顺序初始化
• 例如:static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
• 分行列出二维数组元素的初值
cout << "Moving the point to (" << newX << ", " << newY << ")" << endl; x = newX; y = newY; }
例6-3 对象数组应用举例
//6-3.cpp #include "Point.h" #include <iostream> using namespace std;
int main() {
cout << "Entering main..." << endl;

C语言实验__一维数组

C语言实验__一维数组

实验6 一维数组实验要求:使用Visual C++ 6.0开发环境,完成以下习题。

1. (此题可不使用数组)输出1~100之间的不能被7整除的数。

(要求使用continue语句,如果其能被7整除则continue)。

源程序保存为6-1.c。

运行效果截图保存为6-1p.jpg。

2. 对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。

源程序保存为6-2.c。

运行效果截图保存为6-2p.jpg。

3. 定义一个100个元素的数组,依次赋值为1 ~ 100。

先输出其中能被3整除的数。

再输出其中能被5整除的数。

(注意数组的下标是从0开始。

)源程序保存为6-3.c。

运行效果截图保存为6-3p.jpg。

4. 让用户输入学生的人数n,然后输入这n个学生的语文成绩,保存在数组中。

然后分别计算输出:(1)统计语文成绩平均分。

(2)不及格的学生序号及成绩、并统计不及格人数。

(3)最高分的成绩及最高分的学生的序号。

源程序保存为6-4.c。

运行效果截图保存为6-4p.jpg。

5. 定义一个数组A存放6个学生的高数成绩,定义一个数组B存放这6个学生的英语成绩, 再定义一个数组C存放这6个学生的C++成绩。

在输入时,要求逐个学生的三门课成绩输入(即先输入第1个学生的三门课成绩,再输入第2个学生的三门课成绩,以此类推)。

求这6个同学三科的总分存放在数组D中,并输出。

源程序保存为6-5.c。

运行效果截图保存为6-5p.jpg。

6. 编程实现:简单版成绩管理系统1。

程序首先显示菜单,让用户选择1则添加一个学生的的记录,选择2则查看一个学生的记录,选择3则修改一个学生的记录,选择4则浏览所有学生记录。

每个学生记录由其学号、高数成绩、英语成绩、C++成绩组成。

(提示:定义一个100个元素的数组,存放学生的学号;定义一个100个元素的数组存放高数成绩,定义一个100个元素的数组存放英语成绩;定义一个100个元素的数组存放C++成绩;定义一个变量记录当前已经总共添加了多少个学生)当用户选择1之后,让用户输入要添加的学生的学号、高数成绩、英语成绩、C++成绩。

实验6 一维数组和二维数组

实验6  一维数组和二维数组
m=m+1;
if (a[i][j]<5)
printf("%3d",a[i][j]);}
printf("\n");
printf("żÊý¸öÊýΪ:%d\n",m);
}
4.已知一个二维数组:{{14,26,18,17},{24,37,21,8},{19,31,22,16},{7,19,14,26}},编程,输出该二维数组最小元素的行下标与列下标;计算并输出主对角线元素之和。
#include<stdio.h>
main()
{
int a[4][4]={{14,26,18,17},{24,37,21,8},{19,31,22,16},{7,19,14,26}},i,j,x,y,m,sum=0;
m=a[0][0];
for (i=0;i<4;i++)
for (j=0;j<4;j++)
i++;}
printf("\n");}
}
3.输入一个4行4列的二维数组,统计偶数的个数,并输出所有小于5的数。
#include<stdio.h>
main()
{
int a[4][4]={{2,6,7,9},{3,5,4,11},{12,8,1,13},{21,33,64,25}},i,j,m;
m=0;
}
if (m>a[i][j])
{m=a[i][j];
x=i;
y=j; }
printf("ÐÐϱêÓëÁÐϱê·Ö±ðΪ£º%d %d\n",x,y);
for (i=0;i<4;i++)

第六章数组-计算机QBASIC教案

第六章数组-计算机QBASIC教案

第六章数组§6-1 数组和数组元素的概念一、数组:具有名字的、且属性相同的一组有序数据的集合。

二、数组元素:数组中每一元素称为数组元素。

它是用带下标的变量来表示的,因此也叫下标变量。

1、数组元素的地位和作用与简单变量相当,都能用来存放一个数据。

2、同一数组中的数据必须是同一个类型。

3、数组中各个元素在内存中占据一组连续的存储单元。

4、数组与循环语句配合使用,可以很方便地对大批数据进行处理。

5、利用数组可以解决用简单变量解决不了的问题。

§6-2 数组的建立与引用一、数组的建立—— DIM语句QBASIC提供了两种格式的DIM语句:格式1:DIM <数组名> (下标上界)DIM <数组名> (第一维的下标上界,第二维的下标上界)例:DIM A(5),B(100),N$(40),CJ(40,6)格式2:DIM <数组名> (下标下界 TO 下标上界)DIM <数组名> (第一维下标下界 TO 第一维下标上界,第二维下标下界 TO 第二维下标上界)例:DIM X(-8 TO 10),Y(5 TO 10,1 TO 3)1、数组的取名规则与变量的取名规则相同。

2、在同一个程序中,数组名可以与变量名同名,但不代表同一对象。

3、不能用同一数组名去定义不同维数的数组。

如:DIM A(5),A(2,3)是错误的,而DIM A%(5),A(2,3)是对的。

1、下标下界的默认值为0。

下标下界为0时,TO可不写。

2、QBASIC规定:下标值的范围是[-32768,32767]。

3、QBASIC允许改变默认的下标值的下界,由0改为1,用语句:OPTION BASE n ( n只有0和1两个值) 且对每一维都有效。

4、在同一个程序中“OPTION BASE 0”和“OPTION BASE 1”只能选用一种,一旦设定就不能在程序中改变设定,且该语句应放在DIM语句之前。

实验六 一维数组实验报告

实验六 一维数组实验报告

***软件类实验报告课程名称:C语言程序设计学号:姓名:班级:指导教师:开课学期:学院:***教务处⑷一维数组排序。

四、实验过程及内容:(运行结果请抓图到对应题目的下方)1. 先分析以下程序,写出运行结果,再上机检验。

2.程序填空题。

下面程序的功能是9个评委给某个参赛选手打分,去掉一个最高分和一个最低分,求该参赛选手的平均分。

填空完成程序。

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

有数列1,1,2,4,7,13,24…,该数列的规律是从第4项起,每项是它的前三项之和。

下列程序的功能是将该数列的前30项存放在一维数组中,输出时每行输出5个数。

填空完成程序。

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

下面程序的功能是将数组中的数按从大到小排序后输出。

改正程序中的错误。

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

某公司从用公用电话传递数据,数据是四位的整数,在传递过程中需要加密,加密规则为每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

改正程序中的错误。

实验结果:6. 小楚参加了一个研究生考试培训班,共30次课,由于路途较远,每次都是打车去上课,来回的车费分别存储在数组a和b中,其中-1表示未去上课。

编程计算小楚参加培训班共打车花费多少钱?(要求保留1位小数,用循环实现)输出结果的形式为:s=1234.5a数组和b数组定义如下:doublea[30]={31.0,32.0,30.3,32.8,30.5,30.6,31.0,32.8,-1,31.8,31.9,31.5,32.3,32.3,31.8,32.5 ,31.5,30.3,30.4,32.5,30.2,30.2,30.7,32.1,32.1,31.4,31.9,31.9,-1,30.5};doubleb[30]={30.2,30.2,30.3,31.6,32.7,31.5,30.4,32.4,-1,31.0,31.8,32.1,31.6,31.4,32.4,32.1 , 32.5,32.3,32.5,31.4,31.2,30.3,32.3,30.7,31.3,30.2,31.1,30.5,-1,31.9};五、实验小结。

C语言数组实验报告

C语言数组实验报告

实验名:数组一、实验目的1、掌握数组定义的规则。

2、掌握C语言数组的基本用法。

二、实验内容) 题目11、编写程序,测试下列数组的定义方式是否正确(1) main(){int n;scanf(“%d”,&n);int a[n];……}(2) main(){const int n=10;int a[n];}(3) #include <stdio.h>#define M 10main(){int a[M];}(4) main(){int a[2+2*4];}(5) #include <stdio.h>#define M 2#define N 8main(){ int a[M+N];}通过这一实验,可以说明什么问题2、输入和输出信息描述及数据类型确定;、输入数据序号输入数据描述数据类型(1)n,a[n] int(2)na[n] cons tint int(3)a[M]或a[10] int (4)a[2+2*4] int (5)a[M+N] int 3、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法(1-1)main.c|5|error: expectedexpression before '%' token|scanf(“%d”,&n);是将%d两边的符号改为西文字符的引号scanf("%d",&n);(1-2)main.c|6|warning: unusedvariable 'a'[-Wunused-variable]|int a[n];是将前面的n的输入去掉,把n改为具体数字(5) main.c|6|warning: unusedvariable 'a'[-Wunused-variable]|int a[M+N];是加上个scanf(“%d”,&a[M+N]);4、相关问题回答通过这一实验,可以说明什么问题1、(2)(3)(4)(5)对,(1)错,(1)中a[n]的数组定义的【】里的常量表达式不能是变量。

C语言实验2-6参考答案

C语言实验2-6参考答案

实验二参考答案1.输入两个整型数字,输出他们的和。

#include<stdio.h>main(){int a, b, sum;scanf(“%d%d ”, &a, &b);sum=a+b;printf(“a+b=%d ”, sum);}2.输入两个实型数,输出他们的和与乘积。

#include<stdio.h>main(){float a, b, sum, product;scanf(“%f%f ”, &a, &b);sum=a+b;product=a*b;printf(“a+b=%5.2f, a*b =%5.2f ”, sum, product);}3.求方程02=++c bx ax 的根(设042≥-ac b )(其中a ,b ,c 的值由键盘输入)。

#include<stdio.h>#include<math.h>main(){float a, b, c, dt, x1, x2;scanf(“%f%f%f ”, &a, &b, &c);dt=sqrt(b*b-4*a*c);x1=(-b+dt)/(2*a);x2=(-b-dt)/(2*a);printf(“x1=%5.2f, x2 =%5.2f ”, x1, x2);}4.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?(h和f的值由键盘输入,输出鸡和兔的头数)#include<stdio.h>main(){int h, f, x,y;scanf(“%d%d”, &h, &f);x=2*h-f/2;y=f/2-h;printf(“x=%d, y =%d”, x, y);}实验三参考答案1.输入三个数a、b、c,要求按由小到大的顺序输出。

#include<stdio.h>main(){float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(a>b){t=a; a=b; b=t;}if(a>c){t=a; a=c; c=t;}if(b>c){t=b; b=c; c=t;}printf(“%f,%f,%f”,a,b,c);}2.编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。

数据结构习题

数据结构习题

第一章 绪论练习一1、 设有数据逻辑结构为Data-Structure = (D,S),其中D={d 1, d 2, …, d 9},S={r},r={< d 1,d 3>, < d 1, d 8>,< d 2, d 3>, <d 2, d 4>, <d 2, d 5>, <d 3, d 9>,<d 5, d 6>,<d 8, d 9>,<d 9, d 7>,<d 4,d 6>,<d 4, d 7>},画出这个逻辑结构的图示,对于关系r ,那些结点是起始结点,那些结点是终端结点?2、 设n 为整数,试确定下列各程序中前置以@语句的频度(1) FOR (i=1;i<=n;i++){FOR (j=1;j<=i;j++){FOR (k=1;k<=j;k++) @ x+=delta; } }(2) X=91;y=100;WHILE (y>0){@ if (x>100) {x-=10;y--;} else x++; }3、 按增长率由小到大的顺序排列下列各函数:,log,log,,!,,,,)34(,)32(,)23(,22223100nn n n n n n n n n n nnnn n n n 2log22222,log),(loglog ,log4、设有以下三个函数:f(n)=21n 4+ n 2+1000, g(n)=15 n 4 +500n 3 h(n)=5000 n 3.5+nlogn判断下列断言正确与否: (1) f(n)是O(g(n)); (2) h(n)是O(f(n)); (3) g(n)是O(h(n)); (4) h(n)是 O(n 3.5) (5) h(n)是 O(nlogn) 5、试用数学归纳法证明:(1)∑=+--=ni n i x x x 01)1/()1( )且(01≥≠n x (2)∑==-ni n i 12)12()(1≥n 6、试写一算法自大到小依次输出顺序读入的三个整数X 、Y 、Z 的值。

上机实验六 一维数组 - 答案

上机实验六  一维数组 - 答案

上机实验六一维数组班级学号姓名本次题目一共5题,必做4个,选做1个。

选做题可能有点难度,请尝试着做一下,能做出来说明目前你已经很强了!一.目的要求1.掌握一维数组的基本概念,定义和初始化方法;2.掌握一维数组的基本操作,如输入、输出、引用数组元素;3.掌握与数组有关的基本算法,如寻找最大/最小值、排序等。

二.实验内容【实验题1】程序改错:源程序用数组求Fibonacci数列前20项,但在带标记的代码行存在错误。

源程序如下:#include<stdio.h>void main(){ int i, fib[20];fib[1]= fib[2]= 1; //错误1for(i=3; i<=20; i++) //错误2fib[i]= fib[i-1] +fib[i-2];for(i=1; i<=20; i++){ //错误3printf("%6d", fib[i]);if( (i+1)%5==0 ) printf("\n");}}数组的下标应该从几开始?标出的三个错误语句行,应分别改为?数组下标应该从0开始,错误1修改为:fib[0]= fib[1]= 1;错误2修改为:for(i=2; i<20; i++);错误3修改为:for(i=0; i<20; i++)未改正错误之前,程序运行结果是(只写最后一项)4181改正后,程序运行结果是(只写最后一项)6765【实验题2】程序填空:给定平面上10个点,求其中离原点最近的点。

源程序用一维数组x存放这10个点的x坐标,用一维数组y存放相应的y坐标,即第i个点的坐标为(x[i], y[i])。

用变量index记录最近点的下标。

程序中使用距离的平方做比较:x*x+y*y。

#include<stdio.h>void main(){int i, index; //index是离原点最近的点的下标double d, min; //min是到原点的最近距离的平方double x[]={1.1, 3.2, -2.5, 5.67, 3.42, -4.5, 2.54, 5.6, 0.97, 4.65};// 赋初值double y[]={-6, 4.3, 4.5, 3.67, 2.42, 2.54, 5.6, -0.97, 4.65, -3.33};// :赋初值index= 0 ; min= x[0]*x[0]+y[0]*y[0]; //设第0个点为最近点for(i=1; i<10; i++){d= x[i]*x[i]+y[i]*y[i];if( d < min ){ //Line 11min=d;index=i;}}printf("%d: x=%.2f, y=%.2f \n", index, x[index] , y[index] ); //输出最近点的下标和坐标}程序运行结果为:数组x和y的长度应该各是多少?10,10如果将程序功能改为求10个点中离原点最远的点,语句行Line 11又应如何填写?if( d>min ){ //Line 11【实验题3】程序填空:输入5个整数, 将这5个数按逆时针顺序转动一次后再输出,如输入1 2 3 4 5,逆时针转动一次后,输出2 3 4 5 1。

C语言实验报告 实验六 参考答案

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的二维数组,通过随机函数自动赋值。

C语言程序设计实验4 数组 周信东

C语言程序设计实验4 数组 周信东
if((password[i]>='a'&&password[i]<='z'))
{
password[i]=password[i]+3;
if(password[i]>'z')
{
password[i]='a'-1+password[i]-'z';
}
}
i++;
}
printf("对应的明文为:\n");
puts(password);
先使投票初始化为0
int vote[6];
int i,number;
for (i=1;i<=5;++i)
vote[i]=0;
之后用一个循环进行投票进行叠加
printf ("Enter your number\n") ;
for (i=1; i<=20;++i)
{scanf (" %d",&number) ;
printf("请输入字符串2:\n");
gets(s2);
res=strcmp(s1,s2);
if(res==0)
{
printf("两个字符串相同!");
}
else
{
for(;s1[i]!='\0'&&s2[i]!='\0';i++)
{
if(s1[i]!=s2[i])
{
printf("两个字符串第1个不相同字符的ASCII码之差为:%d",s1[i]-s2[i]);

lab6-数组资料

lab6-数组资料

printf(“%d”,a); ()
必须 for(j=0;j<10;j++)
printf(“%d\t”,a[j]);
()
字符数组和字符串
字符数组 定义
例 char c[10], ch[3][4];
字符数组的初始化 逐个字符赋值 用字符串常量
字符数组的引用
逐逐逐用用个个个字字字字字符符符符符串串赋赋赋常常值值值量量
C程序设计实验
lab6-数组
实验目的
1. 熟练掌握C程序中的数组和字符数组的定义的引用 2.掌握数组和字符数组的输入输出 3. 熟练字符串处理函数
实验学时:
4学时 实验6报告提交时间:
实验项目性质
验证性
实验内容
编程调试典型程序
实验步骤—选择法对数组排序
用选择法对10个整数,按递增排序
实验步骤—字符串连接
编写一个程序,将两个字符串连接起来,不要 用strcat函数。
实验步骤
完成作业(p245, 8.2)
(a)输出"Who is the inventor of C?" (b)输入答案 (c)正确打印"Good!", (d)不正确打印"Try again" (e)不正确的允许有三次回答机会,还不正确才打印正确
有问题!
例例例例cchchcahahraracrcrhchc[h[5h5[][5]=6=]{]={=‘‘{“{‘“HHBB’H’o’ye,,’”l’,l’oe;”e’o’’};,,’’,’ll’’y’,,’’};ll’’,,’’oo’’,}’; #’}; char ch[6]=“Hello”;
HHB ceheaor ch[l]l=y“Hellllo\0”; oo\0 cchch[h[00[]0H] ] cchch[h[11[]1e] ] cchch[h[22[]2l] ] cchch[h[33[]3l] ] cchch[h[44[]4o] ] \0

实验报告6 一维数组程序设计

实验报告6 一维数组程序设计

实验报告6 一维数组程序设计
一、实验目的
本实验主要是通过编写一维数组程序,掌握数组的定义、初始化、赋值、排序等基本操作,并能够解决实际问题。

二、实验内容
本实验共设有两个小题,分别是:
1.通过一维数组计算一个班级学生的平均分、最高分、最低分和及格率。

2.通过一维数组将若干个数字进行排序,并输出排序后的结果。

三、实验环境
本实验采用C++语言进行编写,所用IDE为Dev-C++。

四、实验步骤
1.题目一代码
五、实验结果
在第一题输入4个学生的分数为:87,92,54,77时,输出结果如下:
请输入学生数量:4
请输入第1个学生的分数:87
请输入第2个学生的分数:92
请输入第3个学生的分数:54
请输入第4个学生的分数:77
平均分为:77.5
最高分为:92
最低分为:54
及格率为:75%
请输入数字个数:7
请输入第1个数字:8
请输入第2个数字:6
请输入第3个数字:1
请输入第4个数字:2
请输入第5个数字:10
请输入第6个数字:7
请输入第7个数字:3
排序后的结果为:1 2 3 6 7 8 10
六、结论
通过本实验的完成,我对于一维数组的使用和其基本操作掌握更加熟练。

在日后的学习和工作中能够更加灵活地运用数组处理问题。

七、体会
在本次实验中,我更加深刻地意识到了机械化的代码是怎么产生的,编写代码时一些细节之处需要注意,千万不能粗心大意,否则就很有可能出现难以想到的错误。

同时,对于一些难以理解与掌握的知识点,只有通过实践才能真正掌握和理解。

汇编语言(王爽第三版)实验6实践课程中的程序

汇编语言(王爽第三版)实验6实践课程中的程序

汇编语⾔(王爽第三版)实验6实践课程中的程序实验6 实践课程中的程序(1)将课程中所有讲解过的程序上机测试,⽤debug跟踪其执⾏过程,并在过程中理解所讲内容。

问题7.6 将data段中每个单词的头⼀个字母改为⼤写字母。

assume cs:codedata segmentdb '1. file 'db '2. edit 'db '3. search 'db '4. view 'db '5. options 'db '6. help 'data endscode segment程序分析:1)数据段定义了6个字符串结构,长度⼀致都是16字节,并且字符都是连续的,并且头⼀个字母在字符串中的位置都是第4个字符,在上⾯的寻址⽅式中,我们发现[bx+idata]⽅式⽐较适合这种情况,idata代表每个字符串起始地址,bx代表基本偏移地址,bx的偏移量也是有规律的16。

2)在debug中,这6个字符串显⽰的正好是6⾏16列的字符,是⼀个我们在C语⾔中讲到的⼆维数组[6][16],其实它在内存中是线性单列排列的。

3)遇到此种情况我们使⽤[bx+idata]的⽅式进⾏内存的寻址⽐较科学。

完整的代码如下:assume cs:codedata segmentdb '1. file 'db '2. edit 'db '3. search 'db '4. view 'db '5. options 'db '6. help 'data endscode segmentstart:mov ax, datamov ds, axmov bx, 0 ;将ds:bx指向data第⼀个单元mov cx, 6 ;需要修改6次s: mov al, [bx+3] ;使⽤[bx+idata]寻址⽅式,并送⼊al(单字节)and al, 11011111b ;转换为⼤写字母mov [bx+3], al ;回写内存add bx, 16 ;6个字符串长度⼀致,都是16字节,增量为16loop smov ax, 4c00Hint 21Hcode endsend start结果分析:(1)在循环中,如遇到loop指令,⾸先我们要认识到,(cx)=(cx)-1;直到cx=0退出循环。

实验6 数组

实验6 数组

实验6 数组【实验目的】1. 熟练掌握使用数组编程的方法。

2. 熟练掌握排序算法。

3. 熟练掌握字符串的存储和操作方法。

【实验内容】一、一维数组实验1. 以下程序功能为:输入一个正整数n,再输入n个整数,将它们排序后由小到大输出。

找出并改正以下源程序中错误,得出正确的运行结果。

源程序(有错误的程序)#include <stdio.h>void main(){int i,j,num,a[num];int change,t;printf("Enter Number: ");scanf("%d",&num);printf("Enter Data: \n");for(i=0;i<num;i++)scanf("%d",&a[i]);for(i=num-1,change=1;i>0 && change;i--){change=0;for(j=0;j<=i;j++)if(a[j]>a[j+1]){t=a[j]; a[j]=a[j+1]; /*调试时设置断点*/a[j+1]=t; change=1;}}printf("Sorted data:\n"); /*调试时设置断点*/for(i=0;i<num;i++)printf("%d ",a[i]);printf("\n");}运行结果(改正后程序的运行结果)623 77 14 89 6 686 14 23 68 77 89说明:程序编译时出现的错误信息是指定义数组a时,数组长度必须是常量,把a[num]改为a[50]即可,重新编译连接没有错误,但是输出结果有误。

为了找出程序的问题,关闭运行窗口,准备调试程序。

调试程序的步骤:(1)设置断点:设置2个断点,具体位置见源程序的注释。

C++语言程序设计实验6(数组、指针和字符串)

C++语言程序设计实验6(数组、指针和字符串)

{ for(i = 0; i < 4; ++ i) //二维数组赋值与输出
{
Array[t][i] = ( t * 4 ) + i + 1;
cout << Array[t][i] << ' ';
}
cout <<endl;
}
return 0;
} z 数组作为函数参数
数组元素作实参,与单个变量一样。
for(int i = 0; i < 4; i ++)
cout << "obs[" << i << "].getx(): " << obs[i].getx() << "\n";
return 0;
}
2. 指针
z 指针:内存地址,用于间接访问内存单元 z 指针变量:用于存放地址的变量
例如: int i; int *i_pointer = &i; //指向整型变量的指针,其中&表示取地址运算符
pint = (int *)pv; //void 指针赋值给 int 指针需要类型强制转换:
z 指向常量的指针
不 能 通 过 指 针 来 改 变 所 指 对 象 的 值 ,但 指 针 本 身 可 以 改 变 ,可 以 指 向 另 外 的 对 象 。例 如 :
int a, b;
int *name1 = &a;
using namespace std;
int main( )
{
int Array[10], *va = Array; //第一种访问方式

《C语言程序设计实验》指导书(实验1~6)

《C语言程序设计实验》指导书(实验1~6)

《C语言程序设计实验》指导书(简明版)**大学软件学院**年**月实验一顺序结构程序设计(2学时)一、实验目的1、熟悉C编译环境、简单C程序结构及书写方式、以及C程序的编辑、编译、连接、运行、调试的步骤;2、掌握C语言的基本数据类型及其输入输出格式,以及输入输出函数的使用方法;3、掌握C语言的算术运算符(特别是自增、自减运算符)、赋值运算符、关系运算符、逻辑运算符、条件运算符、逗号运算符的使用;4、掌握C语言顺序结构程序的执行流程、设计方法,能够根据实际问题灵活使用顺序结构,画出程序的算法流程图,设计出逻辑合理、思路清晰、结果正确的顺序结构程序。

二、实验内容及要求1、实验内容包括8道题目,分为基本内容和选做内容两部分。

要求:(1)基本内容中的实验题目是必须要完成的,选做内容中的实验题目可以根据自己的情况选做或全做(越多越好,适当加分);(2)在实验之前编写出基本内容、选做内容中的所有程序,实验前检查(视未完成情况适当扣分);(3)对于设计型题目,要求画出程序流程图(传统流程图和N-S图);(4)在上机实验过程中,注意总结和体会上机步骤(编辑、编译、连接、运行、调试、结果分析),注意培养观察、分析和排除编译错误、连接错误和程序逻辑错误的初步能力;(5)上机结束后,应按要求认真书写实验报告(格式见附件)。

2、基本内容(1)[验证型]编辑下列程序,然后进行编译、连接和运行,观察结果,并简要总结简单C程序的结构、书写格式以及上机过程;#include <stdio.h>int main( ){printf("Hello, world!\n");return 0;}(2)[验证型]通过运行下列程序,分析各种格式符的使用方法。

#include <stdio.h>int main( ){int a = 9, b = 2;float x = 32.8459, y = -792.451;char d = 'R';long n = 5461237;unsigned u = 65535;printf("%d,%d\n", a, b);printf("%3d,%3d\n", a, b);printf("%f,%f\n", x, y);printf("%-10f,%-10f\n", x, y);printf("%8.2f,%8.2\n", x, y);printf("%.4f,%.4f\n", x, y);printf("%3f,%3f\n", x, y);printf("%e,%10.2e\n", x, y);putchar(d);putchar('\n');printf("%c,%d,%o,%x\n", d, d, d, d);printf("%ld,%lo,%x\n", n, n, n);printf("%u,%o,%x,%d\n", u, u, u, u);return 0;}(3)[验证型]编辑下列程序,进行编译、连接和运行。

数组及其应用实验报告(3篇)

数组及其应用实验报告(3篇)

第1篇一、实验目的1. 熟练掌握数组的定义、初始化、赋值和输入输出方法。

2. 掌握一维数组和二维数组的操作方法。

3. 学会使用数组进行数据存储和排序。

4. 理解数组在实际编程中的应用场景。

二、实验环境硬件:个人电脑软件:Windows操作系统、C语言编译器三、实验内容1. 一维数组的定义、初始化和赋值2. 一维数组的输入输出3. 一维数组的查找与排序4. 二维数组的定义、初始化和赋值5. 二维数组的输入输出6. 二维数组的遍历7. 数组在实际编程中的应用案例四、实验步骤1. 一维数组的定义、初始化和赋值```cinclude <stdio.h>int main() {int array[5]; // 定义一个包含5个整数的数组array[0] = 1; // 赋值操作array[1] = 2;array[2] = 3;array[3] = 4;array[4] = 5;return 0;}```2. 一维数组的输入输出```cinclude <stdio.h>int main() {int array[5];printf("请输入5个整数:\n"); for (int i = 0; i < 5; i++) { scanf("%d", &array[i]);}printf("输入的数组元素为:\n"); for (int i = 0; i < 5; i++) { printf("%d ", array[i]);}return 0;}```3. 一维数组的查找与排序```cinclude <stdio.h>void selectionSort(int array[], int length) {for (int i = 0; i < length - 1; i++) {int minIndex = i;for (int j = i + 1; j < length; j++) {if (array[j] < array[minIndex]) {minIndex = j;}}int temp = array[minIndex];array[minIndex] = array[i];array[i] = temp;}}int main() {int array[5] = {3, 1, 4, 1, 5};int length = sizeof(array) / sizeof(array[0]); selectionSort(array, length);printf("排序后的数组为:\n");for (int i = 0; i < length; i++) {printf("%d ", array[i]);}return 0;}```4. 二维数组的定义、初始化和赋值```cinclude <stdio.h>int main() {int array[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; return 0;}```5. 二维数组的输入输出```cinclude <stdio.h>int main() {int array[3][4];printf("请输入一个3x4的二维数组:\n");for (int i = 0; i < 3; i++) {for (int j = 0; j < 4; j++) {scanf("%d", &array[i][j]);}}printf("输入的二维数组为:\n");for (int i = 0; i < 3; i++) {for (int j = 0; j < 4; j++) {printf("%d ", array[i][j]);}printf("\n");}return 0;}```6. 二维数组的遍历```cinclude <stdio.h>int main() {int array[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; for (int i = 0; i < 3; i++) {for (int j = 0; j < 4; j++) {printf("%d ", array[i][j]);}printf("\n");}return 0;}```7. 数组在实际编程中的应用案例(1)计算矩阵的转置```cinclude <stdio.h>void transposeMatrix(int matrix[][3], int rows, int cols, int transposed[][3]) {for (int i = 0; i < rows; i++) {for (int j = 0; j < cols; j++) {transposed[j][i] = matrix[i][j];}}}int main() {int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};int rows = 3, cols = 3, transposed[3][3];transposeMatrix(matrix, rows, cols, transposed);printf("矩阵的转置为:\n");for (int i = 0; i < rows; i++) {for (int j = 0; j < cols; j++) {printf("%d ", transposed[i][j]);}printf("\n");}return 0;}```(2)计算数组中最大值和最小值```cinclude <stdio.h>void findMaxMin(int array[], int length, int max, int min) { max = array[0];min = array[0];for (int i = 1; i < length; i++) {if (array[i] > max) {max = array[i];}if (array[i] < min) {min = array[i];}}}int main() {int array[] = {1, 3, 5, 7, 9};int length = sizeof(array) / sizeof(array[0]);int max, min;findMaxMin(array, length, &max, &min);printf("数组中的最大值为:%d,最小值为:%d\n", max, min);return 0;}```五、实验结果及分析本次实验通过一系列的实例,使我们对数组及其应用有了更深入的了解。

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

实验6-2 数组(二)
1
【实验目的】
(1)掌握二维数组、字符数组的定义、赋值和输入输出的方法
(2)掌握字符数组和字符串函数的使用
(3)掌握二维数组中查找最大值的方法
【实验要求】
(1)熟悉掌握二维数组、字符数组的定义、赋值和输入输出方法
(2)掌握字符数组和字符串函数的使用
(3)掌握二维数组中查找最大值的方法
【实验环境】
(1) Microsoft XP操作系统
(2) Microsoft VC++ 6.0
【实验内容】
1、求一个3*3矩阵对角线元素之和
/acmhome/problemdetail.do?&method=showdetail&id=1457题目描述:给定一个3*3的矩阵,请你求出正对角线元素之和。

输入:按照行优先顺序输入一个3*3矩阵,每个矩阵元素均为整数。

输出:对角线元素之和。

样例输入:
2 2 3
3 2 3
样例输出:6
2、上三角矩阵判断/JudgeOnline/problem.php?id=1980
题目描述
输入一个正整数m(1≤m≤6)和m阶方阵A中的元素,如果A是上三角矩阵,则输出“YES”,否则输出“NO”(上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线)。

输入
3
1 2 3
0 1 2
0 0 1
输出
YES
样例输入
4
1 2 3 4
0 1 1 3
0 0 1 2
样例输出
NO
3、矩阵转置/acmhome/problemdetail.do?&method=showdetail&id=1097
题目描述:输入N*N的矩阵,输出它的转置矩阵。

输入:第一行为整数N(1≤N≤100)。

接着是一个N*N的矩阵。

输出:转置矩阵。

样例输入:
2
1 2
1 2
样例输出:
1 1
2 2
4、矩阵下三角元素之和
/acmhome/problemdetail.do?&method=showdetail&id=1170题目描述:
输入一个正整数n(1<=n<=10),再输入n*n的矩阵,要求求该矩阵的下三角元素之和。

输入:输入包括n+1行,第一行为整数:n ,接下来的n行为矩阵数据
输出:矩阵的下三角元素之和
5
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
样例输出:
75
5、矩阵中绝对值大元素及行号列号/JudgeOnline/problem.php?id=1423
题目描述:
输入一个正整数n (1≤n ≤6),再输入一个n 行n列的矩阵,找出该矩阵中绝对值最大的元素以及它的行下标和列下标。

输入:
n
nxn
输出:
数行列
样例输入:
2
1 2
样例输出
4 2 2
6、杨辉三角/acmhome/problemdetail.do?&method=showdetail&id=1061
题目描述:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
上面的图形熟悉吗?它就是我们中学时候学过的杨辉三角。

输入
输入数据包含多组测试数据。

每组测试数据的输入只有一个正整数n(1≤n≤30),表示将要输出的杨辉三角的层数。

输入以0结束
输出
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。

样例输入
2
样例输出
1
1 1
1
1 1
1 2 1
7、鞍点/acmhome/problemdetail.do?&method=showdetail&id=1481
题目描述:
找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10。

输入:输入数据有多行,第一行有两个数m和n,下面有m行,每行有n个数。

输出:按下列格式输出鞍点:Array[i][j]=x
其中x代表鞍点,i和j为鞍点所在的数组行和列下标,我们规定数组下标从0开始。

一个二维数组并不一定存在鞍点,此时请输出None
我们保证不会出现两个鞍点的情况,比如:
3 3
1 2 3
1 2 3
样例输入:
3 3
1 2 3
4 5 6
7 8 9
样例输出:
Array[0][2]=3
8、字符逆序/acmhome/problemdetail.do?&method=showdetail&id=1171
题目描述:将一个字符串str的内容颠倒过来,并输出。

str的长度不超过100个字符。

输入:输入包括一行。

第一行输入的字符串。

输出:输出转换好的逆序字符串。

样例输入:I am a student
样例输出:tneduts a ma I
9、保留字母/acmhome/problemdetail.do?&method=showdetail&id=1095
题目描述:
编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。

输入:一个字符串,长度不超过80个字符。

输出:删掉非英文字母后的字符串。

样例输入:abc123+xyz.5
样例输出:abcxyz
10、删除指定字符
/acmhome/problemdetail.do?&method=showdetail&id=1174题目描述:
从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。

输入:第一行是一个字符串;第二行是一个字符。

输出:删除指定字符后的字符串。

样例输入:
sdf$$$sdf$$
$
样例输出:
sdfsdf。

相关文档
最新文档