实验6 数组2答案
数据结构实验报告答案
数据结构实验报告答案数据结构实验报告答案引言:数据结构是计算机科学中的重要概念,它涉及组织和管理数据的方法和技术。
在本次实验中,我们将研究和实践几种常见的数据结构,包括数组、链表、栈和队列。
通过这些实验,我们将深入理解数据结构的原理和应用。
一、数组数组是一种线性数据结构,它由一系列相同类型的元素组成。
数组的特点是可以通过索引来访问和修改元素,具有随机访问的能力。
在本次实验中,我们将实现一个简单的数组类,并进行一些基本操作,如插入、删除和查找。
首先,我们定义一个数组类,包含以下成员变量和方法:- size:数组的大小- elements:存储元素的数组- insert(index, element):在指定位置插入元素- remove(index):删除指定位置的元素- get(index):获取指定位置的元素- search(element):查找元素在数组中的位置通过实现上述方法,我们可以对数组进行各种操作。
例如,我们可以在数组的末尾插入一个元素,然后在指定位置删除一个元素。
我们还可以通过元素的值来查找其在数组中的位置。
二、链表链表是另一种常见的线性数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。
链表的特点是插入和删除操作的效率较高,但随机访问的效率较低。
在本次实验中,我们将实现一个简单的单向链表,并进行一些基本操作。
首先,我们定义一个节点类,包含以下成员变量和方法:- data:节点的数据元素- next:指向下一个节点的指针然后,我们定义一个链表类,包含以下成员变量和方法:- head:链表的头节点- insert(element):在链表的末尾插入一个节点- remove(element):删除链表中指定的节点- search(element):查找链表中指定元素的节点通过实现上述方法,我们可以对链表进行各种操作。
例如,我们可以在链表的末尾插入一个节点,然后删除链表中指定的节点。
VB课后实验6答案
实验6 数组6-1Private Sub Command1_Click()Dim i As Integer, j As IntegerDim a(10) As Integer, t As IntegerPrint "交换前数据:"For i = 1 To 10a(i) = ……‘生成20-80之间的随机数Print ……;‘注意这里用分号,表示在一行上紧密输出各数组元素的值,‘如不用分号和逗号,则分行输出各数组元素的值。
Next iPrint ‘输出空行,表示后面的输出换到新的一行。
For i = 1 To 10 \ 2 ‘这里必须是10\2,表示交换5次,即可实现两两数据交换(第一'个和最后一个的交换,第二个和第九个的交换,以此类推)‘以下实现数据交换,必须通过第三个变量实现两两数据交换t = a(i)a(i) = a(10 - i + 1)a(10 - i + 1) = tNext iPrint "交换后数据:" ‘必须单独做循环输出数据,不能放在上面的循环里输出,因为上面循环只有5次,只能输出5个元素。
For i = 1 To 10Print ……;Next iEnd Sub6-2Private Sub Command1_Click()Dim a(10) As Integer, i As Integer, aver As IntegerDim max As Integer, imax As IntegerDim min As Integer, imin As Integer, sum As IntegerPrint "输入评委的评分"‘①输入数组元素For i = 1 To 10a(i) =……if a(i)<5 or a(i)>10 then‘出错信息‘i控制变量作何处理?endifNext i‘②输出数组元素For i=1 to 10Print ……;Next iPrint ‘换行‘③开始对数组元素进行处理imax = 1: imin = 1: sum = a(1): max = a(1) ‘imax表示最大元素的下标值,imin表示最小元素的下标值,max变量表示最大值,sum表示元素和变量。
虚拟仪器实验6
实验六图表、图形显示控件1.创建一个VI,运用扫描刷新模式,将两条随机数曲线显示在波形图表中,两条曲线中一条为随机数曲线,另一条曲线中每个数据点为第一条曲线对应点的前5个数据值的平均值。
答:程序框图结果显示2.在一个波形图表中显示3条随机数组成的曲线,分别用红、绿、蓝3种颜色表示,其取值范围分别为0~1、1~5和5~10。
答:程序框图显示结果3.在一个波形图中用2种不同的颜色显示1条正弦曲线和1条余弦曲线。
正弦曲线长度为256个点,x0=0,dx=1;余弦曲线长度为128个点,x0=10,dx=2。
答:程序框图显示结果4.波形图控件可用的数据格式有哪几种?分别产生一正弦波和一余弦波,并组织成不同的数据格式通过‘波形图’控件显示出来。
答:波形图控件可用的数据格式为:①一维或二维数组;②一维数组打包成簇,然后以簇为元素组成数组;③簇类型的数据;④以簇为元素的二维数组,每个元素均由t0、dt和数值数据组成;每个波形曲线的上述3个参数可不同;⑤由t0、dt及数据类型的二维数组Y组成簇;⑥由t0、dt和以簇为元素的数组这三者组成的簇。
程序框图结果显示5.利用“XY图”控件生成利萨育图形,即‘XY图’控件的输入分别按正弦(假定X和Y的幅值和频率相同,相位不同)规律变化所形成的图形。
答:程序框图结果显示6.用两种方法在“XY图”控件中显示一个圆。
答:7.用两种方法在“XY图”控件中显示半径分别为1和2的同心圆。
答:程序框图显示结果8.用两种方法在“XY图”控件中一个波形显示区内绘出多个波形。
答:程序框图结果显示9.用for循环构造一个10×10的随机数二维数组,并用强度图显示出来。
答:程序框图结果显示10.用数字波形图显示数组各元素对应的二进制信号,数组为:(0,7,14,21,9,35,13)。
答:程序框图结果显示11.用‘三维曲面’函数在三维空间描绘一组正弦波曲线,每一个正弦波的幅值为0~1之间的随机数。
C语言实验册完整答案
实验2答案五.程序改错#include<stdi o.h>int main(void){int x=3,y;y = x*x;printf("%d = %d * %d\n",y,x,x); /* 输出*/printf("%d * %d = %d\n",x,x,y);return 0;}六、一般编程题6.1#include<stdio.h>int main(void){int x,y;printf("Input x: ");scanf("%d",&x);printf("Input y: ");scanf("%d",&y);printf("%d + %d = %d\n",x,y,x+y);printf("%d - %d = %d\n",x,y,x-y);printf("%d * %d = %d\n",x,y,x*y);printf("%d / %d = %d\n",x,y,x/y);printf("%d %% %d = %d\n",x,y,x%y);return 0;}6.2#include<stdio.h>int main(void){ float x; double y;printf("Input x: ");scanf("%f",&x);printf("Input y: ");scanf("%lf",&y);printf("%f + %f = %f\n",x,y,x+y);printf("%f - %f = %f\n",x,y,x-y);printf("%f * %f = %f\n",x,y,x*y);printf("%f / %f = %f\n",x,y,x/y);return 0;}6.3#include<stdio.h>int main(void){ char c;printf("Input c: ");scanf("%c",&c);printf("%c\n",c+32);return 0;}6.4#include<stdio.h>int main(void){int celsius,fahr;fahr = 150;celsius = 5*fahr/9 - 5*32/9;printf("fahr = %d, celsius = %d\n", fahr, celsius);return 0;} 如果使用公式9)32(5-⨯=f c 计算结果不一样,celsius = 65。
实验6数组——参考答案
实验6 数组一、一维数组实验2. 编程:输入长度为10的整型数组并输出;然后将其逆序存放后再输出。
例如:0 1 2 3 4 5 6 7 8 9#include<>void main(){int i, j, a[10], t;printf("Input 10 number: ");for(i=0; i<10; i++) /*读入数据*/scanf("%d", &a[i]);printf("origin data: ");for(i=0; i<10; i++) /*输出原始数据*/printf("%d ", a[i]);printf("\n");for(i=0,j=9; i<j ; i++,j--) /*逆序存放*/{t=a[i];a[i]=a[j];a[j]= t;}printf("After reversed: "); /*输出逆序存放后的数据*/for(i=0; i<10; i++)printf("%d ", a[i]);printf("\n");}3. 编程:输入n个(1<n<=10)正整数并保存到数组中,求出最大值、最小值、平均值,以及最大值、最小值在数组中的下标分别是多少。
例如:5#include <>void main(){int i, n , max, min, a[10], sum;float average;printf("Input n (1<n<=10): ");scanf("%d", &n);if(1<n && n<=10){printf("Input %d integer:", n); /*输入数据并求累加和*/for(i=0, sum=0; i<n; i++){scanf("%d", &a[i]);sum+=a[i];}average=(float)sum/n; /*求出平均值*/for(i=0, max=0, min=0; i<n; i++) /*求最大、最小值的下标*/{if(a[i] > a[max])max= i;if(a[i] < a[min])min= i;}printf("max=%-5d index=%d\n", a[max], max);printf("min=%-5d index=%d\n", a[min], min);printf("average=%.2f\n", average);}elseprintf("数据超出范围");}4. 编程:青年歌手参加歌曲大奖赛,有10个评委对她(他)进行打分,试编程求这位选手的平均得分并输出(去掉一个最高分和一个最低分)。
数组2实验答案
}
k=a[0][0];
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(a[i][j]>k)
k=a[i][j];
}
sum=a[i][i]+sum;
prod=prod*a[i][3-i];
}
printf("主对角线元素之和:%d\n",sum);
printf("辅对角线元素之积:%d\n",prod);
printf("方阵中最大的元素:%d",k);
}
//输入3位学生3门课(语文、英语、数学)的成绩,找出总分最高的分数所对应的学号和总成绩。
while((c=getchar())!='\n')
{
a[i]=c;
i++;
}
printf("统计的字符串的个数为:%d",i);
for(j=i-1;j>=0;j--)
printf("%c",a[j]);
/*从键盘输入4个字符串(长度<20),存入二维字符数组中。
no=a[0][0];
sum=a[0][4];
for(i=1;i<=2;i++)
{ if(a[i][4]>=a[0][4])
{ no=a[i][0];
sum=a[i][4];}
}
printf("%d\n",no);
C语言程序设计实验六函数答案《西北民大电气学院》
实验六函数一,实验目的:1,掌握定义函数的方法.2,掌握函数实参与形参的对应关系,以及"值传递"的方式.3,掌握函数的嵌套调用和递归调用的方法.4,掌握全局变量和局部变量动态变量,静态变量的概念和使用方法.二,实验准备:1,复习函数调用的基本理论知识.2,复习函数的嵌套调用和递归调用的方法.3,复习全局变量,局部变量;静态变量,动态变量;外部变量等概念和具体使用. 4,源程序.三,实验步骤及内容:1,运行程序并回答问题(1)程序main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n")}void print_message(){ printf("Good Friend! \n");}void play(n)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}}问题:运行后出现什么错误为什么应如何修改请上机调试.修改:main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n");(缺少分号)}void print_message(){ printf("Good Friend! \n");}play(n)(原先void的与声明类型不同)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}getch();}运行结果(2)以下程序用于计算1+2+3+4+5.main(){ int i,sum;for(i=1;i<=5;++i)sum=add(i);printf("sum=%d\n",sum);getch();}add (a)int a;{static int s=0;s=s+a;return(s);}运行结果:问题:此程序能否得到正确结果为什么请在不增加语句的条件下,修改程序并上机调试.(3)程序int x=567,y=890;main(){ printf("x=%d,y=%d\n",x,y);}运行结果:问题:运行程序后出现什么错误为什么如何修改答:定义位置出错,y的定义在主函数之后了,将y的定义改在和x一样的位置处。
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能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。
c++实验六
实验六1.实验目的通过本次实验(1)初步掌握函数的定义方法,及函数的三种调用方法;(2)理解参数传送过程中,值传送与传地址的过程与区别;(3)初步学会用递归编写程序方法;(4)学会用数组作为函数参数的编程方法。
2.实验要求(1)编写实验程序(2)在VC++运行环境中,输入源程序;(3)编译运行源程序;(4)输入测试数据进行程序测试;(5)写出运行结果。
3.实验内容(1)分别用冒泡法(升序)、选择法(降序)、擂台法(升序)编写三个对一维数组进行排序的函数,函数名为sort1()、sort2()、sort3()。
再定义一个输出数组元素值的函数print()。
在主函数中定义一维整型数组a[N](N=10),用键盘输入10个整数给a[N]数组。
依次调用sort1()、print()、sort2()、print()、sort3()、print(),进行升序、降序、升序的操作,并输出每次排序后的结果。
输入十个实验数据:10,25,90,80,70,35,65,40,55,5(2)编写一个函数px(float x,int n)用递归的方法求下列级数前n项的和s。
在主函数中定义变量x与n,用键盘输入x与n的值,调用px()函数计算并返回级数前n项和s。
最后输出s的值。
输入实验数据:x=1.2 n=10(3)编写一个字符串连接函数str_cat(char s[],char s1[],chars2[]),完成s=s1+s2的字符串连接工作。
具体要求为,先将字符串s1复制到s中,然后再将字符串s2连接到s后面。
在主函数中定义三个字符串数组str[80]、str1[40]、str2[40],将两个字符串输入到str1与str2中,调用字符串连接函数str_cat(),将str1与str2连接到str中,最后输出连接后的字符串str。
要求用两种方法编写str_cat()函数。
方法一,用字符串复制与连接函数。
方法二,用while语句编程实现。
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章 数组 课后答案【khdaw_lxywyl】
第6章 数组习题参考答案6-1 请同学上机运行代码。
6-2Option Explicit Option Base 1Private Sub Command1_Click() Dim i As Integer, t As Integer Dim a(15) As Integer Randomize For i = 1 To 15a(i) = Int(100 * Rnd) Text1 = Text1 & Str(a(i)) Next i For i = 1 To 7 t = a(i)a(i) = a(16 - i) a(16 - i) = t Next i For i = 1 To 15 Text2 = Text2 & Str(a(i)) Next i End SubPrivate Sub Command2_Click() Text1 = "" Text2 = "" End SubPrivate Sub Command3_Click() End End Sub 6-3w w w .k h da w .c o m课后答案网Option ExplicitDim a(20) As IntegerPrivate Sub Command1_Click() Dim i As Integer Randomize For i = 1 To 20 a(i) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i)) Next i End SubPrivate Sub Command2_Click()Dim i As Integer, j As Integer, f As Boolean Dim n As Integer For i = 1 To 20 f = TrueFor j = i + 1 To 20If a(i) = a(j) Then f = False Next j If f = True Then n = n + 1 Next i Text2 = n End SubPrivate Sub Command3_Click() Text1 = "" End SubPrivate Sub Command4_Click() End End Sub 6-4w w w .k h da w .c o m课后答案网Option ExplicitDim a(20) As IntegerPrivate Sub Command1_Click() Dim i As Integer Randomize For i = 1 To 20 a(i) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i)) Next i End SubPrivate Sub Command2_Click()Dim i As Integer, j As Integer, max As Integer Dim n As Integer, w As Integer, p As Integer For i = 1 To 20 n = 0: p = i For j = 1 To 4If i > 20 Then p = p - 20 n = n + a(p) Next jIf n > max Then max = n w = i End If Next i Text2 = maxPicture1.Print w & "--" & w + 4 End SubPrivate Sub Command3_Click() Text1 = "" End SubPrivate Sub Command4_Click() End End Sub 6-5w w w .k h da w .c o m课后答案网Dim a(5, 5) As IntegerPrivate Sub Command1_Click() For i = 1 To 4 For j = 1 To 5a(i, j) = Int(9 * Rnd) + 1 Picture1.Print a(i, j); Next jPicture1.Print Next i End SubPrivate Sub Command2_Click() For j = 1 To 5 s = 0 For i = 1 To 4 s = s + a(i, j) Next i Text1 = Text1 & Str(s) Next j End SubPrivate Sub Command3_Click() For i = 1 To 4 s = 0 For j = 1 To 5 s = s + a(i, j) Next jText2 = Text2 & Str(s) & Chr(13) & Chr(10)w w w .k h da w .c o m课后答案网End SubPrivate Sub Command4_Click() Text1 = "" Text2 = "" Picture1.Cls End SubPrivate Sub Command5_Click() End End Sub 6-6Option ExplicitPrivate Sub Command1_Click()Dim a(5, 5), i As Integer, j As IntegerDim n As Integer, m As Integer, t As Integer Randomize For i = 1 To 5For j = 1 To 5 - 1a(i, j) = Int(40 * Rnd) * 2 + 10 Next j Next i For i = 1 To 5For j = 5 To 6 - i Step -1a(i, j) = Int(40 * Rnd) * 2 + 11 Next j Next i For i = 1 To 5 For j = 1 To 5 Text1 = Text1 & Str(a(i, j)) Next j Text1 = Text1 & vbCrLfw w w .k h da w .c o m课后答案网End Sub6-7 同6-4 6-8Dim a(5, 5) As IntegerPrivate Sub Command1_Click() Randomize For i = 1 To 5 For j = 1 To 5a(i, j) = Int(100 * Rnd) + 1 Picture1.Print Right(" " & a(i, j), 4); Next jPicture1.Print Next i End SubPrivate Sub Command2_Click() For i = 1 To 5 For j = 1 To 5 s = s + a(i, j) Next j Next iText1 = Str(s) End SubPrivate Sub Command3_Click() For i = 1 To 5 For j = 1 To 5If i = 1 Or j = 1 Or i = 5 Or j = 5 Thenw w w .k h da w .c o m课后答案网s = s + a(i, j) End If Next j Next iText2 = Str(s) End SubPrivate Sub Command4_Click() For i = 1 To 5 For j = 1 To 5If i = j Or j = 6 - i Then s = s + a(i, j) End If Next j Next iText3 = Str(s) End Sub 6-9Option ExplicitPrivate Sub Command1_Click()Dim a() As Integer, i As Integer, j As Integer Dim max As Integer, k As Integer, f As Boolean Dim n As Integer, m As Integer, t As Integer n = InputBox("输入矩阵的行数:") m = InputBox("输入矩阵的列数:") ReDim a(n, m) Randomize For i = 1 To nFor j = 1 To ma(i, j) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i, j))w w w .k h da w.c o m课后答案网Next j Text1 = Text1 & vbCrLf Next i For i = 1 To n max = 0For j = 1 To mIf a(i, j) > max Then max = a(i, j) t = j End If Next j For k = 1 To nIf a(k, t) < max Then Exit For Next kIf k > n ThenPicture1.Print "鞍点:"; a(i, t); "第"; i; "行"; t; "列" f = True End If Next iIf f = False Then Picture1.Print "没有鞍点" End SubPrivate Sub Command2_Click() Text1 = "" Picture1.Cls End SubPrivate Sub Command3_Click() End End Sub 6-10Option Explicitw w w .k h da w .c o m课后答案网Private Sub Form_Click()Dim a() As Integer, n As Integer Dim i As Integer, j As Integer n = InputBox("层数") ReDim a(n, n) For i = 1 To n Print Tab(20 - 2 * i); For j = 1 To iIf i = 1 Or i = j Then a(i, j) = 1 Elsea(i, j) = a(i - 1, j - 1) + a(i - 1, j) End IfPrint Left(a(i, j) & " ", 4); Next j PrintNext i End Sub 6-11Option ExplicitPrivate Sub Command1_Click()Dim a(4, 5), i As Integer, j As IntegerDim b(4) As Integer, max As Integer, min As Integer Dim n As Integer, m As Integer, t As Integer Randomizemax = 0: min = 32767 For i = 1 To 4 For j = 1 To 5a(i, j) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i, j)) b(i) = b(i) + a(i, j)w w w .k h da w.c o m课后答案网Text1 = Text1 & vbCrLf If max < b(i) Then max = b(i): m = i ElseIf min > b(i) Then min = b(i): n = i End If Next iLabel1.Caption = "max 行和: " & max & " min 行和 :" & min & vbCrLf & "max 行: " & m & " min 行: " & n & " 交换这两行" For j = 1 To 5 t = a(m, j)a(m, j) = a(n, j) a(n, j) = t Next j For i = 1 To 4 For j = 1 To 5 Text2 = Text2 & Str(a(i, j)) Next j Text2 = Text2 & vbCrLf Next i End Sub 6-12Option ExplicitPrivate Sub Command1_Click()Dim a(), i As Integer, j As IntegerDim b(4) As Integer, max As Integer, min As Integer Dim n As Integer, m As Integer, t As Integer Randomize n = InputBox("矩阵阶数n:") ReDim a(n, n)w w w .k h da w .c om课后答案网For j = 1 To na(i, j) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i, j)) Next j Text1 = Text1 & vbCrLf Next i For i = 1 To n For j = 1 To n Text2 = Text2 & Str(a(j, i)) Next j Text2 = Text2 & vbCrLf Next i End SubPrivate Sub Command2_Click() Text1 = "" Text2 = "" End SubPrivate Sub Command3_Click() End End Sub 6-13Option Explicit Option Base 1Private Sub Command1_Click()Dim a(3, 3) As Integer, i As Integer, j As Integer Dim max As Long, k As Long, f As Integer Dim n As Integer, m As Integer Randomize For i = 1 To 3w w w .k h da w.c o m课后答案网For j = 1 To 3a(i, j) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i, j)) Next j Text1 = Text1 & vbCrLf Next iFor i = 1 To 3 '主对角线方向 m = i k = 1For j = 1 To 3k = k * a(m, j) m = m + 1If m > 3 Then m = 1 Next jIf k > max Then max = k n = i f = 1 End If Next iFor i = 1 To 3 '辅对角线方向 m = i k = 1For j = 1 To 3k = k * a(j, m) m = m - 1If m < 1 Then m = 3 Next jIf k > max Then max = k n = i f = 2 End If Next iPicture1.Print "最大组元素:" If f = 1 ThenFor i = 1 To 2Picture1.Print "a("; n; ","; i; ")="; a(n, i); " "; n = n + 1 If n > 3 Then n = 1 Next iPicture1.Print "a("; n; ","; i; ")="; a(n, i) ElseIf f = 2 Then For i = 1 To 2w w w .k h da w .c o m课后答案网Picture1.Print "a("; i; ","; n; ")="; a(i, n); " "; n = n - 1 If n < 1 Then n = 3 Next iPicture1.Print "a("; i; ","; n; ")="; a(i, n) End IfPicture1.Print "乘积="; max End SubPrivate Sub Command2_Click() Text1 = "" Picture1.Cls End SubPrivate Sub Command3_Click() End End Sub 6-14Option ExplicitPrivate Sub Command1_Click()Dim a(3, 3) As Integer, i As Integer, j As Integer Dim k As Integeri = 3: j = 2: a(i, j) = 1: k = 1 Do Until k > 9 k = k + 1If i + 1 > 3 And j + 1 <= 3 Then i = 1: j = j + 1ElseIf i + 1 <= 3 And j + 1 > 3 Thenw w w .k h da w .c o m课后答案网i = i + 1: j = 1ElseIf i + 1 > 3 And j + 1 > 3 Then i = i - 1ElseIf i + 1 <= 3 And j + 1 <= 3 And a(i + 1, j + 1) <> 0 Then i = i - 1 Elsei = i + 1: j = j + 1 End If a(i, j) = k Loop For i = 1 To 3 For j = 1 To 3Picture1.Print a(i, j); Next jPicture1.Print Next i End SubPrivate Sub Command2_Click()Dim a() As Integer, i As Integer, j As Integer Dim k As Integer Dim n As Integer n = InputBox("幻方阶数:") ReDim a(n, n)i = n: j = (n + 1) / 2: a(i, j) = 1: k = 1 Do Until k > n * n k = k + 1If i + 1 > n And j + 1 <= n Then i = 1: j = j + 1ElseIf i + 1 <= n And j + 1 > n Then i = i + 1: j = 1ElseIf i + 1 > n And j + 1 > n Then i = i - 1ElseIf i + 1 <= n And j + 1 <= n And a(i + 1, j + 1) <> 0 Then i = i - 1 Elsei = i + 1: j = j + 1 End If a(i, j) = k Loop For i = 1 To n For j = 1 To nPicture1.Print Right(" " & a(i, j), 4); Next jPicture1.Printw w w .k h da w .c o m课后答案网Next i End Sub 6-15Option Explicit Option Base 1Private Sub Command1_Click()Dim a() As Integer, i As Integer, j As Integer Dim max As Long, k As Long, f As Integer Dim n As Integer, m As Integer Randomize f = InputBox("输入方阵阶数:") ReDim a(f, f) For i = 1 To f For j = 1 To fa(i, j) = Int(90 * Rnd) + 10 Text1 = Text1 & Str(a(i, j)) Next j Text1 = Text1 & vbCrLf Next iFor i = 1 To f '副对角线方向 m = i k = 0For j = 1 To fk = k + a(j, m) m = m - 1If m < 1 Then m = f Next jIf k > max Then max = k n = iw w w .k h da w .c o m课后答案网End If Next iPicture1.Print "max :"; max For i = 1 To fPicture1.Print "a("; i; ","; n; ")="; a(i, n) n = n - 1If n < 1 Then n = f Next i End SubPrivate Sub Command2_Click() Text1 = "" Picture1.Cls End SubPrivate Sub Command3_Click() End End Subw w w .k h da w .c o m课后答案网。
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; //第一种访问方式
实验6 数组2答案
实验6 数组的应用一、实验目的1、掌握一维数组、二维数组的概念和定义2、掌握数组元素的引用、赋值和输入/输出方法3、掌握使用循环结构控制数组元素的下标按规律变化来处理一维数组元素和二维数组元素的程序设计方法二、实验内容1. 写出下列程序运行后的输出结果并上机验证。
①#include <iostream>using namespace std;int main(){int a[10]={12,39,26,41,55,63,72,40,83,95};int k=0,j=0;for (int i=0;i<10;i++)if (a[i]%2==1) k++; else j++;cout<<k<<' '<<j<<endl;}6 4②#include <iostream>using namespace std;int main(){char a[]="abcdabcabfgacd";int i1=0,i2=0,i=0;while(a[i]){if(a[i]=='a') i1++;if(a[i]=='b') i2++;i++;}cout<<i1<<' '<<i2<<' '<<i<<endl;4, 3,14③#include <iostream>using namespace std;int main(){int a[10]={76,83,54,62,40,75,90,92,77,84};int b[4]={60,70,90,101};int c[4]={0};int i;for(i=0;i<10;i++){int j=0;while(a[i]>=b[j]) j++;c[j]++;}for(i=0;i<4;i++) cout<<c[i]<<' ';cout<<endl;}2 1 5 2④#include <iostream>#include <string>using namespace std;int main(){char a[5][10]={"student","worker","soldier","cadre","peasant"};char s1[10],s2[10];strcpy(s1,a[0]);strcpy(s2,a[0]);//strcpy(s1,s2)为字符串复制函数,将字符串变量s2的值复制给s1for(int i=1;i<5;i++){if(strcmp(a[i],s1)>0) strcpy(s1,a[i]);//strcmp(s1,s2)为字符串比较函数if(strcmp(a[i],s2)<0) strcpy(s2,a[i]);}cout<<s1<<' '<<s2<<endl;worker cadre说明:(s1、s2为字符串变量或者字符数组)strcpy(s1,s2);strcpy是string copy(字符串复制)的缩写。
C实验报告6参考答案
《高级语言程序设计》实验报告班级: 学号: 姓名: 成绩:实验6 数组程序设计一、实验目的1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。
2. 掌握字符数组和字符串函数的使用。
3. 掌握与数组有关的算法。
二、实验内容1(1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。
纠正程序中存在的错误,以实现其功能。
程序以文件名保存。
#include<>void main(){int n=10,i,sum=0;int a[n]; int a[10];for(i=0;i<10;i++){scanf("%d",a[i]); scanf("%d",&a[i]);sum=sum+a[i];}printf("sum=%d\n",sum);}(2)下列程序的功能为:将字符串b 连接到字符串a 。
纠正程序中存在的错误,以实现其功能。
程序以文件名保存。
#include<>void main( ){ char a[]="wel",b[]="come"; char a[20]="wel",b[]="come";int i,n=0;while(!a[n]) n++; while(a[n] != '\0') n++;for(i=0;b[i]!='\0';i++)a[n+i]=b[i];a[n+i]=’\0’;printf("%s\n",a);}(3)下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
纠正程序中存在的错误,以实现其功能。
程序以文件名保存。
#include<>#define N 4#define M 4main(){for (i=0;i<N;i++)for (j=0;j<M;j++)scanf("%d",&a[i][j]);flag2=0;for (i=0;i<N;i++){max=a[j][0]; max=a[i][0];for (j=0;j<M;j++)if (a[i][j]>max) if (a[i][j]>=max){max=a[i][j];maxj=j;}for (k=0,flag1=1;k<N&&flag1;k++)if (max>a[k][maxj])flag1=0;if (flag1){printf("\nThe saddle point is:a[%d][%d]=%d\n",i,maxj,max);flag2=1;}}if ( flag2) if (! flag2)printf("\nThere is no saddle point in the Matrix\n");}2.程序填空题(1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。
数组实践实验报告
一、实验目的1. 理解数组的基本概念和特性。
2. 掌握数组的创建、赋值、修改和删除等基本操作。
3. 熟悉数组元素的访问和数组运算。
4. 学习数组在实际问题中的应用。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容1. 数组的创建与初始化2. 数组元素的访问与修改3. 数组运算4. 数组的应用四、实验步骤1. 数组的创建与初始化(1)创建一个一维数组,包含10个整数,初始值为0。
```python# 创建一维数组array1 = [0] 10print("一维数组:", array1)```(2)创建一个二维数组,包含3行4列,初始值为0。
```python# 创建二维数组array2 = [[0] 4 for _ in range(3)]print("二维数组:", array2)```2. 数组元素的访问与修改(1)访问一维数组中的第5个元素。
```python# 访问一维数组中的第5个元素print("一维数组第5个元素:", array1[4])```(2)修改二维数组中的第2行第3列元素为5。
```python# 修改二维数组中的第2行第3列元素array2[1][2] = 5print("修改后的二维数组:", array2)```3. 数组运算(1)计算一维数组的长度。
```python# 计算一维数组的长度print("一维数组的长度:", len(array1))```(2)计算二维数组的行数和列数。
```python# 计算二维数组的行数和列数print("二维数组的行数:", len(array2))print("二维数组的列数:", len(array2[0]))```4. 数组的应用(1)计算一维数组的平均值。
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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验6 数组的应用
一、实验目的
1、掌握一维数组、二维数组的概念和定义
2、掌握数组元素的引用、赋值和输入/输出方法
3、掌握使用循环结构控制数组元素的下标按规律变化来处理一维数组元素和二维数组元素的程序设计方法
二、实验内容
1. 写出下列程序运行后的输出结果并上机验证。
①
#include <iostream>
using namespace std;
int main()
{
int a[10]={12,39,26,41,55,63,72,40,83,95};
int k=0,j=0;
for (int i=0;i<10;i++)
if (a[i]%2==1) k++; else j++;
cout<<k<<' '<<j<<endl;
}
6 4
②
#include <iostream>
using namespace std;
int main()
{
char a[]="abcdabcabfgacd";
int i1=0,i2=0,i=0;
while(a[i])
{
if(a[i]=='a') i1++;
if(a[i]=='b') i2++;
i++;
}
cout<<i1<<' '<<i2<<' '<<i<<endl;
4, 3,14
③
#include <iostream>
using namespace std;
int main()
{
int a[10]={76,83,54,62,40,75,90,92,77,84};
int b[4]={60,70,90,101};
int c[4]={0};
int i;
for(i=0;i<10;i++)
{
int j=0;
while(a[i]>=b[j]) j++;
c[j]++;
}
for(i=0;i<4;i++) cout<<c[i]<<' ';
cout<<endl;
}
2 1 5 2
④
#include <iostream>
#include <string>
using namespace std;
int main()
{
char a[5][10]={"student","worker","soldier","cadre","peasant"};
char s1[10],s2[10];
strcpy(s1,a[0]);strcpy(s2,a[0]);
//strcpy(s1,s2)为字符串复制函数,将字符串变量s2的值复制给s1
for(int i=1;i<5;i++)
{
if(strcmp(a[i],s1)>0) strcpy(s1,a[i]);
//strcmp(s1,s2)为字符串比较函数
if(strcmp(a[i],s2)<0) strcpy(s2,a[i]);
}
cout<<s1<<' '<<s2<<endl;
worker cadre
说明:(s1、s2为字符串变量或者字符数组)
strcpy(s1,s2);
strcpy是string copy(字符串复制)的缩写。
它的作用是将第二个
字符数组中的字符串复制到第一个字符数组中去,将第一个字符数组
中的相应字符覆盖。
strcmp(s1,s2);
strcmp是string compare(字符串比较)的缩写。
作用是比较两个字
符串。
比较的结果由函数值带回。
(1)如果s1=s2,函数值为0。
(2)如果s1>s2,函数值为一正整数。
(3)如果s1<s2,函数值为一负整数。
字符串比较的规则与其他语言中的规则相同,即对两个字符串自左至右逐个字符相比(按ASCⅡ码值大小比较),直到出现不同的字符或遇到‘\0’为止。
如全部字符相同,则认为相等;若出现不相同的字符,则以第一不相同的字符的比较结果为准。
注意:要用到字符串处理函数,需要加上#include <cstring>
3、编写程序。
(1)、实现3行2列矩阵的转置(行列互换),转置后的矩阵是2行3列。
#include<iostream>
using namespace std;
int main()
{
int a[3][2];
int b[2][3];
int i,j;
for (i = 0;i <= 2; i++)
{
for (j = 0;j <= 1; j++)
cin >> a[i][j];
}
for (i = 0;i <= 2; i++)
{
for (j = 0;j <= 1; j++)
b[j][i]= a[i][j];
}
cout << "转置后的矩阵为:" << endl;
for (i = 0;i <= 1; i++)
{
for (j = 0;j <= 2; j++)
cout << b[i][j] << "\t";
}
return 0;
}
(2)、计算下列两个3行4列的矩阵之和:
(提示:将数组的对应下标的元素相加)
#include<iostream>
using namespace std;
int main()
{
int a[3][4]= {{3,0,4,5},{6,2,1,7},{4,1,5,8}};
int b[3][4]= {{1,4,0,3},{2,5,1,6},{9,3,6,0}};
int c[3][4];
int i,j;
cout << "两个矩阵之和为:" << endl;
for (i = 0;i <= 2; i++)
{
for (j = 0;j <= 3; j++)
{
c[i][j] = a[i][j] + b[i][j];
cout << c[i][j] << "\t";
}
cout << endl;
}
return 0;
}
(3)、编一个程序,从键盘输入一个3行4列的数组,找出这个数组的最大值,输出这个数,并输出它的行、列下标(如果有相等值的,只要输出一个)。
#include<iostream>
using namespace std;
int main()
{
int a[3][4];
int i,j,max=0;
for (i = 0;i <= 2; i++)
{
for (j = 0;j <= 3; j++)
cin >> a[i][j];
}
max = a[0][0];
for (i = 0;i <= 2; i++)
{
for (j = 0;j <= 3; j++)
{
if (max < a[i][j]) max = a[i][j];
}
}
cout << "这个数组最大值是:"<< max <<"位于第:" << i << "行,第" << j << "列" << endl;
return 0;
}
4、案例训练
1)案例6Page57 2)案例8Page61 3)案例9Page63。