实验5 数组1答案
C语言实验五实验报告——数组

C语言实验五实验报告——数组一、实验目的:1.了解数组的概念和基本使用方法;2.掌握一维数组和二维数组的定义、初始化、赋值及基本运算实现;二、实验内容与方法1.理论部分数组是一些具有相同类型的数据元素按一定顺序排列组合而成的集合,在程序设计中它是一个变量列表,由若干相同数据类型的元素组成。
通常用一个名字和一个下标来表示,下标可理解为数组元素在数组中的位置编号。
数组的特点:数组是根据顺序排列的元素的集合;所有的元素必须是相同类型。
数组的定义方法:1. 定义数组,数组元素类型 + 数组名[元素的个数];2. 元素的个数必须是整型常量或变量,定义时必须明确、指定元素的个数;3. 声明一个数组时,除了要指定数组的类型外,还要指定数组的名称;4. 数组定义完后,需要对其中的每个元素进行初始化。
可以在定义数组时赋初值,也可以通过赋值符号,对数组元素逐个进行赋值。
数组的初始化:1. 元素个数之间用逗号分开,最后1个元素后无逗号;2. 支持部分元素初始化;3. 定义和初始化可以一步完成。
二维数组数组可分为一维和多维数组。
一维数组可以看作是包含多个元素的向量,而二维数组可以看做是包含了多个一维数组的矩阵。
二维数组有行号和列号,因此,它同样需要两个下标。
数组元素类型数组名[行数][列数];数组元素类型数组名[ ][ ] = { {元素1, 元素2, ……}, {元素1, 元素2, ……}, ……{元素1, 元素2, ……}}2.实验代码**问题1:**定义一个一维数组a,包含有5个元素,分别为1,2,3,4,5;**问题2:**定义一个一维数组a,接收用户从键盘输入的5个数值,分别打印存储的各个元素。
三、实验结果与分析结果分析:定义了一个5个元素的一维数组a,并初始化了各个元素的值,其元素分别为1,2,3,4,5.循环遍历一遍数组a,并打印数组元素。
程序执行正常。
3.针对问题3:定义一个二维数组a,由4行3列组成,每个元素初始化为0,打印存储的各个元素;程序运行结果如下:四、实验总结:该实验主要是通过对C语言数组的理论知识和基本操作进行练习,加深了对数组的了解和掌握。
5 实验五 数组(一)

