数组练习
选择题
1.下列说法正确的是
A. 数组如果没有初始化,也没有被赋值,则每个元素的默认值为0
B. 在给数组初始化时,可以只给其中几个元素赋初值
C. 数值型数组不能使用赋值语句整体赋值,但字符型数组可以使用赋值语句整体赋一个字符串
D. 用一个字符型数组来存放字符串时,可以存放与数组长度祥等数目的有效字符
2.下列说法正确的是
A. 在定义一维数组时,数组长度可以任意整形表达式表示(变量不行)
B. 在定义二维数组时,数组的第一维和第二维长度只能省略其中
一个(行不能省略)
C. 数组元素的下标可以用整型表达式或整型常量表示
D. 数组元素的下标必须为整形常量
3.对两个数组a和b进行如下初始化:
char a*+=”ABCDEF”;
char b*+=,‘A’,’B’,’C’,’D’,’E’,’F’-;
则下面描述正确的是()
A. a 和b数组完全相同
B. a 和b中都存放字符串
C. sizeof(a)比sizeof(b)大
D. sizeof(a)与sizeof(b)相同
4.以下程序的输出结果是()
#include
using namespace std;
int main()
{
char w[4][10]={"ABCD","EFGH","IFKL","M n OP"},k; for(k=1;k<3;k++)
cout<< w[k];
return 0;
}
A. ABCDEFGH
B. EFGHIFKL
C. ABCD EFGH IJKL
D. EFGH IFKL MNOP
5.有以下程序:
main()
{ char a[20]="abcd",b[]="12345";
int m,n;
for(m=strlen(a),n=2;b[n]!='\0';m++,n++) {
a[m]=b[n];
} cout < } A. abcd12345,12345 B. abcd,12345 C. abcd12345,abcd D. abcd345,12345 6.2、有以下程序: #include #include using namespace std; int main() { char arr[2][4]; strcpy(arr*0+,”you”); strcpy(arr*1+,”me”); arr*0+*3+ = ‘&’; cout << arr[0] << endl; return 0; } 该程序执行后的输出结果是() A. you&me B. you C. me D. yo& 7.下列数组定义中,会产生错误的是() A. int a*+ = ,‘0’,’1’,’2’,’3’,’4’,’5’,’6’-; B. int a[10] = {1,2,3,4,5,6}; C. char a*5+ = “hello”; D. char a*5+ = ,‘h’,’e’,’l’,’l’,’o’-; 8.若有以下程序: #include using namespace std; int main() { int I; int a*3+*3+=,‘1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’-; for(I=0;I<3;I++) cout< cout< return 0; } 执行后的输出结果是 A. 49 52 55 B. 1 4 7 C. 2 5 8 D. 50 53 56 9.下面程序的运行结果是()#include void mian () {char ch*7+=,“12ab56”-; int I,s=0; for(I=0;ch*I+>=’0’&&ch*I+<=’9’;I+=2) s=10*s+ch[I]-‘0’; cout<< s; } A. 1 B. 12a56b C. 12ab56 D. 1256 10.若有以下程序: void main () {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]; a[j]=t; j--; } } } 则该程序段的功能是() A. 对数组a进行插入排序(升序) B. 对数组a进行插入排序(降序) C. 对数组a进行选择排序(升序) D. 对数组a进行选择排序(降序) 11.若有说明“int a[3][4]={0};”,则下面正确的是 A. 只有元素a[0][0]可得到初值0 B. 此说明语句不正确 C. 数组a各元素都可得到初值,但其值不一定是0 D. 数组a中每个元素均可得到初值0 12.以下程序的输出结果是() #include int main () { char b*+=”Hello ,you”; b[5]=0; cout<< b; } A. Hello,you B. Hello C. HeloOyou D. Hell 13.当执行下面的程序时,如果输入ABC,则输出结果是()#include #include int main() { char ss*10+=”1,2,3,4,5”; cin >> ss; strcat(ss,”6789”); cout<< ss; } A. ABC6789 B. ABC67 C. 12345ABC6 D. ABC456789 14.以下程序的输出结果是() #include int main () { int b[3][3]={0,1,2,0,1,2,0,1,2},I,j,t=1; for(I=0;I<3;i++) for(j=I;j<=I;j++) t=t+b[I][b[j][j]]; cout<< t; } A. 3 B. 4 C. 1 D. 9 15.以下不能正确赋进行字符串赋初值的语句是 A. char str*5+=”good!”; B. char str*+=”good!”; C. char *str=”good!”; D. char str*5+=,‘g’,’o’,’o’,’d’-; 16.以下不能正确定义二维数组的选项是 A. int a[2][2]={{1},{2}}; B. int a[2][2]={{1},2,3}; C. int a[2][]={{1,2},{3,4}}; D. int a[][2]={1,2,3,4}; 17.在”int b[][3]={{1},{3,2},{4,5,6},{0}};”,中b[2][2]的值是 A. 0 B. 5 C. 6 D. 2 18.对于”int *pa[5];”的描述,()是正确的 A. pa 是一个指向数组的指针,所指向的数组时5个int 型元素 B. pa 是一个指向某数组第5个元素的指针,该元素是int 型元素 C. pa[5] 表示某个数组的第5个元素的值 D. pa 是一个具有5个元素的指针数组,每个元素是一个int型指针 19.在下列对字符数组进行初始化中()是正确的 A. char s1*+=”abcd”; B. char s2*3+=”xyz”; C. char s3*+*+=,‘a’,’x’,’y’-; D. char s4*2+*3+=,“xyz”,”mnp”-; 20.有以下程序: main() , char a*10+=”Abcd Efg9”,b*10+; int j,k=0; for(j=0,k=0;a*j+!=’\0’;j++) , if (( a*j+>=’A’ &&a*j+<=’Z’||(a*j+>=’0’ && a*j+<=’9’)) { b[k]=a[j];k++;} } b[k]=0; cout<< b+3; } 执行结果为() A. AbcdEfg9 B. bcdfg C. AE9 D. 以上都不正确 填空题 1. 以下函数的功能是删除字符串s中的所有数字字符。请填空。void dele(char *s) { int n = 0; for(i = 0; s[i] ; i++) { if () s[n+1] = s[i]; } s*n+ = ‘\0’; } 2. 若有0到9之间不同的士个数构成一个三位数,下面程序将统计出其有多少种方法,请填空完成此程序。 #include using namespace std; int main() int i,j,k; for(i=1;i<=9;i++) { for(j=0;j<=9;j++) { if() continue; else { for(k=0;k<=9;k++) if() count++; } } } cout< return 0; } 5. 将下面的语句段(a)补充完整,使其和语句段(b)在功能上完 全等价。 (a) double s=0.0; ; int k=0; do{ s+=d; k++; d=1.0/(k*k+1); }while(); (b) double s=1.0; for(int k=1;k<=10;k++) s+=1.0/( k*k+1); 6. 定义如下数组: int i; int y[2][3]={2,4,6,8,10,12}; 则下面语句的输出结果是: for(I=0;I<2;i++) cout< [答案] 10,12 7. 下面程序的输出结果是 #include void main() ,char str*+=”SSSWLIA”,c; int k; for(k=2;(c=str*k+!=’\0’);k++) {swith(c) ,case ‘i’; ++k;break; case ‘1’;conintue; default :cout<< c;coutinue;} cout<<’*’ } } 8. 当运行以下程序时,从键盘输入:AhaMA Aha,然后回车,则下面程序的运行结果是 #include int mian() ,char s*80+,c=’a’; int I=0; cin >>s; while(s*I+!=’\0’) { if(s[I]==c-) a[I]=s[I]-32; elseif(s[I]==c-32) s[I]=s[I]+32; I++;} Cout<< s;} C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。 3算法描述流程图 4源程序 #include for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。 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,应当使用_______. 实验4 数组 一.实验目的: 1.掌握一维数组的定义、赋值和输入输出的方法; 2.掌握字符数组定义、初始化、赋值的方法; 3.了解常见的字符串函数功能及其使用方法; 4.掌握二维数组的定义与引用。 二.实验内容: 1.编写程序,输入10个整数存入一维数组,统计输出其中的正数、负数和零的个数。 2.编写程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。 3.编写程序,输入10个整数存入一维数组,对其进行升序排序后输出。 4.编写程序,求二维数组中元素的最大值和最小值。 5.编写程序,求一个4×4矩阵中所有元素之和。 6.编写程序:从键盘上输入一字符串,统计输出该字符串中的字母字符、数字字符、空格以及其他字符的个数。 7.编写程序:从键盘上输入一字符串,并判断是否形成回文(即正序和逆序一样,如“abcd dcba”)。 8. 产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 9. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,按原来的规律将其插入并输出。 页脚内容1 10. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,则输出找不到。 11. 找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。可能没有鞍点。 12. 编程输出杨辉三角。(要求输出10行)(杨辉三角:每行端点与结尾的数为1.每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大) 13. 输入一行字符,统计大写字母、小写字母、数字、空格以及其它字符个数。 14. 编写程序,将两个字符串连接起来,不用strcat。 15. 编写程序实现strcpy函数功能。 16. 编程实现strlen函数功能。 17. 编程求2-4+6-8…-100+102的值。 18. 假设某人有100,000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。请写一程序计算此人可以经过多少次这个路口。 19. 输入若干个正整数,以0结束,将其中大于平均值且个位为5的数排序后输出。(按由大到小的顺序排序) 20. 输入一个字符串,将其中ASCII码值为基数的字符排序后输出。(按由小到大的顺序) 21. 输入一个以回车结束的字符串(少于80个字符),滤去所有的非16进制字符后,组成一个新字符串(16进制形式),然后将其转换为10进制数后输出。 22. 读入一个正整数n(1<=n<=6),再读入n阶矩阵,计算该矩阵除副对角线、最后一行、最后一列 页脚内容2 一维数组练习题 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语言数组编程题
一维数组练习题
c语言数组典型试题设计含答案
数组练习题
c语言数组练习题大全
数组练习题及答案
一维数组练习题