数组的基本操作及应用
数组的基本操作及应用
一、数组的基本操作
1.查找
【问题描述】
有10个同学的学号及成绩如下表所示:
要求:输入一个学号,输出该学号同学的成绩。
【分析】
用数组A和B分别存放同学的学号和成绩;
当输入一个学号后,只要在数组A中搜索一下X的位置,再输出该位置的数组B中的
元素即可;
注意,输入的学号可能不存在。
【参考程序】
#include
#include
using namespace std;
int a[10+1]={0,23,12,38,25,9,36,10,16,33,28}, b[10+1], i, f, x; // cin >> n; int a[n+1];
int main()
{
for (i=1; i<=10; i++) // 读入每位同学的学号及成绩
cin >> a[i] >> b[i]; // scanf(“%d%d”, &a[i], &b[i]);
f = 0; // f为查找标记
cin >> x; // 输入学号: x=16
for(i=1; i<=10; i++) // 查找
if (x==a[i]) {
cout << a[i] << ”--” << b[i] << endl;
f = 1;
break;
}
if (f==0) cout << “Not found!”
return 0;
}
//data 23, 89, 12, 96, 38, 75, 25, 88, 9, 69
//data 36, 100, 56, 16, 98, 33, 74, 28, 90
2.删除、移动
【问题描述】
有10个大小不同的数,次序凌乱地放在A数组中,请找出其中的最大数以及最大数所在的位置,并将该数删除,它后面的元素依次前移。{或仅打标记}
【参考程序】
#include
#include
using namespace std;
int main()
{
int a[11], i, max, t;
for (i=1; i<=10; i++) cin >> a[i];
max = a[1]; // 假设第一个元素是最大数
t = 1;
for (i=2; i<=10; i++) // 找最大数
if (a[i] > max) {
max = a[i];
t = i;
}
cout << “max=” << max << ”wei zhi:” << t << endl;
for (i=t; i<=9; i++) // 删除最大数后,后面的数依次前移
a[i] = a[i+1];
for (i=1; i<=9; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}
实验5 数组1答案
实验数组1 实验目的: 1、进一步掌握循环结构的程序设计 2、掌握在循环结构里面使用break、continue 3、掌握一维数组的定义与使用 实验内容: 一、观察下列代码(有语法问题自己解决) 1、利用无限循环输入数据,直到条件满足利用break跳出循环: #include
{ 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
实验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开始。 例如:ListBox1.Items.RemoveAT(4) (7) Items.Clear方法 格式:对象.Items.Clear 用于清除列表框所有项目,例如:ListBox1.Items.Clear 4.单选按钮、复选框和框架 1)单选按钮(RadioButton) 单选按钮以组的形式出现,允许选择其中一项。 ?Text属性:按钮上显示的文本 ?TextAlign属性:文本对齐方式 ?Checked属性:表示单选按钮的状态,True ——被选定,False ——未被选定?Click事件:单击后,使Checked属性为True ?CheckedChanged事件:当某个单选按钮的状态被发生变化,该事件随之被触发。2)复选框(CheckBox) 与RadioButton具有相同属性和事件,之外还有: ?CheckState属性:表示复选框状态,Unchecked——未选定,Checked——被选定,Indeterminate——灰色 3)框架(GroupBox分组框) ?Text属性:标题文本 ?Enabled属性:框架和其中的控件
VB数组的基本操作专项
数组的基本操作专项 1.下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~ y(4)各元素的值分别为“4,1,2,3”。 s = Text1.Text:n = Len(s) For i = 1 To n y(i) = 1 Next i For i = 1 To (1) For j = (2) To n If (3) Then y(j) = y(j) + 1 Else y(i) = y(i) + 1 End If Next j Next i 上述程序段3各方框处的表达式分别为() A. (1)n (2)1 (3)Mid(s, j, 1) >= Mid(s, i, 1) B. (1)n (2)1 (3)Mid(s, j, 1) > Mid(s, i, 1) C. (1)n-1 (2)i+1 (3)Mid(s, j, 1) >= Mid(s, i, 1) D. (1)n-1 (2)i+1 (3)Mid(s, j, 1) > Mid(s, i, 1) 2. 有如下VB程序段: inS = Text1.Text n = 0 For i = 1 To Len(inS) m=0 c = Mid(inS, i, 1) If c >= "a" And c <= "z" Then m = 1 ElseIf c >= "A" And c <= "Z" Then m = 2 ElseIf c >= "0" And c <= "9" Then m = 3 End If b(m) = b(m) + 1 If b(m) = 2 Then n = n + 1 Next i 已知数组b各元素初始值都为0,文本框Text1中的内容为“Welcome,2019!”,执行该程序段后,变量n的值为 A.0 B.1 C.2 D.3 3. 有如下 VB 程序段: For i = 2 To 8 For j = 1 To 8 - i If d(j) > d(j + 2) Then temp = d(j): d(j) = d(j + 2): d(j + 2) = temp Next j Next i 数组元素d(1)到d(8)的值依次为“71,54,58,29,31,78,2,77”,经过该程序段
C语言实验五_数组
实验(实训)报告 项目名称实验五数组 所属课程名称 C 语言程序设计 项目类型验证性 实验(实训)日期2011/11.16/11.23/11.30 班级10统计2 学号100112100236 姓名裴晓晓 指导教师刘亚楠 浙江财经学院教务处制
一、实验(实训)概述: 【实验目的】 1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。 2. 掌握字符数组和字符串函数的使用。 3. 掌握与数组有关的算法(特别是排序算法)。 【实验要求】 1.选择合适的数据类型表达应用要求; 2.正确运用循环结构处理数组问题; 3.输入和输出格式清晰,有提示信息。能对输入数据进行基本的合理性判断。 【基本原理】 见第五章课件和课本内容 【实施环境】(使用的材料、设备、软件) Visual C++ 6.0 二、实验(实训)内容: 第1题 【项目内容】 完成课后第3题。求一个3×3矩阵对角线元素之和。 【方案设计】 提示:请在此粘贴你的完整程序。□ #include 【结论】(结果、分析) 提示: 请记录该程序的运行过程:输入输出。比如: 123 456↙(↙表示输入,如果没有输入,则没有这一行) a+b=579 (输出) 并尽可能对程序的执行结果进行分析。□ 4 5 5 6 2 34 7 23 5 66 sum=104 第2题 【项目内容】 完成课后第4题。 提示:自定义数组a的大小和内容。插入一个数number到已排好的数组中,可以有以下两种方法:(1)先从数组前面开始比较number和数组元素a[i]的大小,直到找到待插入的正确位置(即a[i-1] 一.插入:C语言数组怎么插入一个元素#include for(i=0;i 实验五数组的应用(1) 一、实验目的: 1、掌握静态数组的定义和使用方法。 2、用数组解决实际问题。 二、实验准备: 1、计算机基本操作练习。 2、VisualBasic软件使用预习。 3、设计出下面问题的程序。 三、实验步骤及内容: 1、静态数组的声明,语法格式如下: Dim 数组名[(各维下标)] [As 数据类型],… 例如:Dim num(6) As Integer 定义了一个包含()个元素的数组,从()到()。 静态数组的上下标必须是(),如果希望数组下标下界默认从1开始,则可在窗体的“通用|声明”部分使用: ________________________________语句来改变默认值。 2、Array函数的使用。 Dim a() As Variant A = Array(154,135,121) 请说明以上语句的作用,()。 Lbound函数和Ubound函数可以分别返回数组的指示维数的最小、最大可用下标。 3、应用一维静态全局数组求10个100以内的最大值、最小值、平均值和方差。程序运行界面如图所示。 4、利用数组排序。按“生成随机数”按钮,在第一个文本框中生成10个10~99之间的随机数,然后按“按大小排序”按钮,将这10个数按从大到小的顺序排列放在第二个文本框中。设计界面及运行结果如图1和图2 所示: 图1 设计界面 图2 运行界面 要求: 提示: (1)设计窗体,添加控件:两个文本框(Text)、两 个按钮(Command)。 (2)如表1 所示设置窗体控件属性。 (4)自行编辑代码。 窗体通用声明代码如下: Option Base 1 Dim a() As Integer 窗体控件代码自行编辑。 Private Sub Command1_Click() 1、向量的创建 1)直接输入: 行向量:a=[1,2,3,4,5] 列向量:a=[1;2;3;4;5] 2)用“:”生成向量 a=J:K 生成的行向量是a=*J,J+1,…,K+ a=J:D:K 生成行向量a=*J,J+D,…,J+m*D+,m=fix((K-J)/D) 3)函数linspace 用来生成数据按等差形式排列的行向量 x=linspace(X1,X2):在X1和X2间生成100个线性分布的数据,相邻的两个数据的差保持不变。构成等差数列。 x=linspace(X1,X2,n): 在X1和X2间生成n个线性分布的数据,相邻的两个数据的差保持不变。构成等差数列。 4)函数logspace用来生成等比形式排列的行向量 X=logspace(x1,x2) 在x1和x2之间生成50个对数等分数据的行向量。构成等比数列,数列的第一项x(1)=10x1,x(50)=10x2 X=logspace(x1,x2,n) 在x1和x2之间生成n 个对数等分数据的行向量。构成等比数列,数 列的第一项x(1)=10x1,x(n)=10x2 注:向量的的转置:x=(0,5)’ 2、矩阵的创建 1)直接输入:将数据括在[]中,同一行的元素 用空格或逗号隔开,每一行可以用回车或是 分号结束 如:a=[1,2,3;3,4,5],运行后: a = 1 2 3 3 4 5 2)函数eye,生成单位矩阵 eye(n) :生成n*n阶单位E eye(m,n):生成m*n的矩阵E,对角线元素为1,其他为0 eye(size(A)):生成一个矩阵A大小相同的单位矩阵 eye(m,n,classname):对角线上生成的元素是1,数据类型用classname指定。其数据类型可以是:duoble、single、int8、uint8、int16、uint16、int32、uint32 。 3)函数ones 用ones生成全1的矩阵ones(n) : 生成n*n的全1矩阵 ones(m,n) : 生成m*n的全1矩阵 ones(size(A)) : 生成与矩阵A大小相同的全1矩阵 ones(m,n,p,…)生成m*n*p*….的全1的多维矩阵 ones(m,n,…,classname)制定数据类型为 classname 4)函数zeros 函数zeros生成全0矩阵zeros(n):生成n*n的全0矩阵 zeros(m,n:)生成m*n的全0矩阵 zeros(size(A)): 生成与矩阵A大小相同的全0矩阵 zeros (m,n,p,…)生成m*n*p*….的全0的多维矩阵 zeros (m,n,…,classname)指定数据类型为 classname 一维数组的定义方式 在C语言中使用数组必须先进行定义。 一维数组的定义方式为:类型说明符数组名[常量表达式]; 其中:类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。 例如: int a[10]; 说明整型数组a,有10个元素。 float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。 char ch[20]; 说明字符数组ch,有20个元素。 (数组的定义和对变量的定义是一致的,可以连续在一行定义:float b[10],c[20];) 对于数组类型说明应注意以下几点: 数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。 数组名的书写规则应符合标识符的书写规定。 数组名不能与其它变量名相同。 例如: main() { int a; float a[10]; …… } 是错误的。 方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。 例如: #define FD 5 main() { int a[3+2],b[7+FD]; …… } 是合法的。但是下述说明方式是错误的。 main() { int n=5; int a[n]; …… } 允许在同一个类型说明中,说明多个数组和多个变量。 例如: int a,b,c,d,k1[10],k2[20]; 注意:1定义数组长度的常量表达式的结果必须是整形常量(包括字符) 2 在执行C99标准的编译系统中,允许对数组进行动态定义,即C99规定了可变长数组的存在。 但是,目前执行C99标准的编译器尚不普遍,在C89中是不允许使用可变长数组的,main和被调用函数中都不可以使用(如VC++6.0) 二维数组的定义 前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多 实验五结构体 一、实验目的 1.掌握结构体类型变量的定义和使用。 2.掌握结构体类型数组的概念和使用。 二、实验内容 编写一个程序实现下面的功能: A.建立一个数组用于存储学生的学号、姓名和三门课程的成绩和平均成绩 B.输入学号后输出该学生的学号、姓名和三门课程的成绩 C.输入学号后删除该学生的数据 D.插入学生的数据 E.输出平均成绩在80分及以上的记录 F.退出 要求用循环语句实现B--E的多次操作 三、实验具体实验程序代码(要有注释)、测试结果(最好截图)和实验总结 1、实验代码 建立一个数组用于存储学生的学号、姓名和三门课程的成绩和平均成绩 输入学号后输出该学生的学号、姓名和三门课程的成绩 um,&stud[i].name,&stud[i].yingyu,&stud[i].shuxue,&stud[i].cc); stud[i].avg=(stud[i].yingyu+stud[i].shuxue+stud[i].cc)/3; } for(i=0;i 数组常用算法: 查找: /*线性查找*/ int find(int num,int x[],int key) { int i,m=-1; for(i=0;i k++; return -1; } 分词: /*方法一*/ void fen(char s[][10],char str) { int i,j,k; for(i=0,j=0,k=0;str[i]!=0;i++) if(isalpha(a[i])) s[j][k++]=str[i]; else { s[j][k]=0; k=0; j++; } } } /*方法二*/ #include 第一单元(1-5章)基本概念练习题 一、单选选择(直接在正确的选项上打勾,每题) 1、下面关于C语言特点的描述,不正确的是( )。D A、C语言兼有高级语言和低级语言的双重特点,执行效率高 B、C语言既可以用来编写应用程序,又可以用来编写系统软件 C、C语言是一种结构式模块化程序设计语言 D、C语言的可移植性较差 2、C语言规定,在一个源程序中,main函数的位置( )。B A、必须在最开始 B、可以任意 C、必须在最后 D、必须在系统调用的库函数的后面 3、下列说法中正确的是( )。C A、C程序书写时,不区分大小写字母 B、C程序书写时,一行只能写一个语句 C、C程序书写时,一个语句可分成几行书写 D、C程序书写时每行必须有行号 4、C语言编译程序的首要工作是( )。A A、检查C语言程序的语法错误 B、检查C语言程序的逻辑错误 C、检查程序的完整性 D、生成目标文件 5、C语言程序经过连接以后生成的文件名的后缀为( )。C A、.c B、.obj C、.exe D、.cpp 6、以下关于算法的说法中,错误的是( )。D A、一个算法应包含有限个步骤 B、在计算机上实现的算法是用来处理数据对象的 C、算法的目的是为了求解 D、算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现 7、算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性之一的是( )。C A、确定性 B、有穷性 C、零个或多个输出 D、零个或多个输入 8、以下不属于结构化程序设计三种基本结构之一的是( )。B A、顺序 B、递归 C、循环 D、选择 9、下列数据中,不合法的C语言实型数据是( )。C A、0.123 B、123e3 C、2.1e3.5 D、789.0 10、若变量a、i已正确定义,且i已正确赋值,以下属于合法的C语句是( )。 A、a==1 B、++i; C、a=a++=5; D、a=int(i); 11、已有定义int a=6; 则执行语句a+=a-=a*a;后,a的值为( )。D A、36 B、0 C、-24 D、-60 12、若有以下程序段,其输出结果是( )。B int a = 0, b = 0, c = 0; c = ( a -= a - 5), (a -= 3,++b); printf(“%d,%d,%d\n”,a, b, c); A、0,0,-10 B、2,1,5 C、-10,-3,-10 D、3,3,-10 13、有以下定义:int i = 10, j = 1; 执行语句printf("%d,%d\n",i--, ++j); 后输出结果是( )。B A、9,2 B、10,2 C、9,1 D、10,1 14、字符串"\t\"\065\xff\n"的长度为( )。A A、5 B、14 C、8 D、输出项不合法,无正常输出 15、已有定义:char c;执行赋值语句c=('z'-'a')/2+'A';后,变量c的值为( )。AC语言一维数组的基本操作
实验五 数组的应用(1)
MATLAB数组基本操作
数组的定义
C语言实验5(结构体)
C语言算法锦集(六) 数组常用操作
C语言 第1-9章基本概念练习题ans(最全)
实验五 数组