for (i=0; i<5; i++) {
scanf("%d",&a[i]); /*输入数组元素*/
sum=sum+a[i];
}
aver=sum/5; /*计算平均分*/
printf("\nThe average score is:%f", aver);
s=(a[0][0]*a[1][1]*a[2][2]);
printf ("%d\n",s);
}
4.输出以下图案:
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
{
Int char diamond[5][9];
Char diamond[5][9]={{‘*’,‘*’,’*’,’*’,’*’}{‘’,’*’,’*’,’*’,’*’,’*’}{‘’,’’,’*’,’*’,’*’,’*’
a(i-1)=x;
printf(“%d\n”,a[i]);
}
3.求一个3×3的整型矩阵对角线元素之和。
#include <stdio.h>
void main()
{
int i,j;
int a[3][3],s;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
scanf ("%d",&a[i][j]);
# include <stdio.h>
void main ()
数据结构实验报告答案

数据结构实验报告答案数据结构实验报告答案引言:数据结构是计算机科学中的重要概念,它涉及组织和管理数据的方法和技术。
在本次实验中,我们将研究和实践几种常见的数据结构,包括数组、链表、栈和队列。
通过这些实验,我们将深入理解数据结构的原理和应用。
一、数组数组是一种线性数据结构,它由一系列相同类型的元素组成。
数组的特点是可以通过索引来访问和修改元素,具有随机访问的能力。
在本次实验中,我们将实现一个简单的数组类,并进行一些基本操作,如插入、删除和查找。
首先,我们定义一个数组类,包含以下成员变量和方法:- size:数组的大小- elements:存储元素的数组- insert(index, element):在指定位置插入元素- remove(index):删除指定位置的元素- get(index):获取指定位置的元素- search(element):查找元素在数组中的位置通过实现上述方法,我们可以对数组进行各种操作。
例如,我们可以在数组的末尾插入一个元素,然后在指定位置删除一个元素。
我们还可以通过元素的值来查找其在数组中的位置。
二、链表链表是另一种常见的线性数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。
链表的特点是插入和删除操作的效率较高,但随机访问的效率较低。
在本次实验中,我们将实现一个简单的单向链表,并进行一些基本操作。
首先,我们定义一个节点类,包含以下成员变量和方法:- data:节点的数据元素- next:指向下一个节点的指针然后,我们定义一个链表类,包含以下成员变量和方法:- head:链表的头节点- insert(element):在链表的末尾插入一个节点- remove(element):删除链表中指定的节点- search(element):查找链表中指定元素的节点通过实现上述方法,我们可以对链表进行各种操作。
例如,我们可以在链表的末尾插入一个节点,然后删除链表中指定的节点。
实验8+数组(一)(参考答案)

实验8 数组(一)
☞知识点
1.整型、0、数组的大小-1、常量表达式1*常量表达式2
2.行
3.定义数组的同时为其元素赋值、0、0或’\0’、初始化的元素个数
4.下标、循环
☞课前练习题
1.B
2.96、8
3.AB
4.D
5.后两条
6.cin>>x;
☞分析
题1
1.计算数组a中奇数之和、21
2.计算数组a中偶数之和、24
3.s的初值不确定,不能得到正确的s终值
4.6、i==6
5.i为数组a的元素下标、数组元素下标i
题2
1.All right!
2.”i<4”或”i<=j”均会出现重复比较
3.对角线左右两边的元素是否对称,对称则flag为1,否则flag为0
4.不会,因为continue会立即结束本次循环,即使循环体内还有其它语句,这些语句在本次循环内也不会被执行。
如果不使用cotinue语句而使用break语句,则i循环的循环体应修改为:
if(a[j][i]!=a[i][j])
{
flag=0; break;
}
5.就a[j][i]而言,外层j循环控制行,内层i循环控制列、数组元素下标i,j
☞课后练习题
1.D
2.D
3.16
4.i<9、j<9-i、a[j]=a[j+1]、a[j+1]=temp。
实验5-数组答案

VB程序设计实验五实验目的●掌握一维数组和二维数组的操作●学习跟数组相关的控件:列表框和组合框复习1.列表框列表框(ListBox)控件允许用户查看和选择列表中的多个元素。
表5-11 列表框的常用属性和事件2.组合列表框(ComboBox)整合了列表框和文本框的功能,以一个文本框控件(TextBox)右边加上一个向下箭头的样式显示。
有Simple(简单组合框)、DropDown(下拉组合框)和DropDownList(下拉列表框)。
其中,Simple选项不显示下拉箭头,而是在控件的旁边显示一个滚动条;DropDown风格(默认值)在单击向下箭头时显示一个下拉列表,且在ComboBox中输入一个值;DropDownList显示一个下拉列表,但不允许用户在ComboBox中输入。
表5-13 组合列表框的常用属性和事件(1) Items.Count属性:列表框或组合框中项目数量。
最后一项的序号为Items.Count-1,该属性只能在程序中设置或引用。
(2) Text属性:被选定的选项的文本内容。
该属性只能在程序中设置或引用。
注意:ListBox1.Items(ListBox1.SelectedIndex)等于ListBox1.Text。
(3) Items.Add方法把一个选项加入列表框,格式:对象.Items.Add(选项);如:ListBox1.Items.Add("周海涛")(4) Insert方法在指定位置插入一个项目。
格式:对象.Items.Insert(序号, 添加项内容)(5)Items.Remove方法从列表框中删除指定的项。
格式:对象. Items.Remove (选项)。
例如:ListBox1.Items.Remove ("华成")(6)Items.RemoveAt方法格式:对象.RemoveAt(Index)从列表框中删除指定的项。
Index表示被删除项目在列表框中的位置,从0开始。
实验5参考答案

实验5参考答案实验5参考答案5-1.c:求具有10个元素的一维数组中正数、负数和零的个数。
#includestdio.hvoidmain(){inti,m,n,z,num[10];/*m、n、z为三个计数器*/m=n=z=0;for(i=0;ii++){scanf(%d,num[i]);if(num[i]0)m++;elseif(num[i] 0)n++;elsez++;}printf(m=%d,n=%d,z=%d\n,m,n,z);}5-2.c:输入10个数,用选择排序法由小到大排序并输出。
#includestdio.hvoidmain(){inti,j,p,q,s,a[10];printf(\ninput10numb ers:\nfor(i=0;ii++)scanf(%d,a[i]);for(i=0;ii++){p=i;q=a[i];for(j=i+1; jj++)if(qa[j]){p=j;q=a[j];}if(i!=p){s=a[i];a[i]=a[p];a[p]=s;}printf(% d,a[i]);}}5-3.c:输入10个数,用冒泡排序法由小到大排序并输出。
#includestdio.hvoidmain(){inta[10];inti,j,t;printf(input10numbers:\nfor(i=0;ii++)scanf(%d,a[i]);for(j=0;jj++) /*一共9趟,j为0~8*/for(i=0;ii++)/*i为0~8-j*/if(a[i]a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf(thesortednu mbers:\nfor(i=0;ii++)printf(%d,a[i]);printf(\n}5-4.c:教材P88第3题:从键盘上输入5行5列整型数组,并找出主对角线上元素的最大值及其所在行号。
#includestdio.hvoidmain(){inta[5][5],i,j,max,hh;/*hh用于存放最大值的行号*/for(i=0;ii++)for(j=0;jj++)scanf(%d,a[i][j]);max=a[0][0];hh=0;for(i= 1;ii++)if(maxa[i][i]){max=a[i][i];hh=i;}printf(最大值为:%d,行号为:%d\n,max,hh);}5-5.c:教材P88第5题:一个数如果恰好等于它的因子之和,这个数就称为完数,例如6=1+2+3。
山东大学汇编语言上机实验——实验五

子程序设计2.6显示学生名次表rank编制一个程序,要求接受键盘输入的一个班的学生成绩,并存放于一个50字的grade数组中,其中grade+i保存学号为I+1的学生成绩。
然后根据grade中的学生成绩,把学生成绩依次填入50字的rank数组中,其中rank+i的内容是学号为i+1的学生的名次。
再按学号顺序把名次从终端上显示出来。
本题要做的主要工作和例2.2的内容是完全一样的,只是增加了由用户键入学生成绩及输出学生名次两个部分的内容,因此这三个部分可以用子程序结构来完成。
子程序结构划分的层次图如图2.17所示,可以看出,main为主要模块,其下一层的三个模块为程序的三大部分。
现将各模块说明如下:1.模块名:main 为总模块输入:从键盘输入一个班的学生成绩输出:显示一个班的学生成绩功能:根据输入的学生成绩,计算并显示学生名次。
算法如下:一个学生名次等于成绩高于该学生的人数+1.2.模块名:input输入:以学号为序型键盘输入一个班的学生成绩。
各个成绩之间用逗号隔开,最后以回车符号结束。
输出:把一个班的学生成绩存入grade数组。
功能:接受一个班的学生成绩。
调用子模块decibin把键盘输入的一个十进制数转换为二进制数。
调用子模块crlf完成回车,换行功能。
3.模块名:rankp输入:从grade数组取得一个班的学生成绩。
输出:以学号为序计算出该班每个学生的名次存入rank数组。
功能:计算一个班的学生成绩。
算法为:一个学生的名次等于成绩高于该生的学生人数加1.4,。
模块名;output输入:把rank数组取得一个班的学生名次。
输出:把一个班的学生名次以学号为序在总端上显示出来。
功能:先是一个班的学生名次。
调用子模块decibin把键盘输入的一个十进制数转换为二进制数。
调用子模块crlf完成回车,换行功能。
5:模块名:decilin输入:从键盘输入一个十进制数。
输出:把该数转换成二进制数并存入BX寄存器中。
实验五 数组实验

实验五数组的使用一实验目的要求1 掌握数组的概念和使用方法。
2 掌握数组初始化的方法。
3学会字符数组和字符串的应用。
4 学会用数组名作函数的参数。
二有关概念1 只有静态数组和外部数组才能初始化。
2 引用数组时,对下标是否越界不作检查。
如定义int a[5];在引用时出现a[5],不给出错信息,而是引a[4]下面一个单元的值。
3 字符串放在字符数组中,一个字符串以‘/o’结束,有一些字符串函数如strcpy,strcmp,strlen等可以方便一进行字符串运算。
4 如有如下定义:char *str=“I love china”;表示 str是一个字符型指针变量,它的值是一个字符数据的地址。
不要认为str是字符串变量,在其中存放一个字串“I love china”。
5 用数组名作函数实参时,传到形参的是数组的首地址。
三实验内容和步骤1 定义三个数组int a[5];int b[2][2];char c[10];(1)分别在函数体外和函数体内对它们进行初始化,然后输出它们的值。
(2)在程序中再加一语句,输出a[5],b[2][2] ,分析结果。
(3)对C数组改为用赋值语句给各元素赋初值:c[0] ~ c[9]各元素分别为:…I‟, …‟, …a‟, …m‟, …‟, …b‟, …o‟, …y‟。
然后用printf(“%s”,c)输出字符串,分析结果。
参考程序如下:(1)main(){ int i,x,y;static int a[5]={1,2,3,4,5};static int b[3][2]={{3,4},{6,7},{9,5}}static char c[10]={ …i‟, …l‟, …p‟, …q‟, …k‟, …s‟, …d‟, …e‟, …a‟};for(i=0;i<5;i++)printf( “%5d”,a[i]);for(x=0;x<3;x++)for(y=0;y<2;y++)printf(“%5d”,b[x][y]);for(i=0;i<10;i++)printf(“%3c”,c[i]);}(2)结果无此值,在上面程序中要输出a数组第5个元素,和b数组的第3行第2例元素,应加此程序行:Printf(“%d”,a[4]);Printf(“%d”,b[2][1]);2 有一数组,内放10个整数,要求找出最小的数和它的下标。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验数组1
实验目的:
1、进一步掌握循环结构的程序设计
2、掌握在循环结构里面使用break、continue
3、掌握一维数组的定义与使用
实验内容:
一、观察下列代码(有语法问题自己解决)
1、利用无限循环输入数据,直到条件满足利用break跳出循环:
#include <iostream>
using namespace std;
int main( )
{
int x,sum=0;
while(1)
{
cin >> x;
if(x <= 0)
break;
sum += x;
}
return 0;
}
2、利用continue语句实现输出1-100之间的偶数:
#include <iostream>
using namespace std;
int main()
{
for (int i = 0;i <= 100; i++)
{
if (i % 2 != 0)
continue;
cout << i << ' ';
}
return 0;
}
二、编码训练
1、利用break语句写一程序:循环从键盘输入数据并累加起来,直到输入的数为零时结束循环,打印累加结果。
(参考前面第1题)
#include<iostream>
using namespace std;
int main( )
{
int x,sum=0;
while(1)
{
cin >> x;
sum += x;
if(x == 0) break;
}
cout << "The sum is " << sum << endl;
return 0;
}
2、利用continue语句写一程序:输出1-20之间不能被3整除的数。
(参考前面第2题)
#include<iostream>
using namespace std;
int main()
{
for (int i = 1;i <= 20; i++)
{
if (i % 3 == 0)
continue;
cout << i << ' ';
}
return 0;
}
3、实现求6位学生c++的平均成绩。
(参考案例书的P47案例1)
#include<iostream>
using namespace std;
int main()
{
double score[6];
double avg = 0,sum = 0;
for (int i = 0;i <= 5; i++)
{
cin >> score[i];
sum = sum + score[i];
}
avg = sum/6;
cout << "平均成绩是:" << avg;
return 0;
}
4、利用一维数组编写一个程序:从键盘上输入10个float类型的数据,找出它们的最大值和最小值,并输出(定义两个变量分别保存最大值和最小值)。
(参考案例书的P47案例1)#include<iostream>
using namespace std;
int main()
{
float numb[10];
float min = 0.0,max = 0.0;
int i;
for (i = 0;i <= 9; i++)
{
cin >> numb[i];
}
min = numb[0];
max = numb[0];
for (i = 1;i <= 9; i++)
{
if (numb[i] >= max ) max = numb[i];
if (numb[i] < min ) min = numb[i];
}
cout << "最大值是:" << max << endl;
cout << "最小值是:" << min << endl;
return 0;
}
三、案例训练
1、案例书的P49案例2
2、案例书的P53案例4
3、实现n个数(可以是整数或实数)由大到小进行排序
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
const int N = 10;
int a[N] ;
int t = 0;
cout<<"请输入10个数:\n";
for(int i = 0 ; i < N ; i++)
cin>>a[i];
cout<<"\n";
for(int i = 1;i <= N-1;i++)
{
for(int j = 0;j < N-i;j++)
{
if(a[j] < a[j+1])
{ t = a[j];
a[j] = a[j+1];
a[j+1]=t;
}
}
}
cout << "\n排序后为:\n";
for(int i = 0; i < N; i++)
cout << setw(4) << a[i];
cout << "\n";
return 0;
}
4、(谁是小偷)警察局抓了a、b、c、d四名偷窃嫌疑嫌疑犯,其中有一人是小偷。
审问中:
a说:“我不是小偷。
”
b说:“c是小偷。
”
c说:“小偷肯定是d。
”
d说:“c冤枉人。
”
现在已经知道四个人中有三人说了真话,一人说的是假话。
问到底谁是小偷?,
分析:设1表示是小偷,0表示不是小偷,显然a、b、c、d的取值是0或1,可以用四重循环穷举所有可能。
条件:(1)四人中只有一个为小偷,即a+b+c+d==1;(2)四人说的话,可以用关系表达式表示,关系表达式的值为1表示说真话,0表示说假话,四个人中三人说了真话,即四个关系表达式的和为3。
同时满足这两个条件的即为解。
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d;
for (a=0; a<=1; a++)
for (b=0; b<=1; b++)
for (c=0; c<=1; c++)
for (d=0;d<=1;d++)
//三人说真话,只有一个人是小偷
if (((a!=1)+(c==1)+(d==1)+(d!=1))==3 && (a+b+c+d==1))
{
if (a==1) cout<<"a是小偷"<<endl;
if (b==1) cout<<"b是小偷"<<endl;
if (c==1) cout<<"c是小偷"<<endl;
if (d==1) cout<<"d是小偷"<<endl;
}
}。