第5章数组测试题
一、选择题
1.如下数组声明语句,( )正确。
A .Dim a[3,4] As Integer
B .Dim a(3,4) As Integet
C .Dim a(n,n) As Integer
D .Dim a(3 4) As Integer
2.要分配存放如下矩阵的数据,( )数组声明语句能实现(不能浪费空间)。
????
??????9.98.87.76.65.54.43.32.21.1 A .Dim a(9) As Integer B .Dim a(3,3) As Single
C .Dim a(-1 to 1,-5 to -3) As Single
D .Dim a(-3 to -1,5 to 7) As Integer
3.如下数组声明语句,则数组a 包含元素的个数有( )。
Dim a(3,-2 to 2,5)
A .120
B .75
C .60
D .13
4.以下程序的输出结果是( )。
Dim a
a=Array(1,2,3,4,5,6,7)
For i=Lbound(a) to Ubound(a)
a(i)=a(i)*a(i)
Next i
Print a(i)
A .49
B .0
C .不确定
D .程序出错
5.下列语句中(假定变量n 有值),能正确声明可调数组的是( )。
A .Dim a( ) As Integer
B .Dim a( ) As Integer ReDim a(n) ReDim a(n) As Integer
C .Dim a( ) As Interger
D .Dim a(10) As Integer ReDim a(3,4) ReDim a(n+10)
ReDim Preserve a(4,4)
6.在窗体的通用声明段自定义了数据类型Students ,下列( )定义方式是正确的。
A .Private Type Students
B .Type Students
Name As String*10 Name As String*10 Studno As Integer Studno As Integer End Type End Students
C .Type Students
D .Type Students
Name String*10 Name As String*10 Studno Integer Studno As Integer End Type End Type
7.以下程序的输出结果是( )。
Option Base 1
Private Sub Command1_Click()
Dim a, b(3, 3)
a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
For i = 1 To 3
For j = 1 To 3
b(i, j) = a(i * j)
If (j >= i) Then Print Tab(j * 3); Format(b(i, j), "###");
Next j
Next i
End Sub
A .1 2 3
B .1
C .1 4 7
D .1 2 3 4 5 6 4 5 2 4 6 4 6 7 8 9 7 8 9 3 6 9 9
二、填空题
1.数组声明时下标下界默认为0,利用 (1) 语句可以使下标为1。
2.由Array 函数建立的数组,其变量必须是 (2) 类型。
3.要获得数组的上界通过 (3) 函数,要获得列表框List 数组的元素总个数通过 (4) 属性。
4.若定义一维数组为:Dim a(N to M),则该数组的元素个数为 (5) 个。
5.随机产生6位学生的分数(分数范围1-100),存放在数组a 中,以每2分一个“*”显示,如图1所示。
Private Sub Command1_Click()
For i = 1 To 6
a(i) = (6)
Print (7)
Next i
End Sub
6.在一维数组中利用移位的方法显示如图2
所示结果。
Private Sub Form_Click()
Dim a(1 To 7) For i = 1 To 7
a(i) = i: Print a(i);
Next i
For i = 1 To 7
t = (8) '最右1位暂存
For j = 6 To 1 Step -1
(9) '其余6个向右移一位
Next j 图1 随机分数运行界面
图2 第6题运行界面
(10) '暂存的放入最左
For j = 1 To 7
Print a(j);
Next j
Next i
End Sub
7.下面程序对已知数组a,删除数组元素中某个元素。
Private Sub Command1_Click()
Dim a(), key%, i%, j%
a = Array(1, 6, 8, 3, 5, 9, 10, 2, 7, 4)
key = Val(InputBox("输入要删除的值"))
For i = 0 To UBound(a)
If (11) Then
For j = i + 1 To UBound(a)
(12)
Next j
ReDim (13)
MsgBox ("删除完成")
Exit Sub
End If
Next i
MsgBox ("找不到要删除的元素")
End Sub
8.下列程序表示将输入的一个数插入到按递减的有序数列中,插入后使该序列仍然有序。
Private Sub Form_Click()
Dim a, i%, n%, m%
a = Array(19, 17, 15, 13, 11, 9, 7, 5, 3, 1)
n = UBound(a)
ReDim (14)
m = Val(InputBox("输入欲插入的数"))
For i = UBound(a) - 1 To 0 Step -1
If (m >= a(i)) Then
(15)
If i = 0 Then a(i) = m
Else
(16)
Exit For
End If
Next i
For i = 0 To UBound(a)
Print a(i);
Next i
End Sub
9.下列程序在1000-9999之间查找满足如下条件的整数:该整数,逆向得到的另一个4位数是它自身的倍数(2倍以上)。查找结果和逆向排列分别显示在对应的列表框,如图3所示。
Private Sub Command1_Click()
Dim a As Integer
Dim m As Integer
Dim i As Integer
For i = 1000 To 9999
m = 0
(17)
Do While n > 0
m = (18) + n Mod 10
n = n \ 10
Loop
If (19) And m \ i > 1 Then List1.AddItem i
List2.AddItem (20)
End If
Next i
End Sub
10.下列程序完成如下功能:随机产生n(10-30)个大写字母,并显示。将这n 个字母按产生的顺序逆时针排列成一个圆环,按逆时针方向统计相邻两个字母满足升序的次数(如图4所示)。并输出符合条件的每对字符和统计结果。
Private Sub Form_Click()
Dim a() As String, count As Integer, i As Integer, n As Integer
Randomize
Form1.Cls
n = Int(Rnd * 20) + 10
(21)
图3 第9题运行界面 图4 第10题的示意图和运行界面
Cls
Print "产生的字符:"
For i = 1 To n
s = (22) '产生大写字母
a(i) = s
Print s; " ";
Next i
Print "统计结果:"
count = 0
For i = 2 To n
If (23) Then
count = count + 1
Print Space(3); a(i - 1); " "; a(i)
End If
Next i
If (24) Then
count = count + 1
Print Space(3); a(n); " "; a(1)
End If
Print "符合条件的字符有:" ; (25)
End Sub
11.本程序随机产生n(15)个A~J的大写字母,按字母降序排序后,将连续出现
的字母用压缩形式显示。例如,连续5个H字母显示为5*H,如图5所示。数组a( )用于存放随机产生的字母。
Private Sub Form_Click()
Const N = 15 Array Dim a(1 To N) As String * 1, c
Dim count%, i%, j%, k%
Randomize
For i = 1 To N
a(i) = Chr(Int( (26) ))
Print a(i);
Next i
图5 第11题的运行界面For i = 1 To N - 1 '选择法排序
k = i
For j = (27)
If a(j) > a(k) Then (28)
Next j
c = a(i): a(i) = a(k): a(k) = c
Next i
For i = 1 To N '输出排序结果
Print a(i); " ";
Next i
i = 1
Do While i <= N
count = 1
If i < N Then j = i + 1
Do While a(i) = a(j)
count = (29)
If j < N Then j = j + 1 Else Exit Do
Loop
If count = 1 Then Print a(i); " "; Else Print count; "*"; a(i); " ";
i = (30)
Loop
End Sub
2012年上期期中考试试题 时量:90分钟班级:计41 姓名: 一、选择题(每题5分,共50分) 1.以下为一维整型数组a的正确说明是_________. a)int a(10); b)int n=10,a[n]; c)int n; d)#define SIZE 10; scanf("%d",&n); int a[SIZE]; int a[n]; 2.以下对二维数组a的正确说明是________. a)int a[3][]; b)float a(3,4); c)double a[1][4] d)float a(3)(4); 3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______. (假设a[0][0]位于数组的第一个位置上。) a)i*m+j b)j*m+I c)i*m+j-1 d)i*m+j+1 4.若二维数组a有m列,则在a[i][j]前的元素个数为________. a)j*m+i b)i*m+j c)i*m+j-1 d)i*m+j+1 5.若有以下程序段: int a[]={4,0,2,3,1},i,j,t; for(i=1;i<5;i++) {t=a[i];j=i-1; while(j>=0&&t>a[j]) {a[j+1]=a[j];j--;} a[j+1]=t;} ... ... 则该程序段的功能是_________. a)对数组a进行插入排序(升序) b)对数组a进行插入排序(降序) c)对数组a进行选择排序(升序) d)对数组a进行选择排序(降序) 6.有两个字符数组a、b,则以下正确的输入语句是_______. a)gets(a,b); b)scanf("%s%s",a,b); c)scanf("%s%s",&a,&b); d)gets("a"),gets("b"); 7.下面程序段的运行结果是_________. char a[7]="abcdef"; char b[4]="ABC"; strcpy(a,b); printf("%c",a[5]); a)空格b)\0 c)e d)f 8.判断字符串s1是否大于字符串s2,应当使用_______.
一维数组练习题 1、以下对一维数组a进行正确初始化的是__________。 A) int a[10]=(0,0,0,0,0); B) int a[10]={ }; C) int a[ ]={0}; D) int a[10]={ 10*2}; 2、以下一维数组a的正确定义是________ 。 A) int a(10); B) int n=10,a[n]; C) int n; D) #define SIZE 10 scanf("%d",&n); int a[SIZE]; int a[n]; 3、执行下面的程序段后,变量k中的值为__________。 int k=3,s[2]; s[0]=k; k=s[1]*10; A) 不定值B) 33 C) 30 D) 10 4、下列程序执行后的输出结果是__________。 main() {int a,b[5]; a=0; b[0]=3; printf("%d,%d\n",b[0],b[1]); } A) 3,0 B) 3 0 C) 0,3 D) 3,不定值 5、已知数组a的赋值情况如下所示,则执行语句a[2]++;后a[1]和a[2]的值 分别是________。 a[0] a[1] a[2] a[3] a[4] ┌──┬──┬──┬──┬──┐ │ 10 │ 20 │ 30 │ 40 │ 50 │ └──┴──┴──┴──┴──┘ A) 20和30 B) 20和31 C) 21和30 D) 21和31 6、以下程序输出a数组中的最小值及其下标,在划线处应填入的是________。main( ) { int i,p=0,a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=1;i<10;i++) if(a[i] 一.选择题(2*20) 【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是。A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 【题2】以下对一维整型数组a 的正确说明是。 A)int a(10); B)int n=10,a[n]; C)int n; D)#define SIZE 10 scanf(“%d”,&n); int a[SIZE]; int a[n]; 【题3】若有说明:int a[10];则对a 数组元素的正确引用是。 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 【题4】在C 语言中,一维数组的定义方式为:类型说明符数组名; A)[整型常量表达式] B)[整型表达式] C)[整型常量] 或[整型表达式] D)[常量] 【题5】以下能对一维数组a 进行正确初始化的语句是。 A)int a[10]=(0,0,0,0,0); B)int a[10]={}; C)int a[]={0}; D)int a[10]=”10*1”; 【题6】以下对二维数组a 的正确说明是。 A)int a[3][]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); 【题7】若有说明:int a[3][4];则对a 数组元素的正确引用是。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) 【题8】若有说明:int a[3][4];则对a 数组元素的非法引用是。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 【题9】以下能对二维数组a 进行正确初始化的语句是。 A)int a[2][]={{1,0,1},{5,2,3}}; B)int a[][3]={{1,2,3},{4,5,6}}; C)int a[2][4]={{1,2,3},{4,5},{6}}; D)int a[][3]={{1,0,1},{},{1,1}}; 【题10】以下不能对二维数组a 进行正确初始化的语句是。 A)int a[2][3]={0}; B)int a[][3]={{1,2},{0}}; C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[][3]={1,2,3,4,5,6}; 1.下面数组声明语句,_________正确。 A)Dim a[2,4] As Integer B)Dim a(2,4)As Integer C)Dim a(n,n)As Integer D)Dim a(2 4)As Integer 2.假定建立了一个名为Command1的命令按钮数组,则以下说法中错误的是________。 A)数组中每个命令按钮的名称(名称属性)均为Command1 B)数组中每个命令按钮的标题(Caption属性)都一样 C)数组中所有命令按钮可以使用同一个事件过程 D)用名称Command1(下标)可以访问数组中的每个命令按钮 3.数组声明语句Dim a(-2 to2,5)中,数组包含元素个数为________。 A)120 B)30 C )60 D)20 4.下面程序的输出结果是________。 Dim a a = Array(1,2,3,4,5,6,7) For i = Lbound(a)to Ubound(a) a(i)= a(i)* a(i) Next i Print a(i) A)36 B)程序出错C)49 D)不确定 5.下面程序的输出结果是________。 Option Base 1 Private Sub Command1_Click() Dim a%(3, 3) For i = 1 To 3 For j = 1To 3 If j > 1 And i > 1 Then a(i, j)= a(a(i - 1, j - 1), a(i, j - 1))+ 1 Else a(i, j)= i * j End If Print a(i, j); ""; Next j Print Next i End Sub A)1 2 3 B)1 2 3 C )1 2 3 D)1 2 3 2 3 1 1 2 3 2 4 6 2 2 2 3 2 3 1 2 3 3 6 9 3 3 3 6.在设定Option Base 0后,经Dim arr(3,4)As Integer 定义的数组arr含有的元素个数为________。 A)12 B)20 C )16 D)9 7.用Dim A (-3 To 5)As Integer语句定义的数组的元素个数是________。 A)6 B)7 C )8 D)9 8.有如下程序代码,输出结果是________。 Dim a() 231页; 本节设计程序完成一个简单的学籍; 3管理系统的案例,学生的基本信息:学号,姓名,年龄,c 语言成绩。假设班级有10名学生,能实现以下功能: (1)输入10名学生的基本信息。 (2)输出10名学生的基本信息。 (3)输入学号、姓名,输出该学生的基本信息。 (4)按学号年龄对学生进行排序(升序),按c 语言成绩降序排序。 (5)统计优 良 不及格。 1.数据结构分析 此案例是一位数组,二维数组的综合运用。10名学生的学号,年龄,c 语言成绩可分别用长度为10的一位数组sno (long ),sage (int 型),cs (float 型)存储;10名学生的姓名可用元素长度为20个字符的一位数组,既字符型二维数组sname 存储。 2算法分析 使用模块化设计思想,进入系统主界面时有六个主要模块,输入学生的基本信息,输出学生的信息,查找学生 的基本信息,排序,统计,退出。学籍管理系统的机构功能框架,如图 5-28 所示。 图 5-28 学生管理系统的结构功能框架 5.5.2 奇数阶魔方矩阵 本节将实现技术矩魔方矩阵。 项目任务:用数组实现N 阶魔方矩阵(N 为奇数)。所谓的N 阶魔方矩阵是指把1~N*N 自然数按一定的方法排列成N*N 的矩阵,使得:任意行、任意列以及两个对角线上的数之和都为65。 5阶魔方如下: 17 24 1 8 15 输 入 学 生 的 基 本 信 息 输 出 学 生 的 信 息 查 找 学 生 的 基 本 信 息 排 序 统 计 退 出 学籍管理系统 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 本章习题: 1.设数组int a【N】的元素全部不相等,求a中最大元素和次大元素。 2.求有10个整数的数组a中奇数的个数和平均值,以及偶数个数和平均值。 3.统计输入的一串字符(“假设以‘\n’结束”)中,大写字母A,B...Z各出现的次数。 4.数组a:“1,7,9,11,13,15,17,19”;数组b:“2,4,6,8,10”两个数组合并为数组c;按升序排列。 5.输入10个数,将10个整数按升序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10 9 8 7 6 5 4 3 2 1,则输出:1 3 5 7 8 2 4 6 8 10 (编程提示、;可利用两个数组变量,一个用来存放输入的整数,输入后,对该数组进行排序,然后将数据复制到另一个数组中,先复制奇数再复制偶数)。 6.定义一个有10个元素的一位数组count ,从键盘上输入8个整数,将其按从大到小的顺序排列,并将排列后的数组输出。 7.求数组int a【M】【N】每行元素的平均值和平均最大的行号。 8.求A【M】【N】与B【M】【N】两矩阵的和矩阵C【M】【N】和差矩阵D【M】【N】(矩阵的值由键盘输入)。 9.有n个学生,每人考m门课。 (1)找出成绩最高的学生的学号和课程号 (2)找出有不及格课程的学生的学号及其各门课的全部成绩。 (3)求全部学生全部课程的平均分。 第五章数组练习题及答案 一、选择题 1、判断字符串a和b是否相等,应当使用() A、if(a==b) B、if(a=b) C、if(strcpy(a,b)) D、if(strcmp(a,b)) 2、以下正确的定义语句是() A、int a[1][4]={1,2,3,4,5}; B、float x[3][]={{1},{2},{3}}; C、long b[2][3]={{1},{1,2},{1,2,3}}; D、double y[][3]={0}; 3、以下各组选项中,均能正确定义二维实型数组a的选项是() A、float a[3][4]; float a[ ][4]; float a[3][ ]={{1},{0}}; B、float a(3,4); float a[3][4]; float a[ ][ ]={{0},{0}}; C、float a[3][4]; static float a[ ][4]={{0},{0}}; auto float a[ ][4]={{0},{0},{0}}; D、float a[3][4]; float a[3][ ]; float a[ ][4]; 4、下面程序的运行结果是() 1—5 DDCBA 6—10 BDABB 11—15 CCCBC 16—20 DDCBB 21—25 BBAAA 26—30 DBDDB #include "stdio.h" main() { char str[]="SSSWLIA",c; int k; for(k=2;((c=str[k])!='\0');k++) { switch(c) {case 'I':++k;break; case 'L':continue; default:putchar(c);continue; } putchar('*'); } } A、SSW* B、SW* C、SW*A D、SW 5、下面程序段是输出两个字符串中对应相等的字符。横线处应填入() char x[]="programming"; char y[]="Fortran"; int i=0; while(x[i]!='\0'&&y[i]!='\0')c语言数组典型试题设计含答案
数组练习题
c语言数组练习题大全
数组练习题及答案
一维数组练习题