《C语言程序设计-第七章数组练习题【附答案】.docx》由会员分享,可在线阅读,更多相关《C语言程序设计-第七章数组练习题【附答案】.docx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第七章数组第七章数组7.1选择题【题7.1】在C语言中,引用数组元素时,其数组下标的数据类型允许是。A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式【题7.2】以下对一维整型数组a的正确说明是。A)int a(10);B)int n=10,an;C)int n;D)#define SIZE 10 scanf(“%d”,&n); int aSIZE; int an;【题7.3】若有说明:int a10;则对a数组元素的正确引用是。A)a10B)a3.5C)a(5)D)a10-10【题7.4】在C语言中,一维数组的定义方式为:类型说明符 数组名;A)常量表达式B)整型表达式C
2、)整型常量 或整型表达式D)整型常量【题7.5】以下能对一维数组a进行正确初始化的语句是。A)int a10=(0,0,0,0,0);B)int a10=;C)int a=0;D)int a10=10*1;【题7.6】以下对二维数组a的正确说明是。A)int a3;B)float a(3,4);C)double a14;D)float a(3)(4);【题7.7】若有说明:int a34;则对a数组元素的正确引用是。A)a24B)a1,3C)a1+10D)a(2)(1)【题7.8】若有说明:int a34;则对a数组元素的非法引用是。A)a02*1B)a13C)a4-20D)a04【题7.9】
3、以下能对二维数组a进行正确初始化的语句是。A) int a2=1,0,1,5,2,3;B) int a3=1,2,3,4,5,6;C) int a24=1,2,3,4,5,6;D) int a3=1,0,1,1,1;【题7.10】以下不能对二维数组a进行正确初始化的语句是。A) int a23=0;B) int a3=1,2,0;C) int a23=1,2,3,4,5,6;D) int a3=1,2,3,4,5,6;【题7.11】若有说明:int a34=0;则下面正确的叙述是。A) 只有元素a00可得到初值0B) 此说明语句不正确C) 数组a中各元素都可得到初值,但其值不一定为0D) 数组
4、a中每个元素均可得到初值0【题7.12】若有说明:int a4=0,0;则下面不正确的叙述是。A) 数组a的每个元素都可得到初值0B) 二维数组a的第一维大小为1C) 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1D) 只有元素a00和a01可得到初值0,其余元素均得不到初值0【题7.13】若有说明:int a34;则数组a中各元素。A) 可在程序的运行阶段得到初值0B) 可在程序的编译阶段得到初值0C) 不能得到确定的初值D) 可在程序的编译或运行阶段得到初值0【题7.14】以下各组选项中,均能正确定义二维实型数组a的选项是。A)float a34;B)float a
5、(3,4); float a4; float a34; float a3=1,0; float a=0;0;C)float a34;D)float a34; static float a4=0,0; float a3; auto float a4=0,0,0; float a4;【题7.15】下面程序(每行程序前面的数字表示行号)。1 main()2 3 float a3=3*0;4 int i;5 for(i=0;i3;i+) scanf(“%d”,&ai);6 for(i=1;i3;i+) a0=a0+ai;7 printf(“%dn”,a0);8 A)第3行有错误B)第7行有错误C)第5
6、行有错误D)没有错误【题7.16】下面程序(每行程序前面的数字表示行号)。1 main()2 3 float a10=0.0;4 int i;5 for(i=0;i3;i+) scanf(“%d”,&ai);6 for(i=1;i10;i+) a0=a0+ai;7 printf(“%fn”,a0);8 A)没有错误B)第3行有错误C)第5行有错误D)第7行有错误【题7.17】下面程序中有错误的行是(每行程序前面的数字表示行号)。1 main()2 3 float a3=1;4 int i;5 scanf(“%d”,&a);6 for(i=1;i3;i+) a0=a0+ai;7 printf(“
7、a0=%dn”,a0);8 A)3B)6C)7D)5【题7.18】下面程序(每行程序前面的数字表示行号)。1 main()2 3 float a3=0;4 int i;5 for(i=0;i3;i+) scanf(“%d”,&ai);6 for(i=1;i4;i+) a0=a0+ai;7 printf(“%dn”,a0);8 A)没有错误B)第3行有错误C)第5行有错误D)第6行有错误【题7.19】若二维数组a有m列,则计算任一元素aij在数组中位置的公式为。(假设a00位于数组的第一个位置上。)A)i*m+jB)j*m+iC)i*m+j-1D)i*m+j+1【题7.20】对以下说明语句的正确
8、理解是。int a10=6,7,8,9,10;A) 将5个初值依次赋给a1至a5B) 将5个初值依次赋给a0至a4C) 将5个初值依次赋给a6至a10D) 因为数组长度与初值的个数不相同,所以此语句不正确【题7.21】以下不正确的定义语句是。A) double x5=2.0,4.0,6.0,8.0,10.0;B) int y5=0,1,3,5,7,9;C) char c1=1,2,3,4,5;D) char c2=x10,xa,x8;【题7.22】若有说明:int a3=1,2,3,4,5,6,7;则a数组第一维的大小是。A)2B)3C)4D)无确定值【题7.23】若二维数组a有m列,则在ai
9、j前的元素个数为。A)j*m+iB)i*m+jC)i*m+j-1D)i*m+j+1【题7.24】定义如下变量和数组:int k;int a33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是。for(k=0;k3;k+) printf(“%d”,ak2-k);A)3 5 7B)3 6 9C)1 5 9D)1 4 7【题7.25】若有以下程序段: int a=4,0,2,3,1; i,j,t;for(i=1;i=0&taj) aj+1=aj; j-; aj+1=t; 则该程序段的功能是。A) 对数组a进行插入排序(升序)B) 对数组a进行插入排序(降序)C) 对数组a进行选择排序(升
10、序)D) 对数组a进行选择排序(降序)【题7.26】以下正确的定义语句是。A) int a14=1,2,3,4,5;B) float x3=1,2,3;C) long b23=1,1,2,1,2,3;D) double y3=0;【题7.27】下面程序的运行结果是。main()int a66,i,j;for(i=1;i6;i+)for(j=1;j6;j+)aij=(i/j)*(j/i);for(i=1;i6;i+)for(j=1;j6;j+)printf(“%2d”,aij);printf(“n”);A)1 1 1 1 1 B)0 0 0 0 1C)1 0 0 0 0D)1 0 0 0 1 1
11、 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1【题7.28】下面程序的运行结果是。main()int a6,i;for(i=1;i3)%5;printf(“%2d”,ai);A)-4 0 4 0 4B)-4 0 4 0 3C)-4 0 4 4 3D)-4 0 4 4 0【题7.29】下面是对s的初始化,其中不正确的是。A)cha
12、r s5=“abc”;B)char s5=a,b,c;C)char s5=“”;D)char s5=“abcdef”;【题7.30】下面程序段的运行结果是。char c5=a,b,0,c,0;printf(“%s”,c);A)abB)abC)ab c【题7.31】对两个数组a和b进行如下初始化char a=“ABCDEF”;char b=A, B,C,D,E,F;则以下叙述正确的是。A)a与b数组完全相同B)a与b长度相同C)a和b中都存放字符串D)a数组比b数组长度长【题7.32】有两个字符数组a、b,则以下正确的输入格式是。A)gets(a,b);B)scanf(“%s %s”,a,b);
13、C)scanf(“%s %s”,&a,&b);D)gets(“a”),get(“b”);【题7.33】有字符数组a80和b80,则正确的输出形式是。A)puts(a,b);B)printf(“%s %s”,a,b);C)putchar(a,b);D)puts(a),puts(b);【题7.34】下面程序段的运行结果是。char a7=“abcdef”;char b4=“ABC”;strcpy(a,b);printf(“%c”,a5);A)空格B)0C)eD)f【题7.35】有下面的程序段char a3,b=“China”;a=b;printf(“%s”,a);则。A)运行后将输出ChinaB)
14、运行后将输出ChC)运行后将输出ChiD)编译出错【题7.36】下面程序段的运行结果是。char c=“tv0willn”;printf(“%d”,strlen(c);A)14B)3C)9D)字符串中有非法字符,输出值不确定【题7.37】判断字符串a和b是否相等,应当使用。A)if(a=b)B)if(a=b)C)if(strcpy(a,b)D)if(strcmp(a,b)【题7.38】判断字符串s1是否大于字符串s2,应当使用。A)if(s1s2)B)if(strcmp(s1,s2)C)if(strcmp(s2,s1)0)D)if(strcmp(s1,s2)0)【题7.39】下面程序段是输出两
15、个字符串中对应字符相等的字符。请选择填空。char x=“programming”;char y=“Fortran”;int i=0;while(xi!=0&yi!= 0)if(xi=yi) printf(“%c”,【1】);else i+;【1】 A)xi+B)y+iC)xiD)yi【题7.40】下面描述正确的是。A) 两个字符串所包含的字符个数相同时,才能比较字符串B) 字符个数多的字符串比字符个数少的字符串大C) 字符串“STOP ”与“STOP”相等D) 字符串“That”小于字符串“The”【题7.41】下述对C语言字符数组的描述中错误的是。A) 字符数组可以存放字符串B) 字符数组
16、的字符串可以整体输入、输出C) 可以在赋值语句中通过赋值运算符“”对字符数组整体赋值D) 不可以用关系运算符对字符数组中的字符串进行比较【题7.42】有已排好序的字符串a,下面的程序是将字符串s中的每个字符按a中元素的规律插入到a中。请选择填空。#include main()char a20=“cehiknqtw”;char s=“fbla”;int i,k,j;for(k=0;sk!=0;k+)j=0;while(sk=aj&aj!=0) j+;for(【1】) 【2】;aj=sk;puts(a);【1】 A)i=strlen(a)+k; i=j; i-B)i=strlen(a); i=j;
17、 i- C)i=j; i=strlen(a)+k; i+D)i=j; i=strlen(a); i+【2】 A)ai=ai+1B)ai+1=ai C)ai=ai-1D)ai-1=ai【题7.43】下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中。请选择填空。#include main()char a=“acegikm”;char b=“bdfhjlnpq”;char c80,*p;int i=0,j=0,k=0;while(ai!=0&bj!=0)if(aibj) 【1】 else 【2】 k+;ck= 0;if(【3】) p=b+j;else p=a+i;st
18、rcat(c,p);puts(c);【1】 A)ck=ai; i+;B)ck=aj; i+; C)ck=ai; j+;D)ck=aj; j+;【2】 A)ck=ai; i+;B)ck=aj; i+; C)ck=ai; j+;D)ck=aj; j+;【3】 A)ai=0B)ai!=0 C)ai-1=0D)ai-1!=0【题7.44】下面程序的功能是将字符串s中所有的字符c删除。请选择填空。#include main()char s80;int i,j;gets(s);for(i=j=0;si!=0;i+)if(si!=c) 【1】;sj=0;puts(s);【1】 A)sj+=siB)s+j=s
19、i C)sj=si; j+D)sj=si【题7.45】下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。请选择填空。#include main()char s80,c1,c2=;int i=0,num=0;gets(s);while(si!=0)c1=si;if(i=0) c2=;else c2=si-1;if(【1】) num+;i+;printf(“There are %d words.n”,num);【1】 A)c1=&c2=B)c1!=&c2= C)c1=&c2!=D)c1!=&c2!=【题7.46】下面程序的运行结果是。#include main()cha
20、r ch7=“12ab56”;int i,s=0;for(i=0;chi=0&chi=9;i+=2)s=10*s+chi-0;printf(“%dn”,s);A)1B)1256C)12ab56D)1 2 5 6【题7.47】当运行以下程序时,从键盘输入:aa bb cc dd(表示回车),则下面程序的运行结果是。#include main()char a15,a25,a35,a45;scanf(“%s %s”,a1,a2);gets(a3); gets(a4);puts(a1); puts(a2);puts(a3); puts(a4);A)aaB)aaC)aaD)aa bb bb bb bb
21、cc cc cc dd dd cc dd dd ee【题7.48】当运行以下程序时,从键盘输入:ab c def(表示回车),则下面程序的运行结果是。#include #define N 6main()char cN;int i=0;for(;iN;ci=getchar(),i+);for(i=0;iN;i+) putchar(ci);A)abcdefB)aC)bD)ab b c c c d d d e f【题7.49】当运行以下程序时,从键盘输入:AhaMA Aha(表示回车),则下面程序的运行结果是。#include main()char s80,c=a;int i=0;scanf(“%s
22、”,s);while(si!=0)if(si=c) si=si-32;else if(si=c-32) si=si+32;i+;puts(s);A)ahAMaB)AhAMaC)AhAMa ahAD)ahAMa ahA【题7.50】下面程序的运行结果是。#include main()char a80=“AB”,b80=“LMNP”;int i=0;strcat(a,b);while(ai+!=0) bi=ai; puts(b);A)LBB)ABLMNPC)ABD)LBLMNP【题7.51】下面程序的运行结果是。#include main()char str=“SSSWLIA”,c;int k;f
23、or(k=2;(c=strk)!=0;k+)switch(c)case I: +k; break;case L: continue;default: putchar(c); continue;putchar(*);A)SSW*B)SW*C)SW*AD)SW【题7.52】下面程序的运行结果是。#include main()char a=“morning”,t;int i,j=0;for(i=1;i7;i+) if(ajai) j=i;t=aj; aj=a7;a7=aj; puts(a);A)mogninrB)moC)morningD)mornin7.2填空题【题7.53】在C语言中,二维数组的定
24、义方式为:类型说明符数组名【1】【2】;【题7.54】在C语言中,二维数组元素在内存中的存放顺序是【】。【题7.55】若有定义:double x35;则x数组中行下标的下限为【1】,列下标的上限为【2】。【题7.56】若二维数组a有m列,则计算任一元素aij在数组中位置的公式为:【】。(假设a00位于数组的第一个位置上。)【题7.57】若有定义:int a34=1,2,0,4,6,8,10;则初始化后,a12得到的初值是【1】,a21得到的初值是【2】。【题7.58】若有以下输入(代表回车符),则下面程序的运行结果是。7 10 5 4 6 7 9 8 3 2 4 6 12 2 -1main()
25、int b51,x,i,j=0,n=0;scanf(“%d”,&x);while(x-1) b+n=x; scanf(“%d”,&x); for(i=1;i=n;i+)if(bi%2=0) b+j=bi;for(i=1;i=j;i+) printf(“%3d”,bi);printf(“n”);【题7.59】下面程序以每行4个数据的形式输出a数组,请填空。#define N 20main()int aN,i;for(i=0;iN;i+) scanf(“%d”,【1】);for(i=0;iN;i+)if(【2】) 【3】printf(“%3d”,ai);printf(“n”);【题7.60】下面程
26、序将二维数组a的行和列元素互换后存到另一个二维数组b中。请填空。main()int a23=1,2,3,4,5,6;int b32,i,j;printf(“array a:n”);for(i=0;i=1;i+)for(j=0;【1】;j+)printf(“%5d”,aij);【2】;printf(“n”);printf(“array b:n”);for(i=0;【3】;i+)for(j=0;j=1;j+)printf(“%5d”,bij);printf(“n”);【题7.61】下面程序的运行结果是。main()int a23=1,2,3,4,5,6;int b32 ,i,j;printf(“a
27、rray a:n”);for(i=0;i=1;i+)for(j=0;j=2;j+)printf(“%5d”,aij);bji=aij;printf(“n”);printf(“array b:n”);for(i=0;i=2;i+)for(j=0;j=1;j+)printf(“%5d”,bij);printf(“n”);【题7.62】下面程序可求出矩阵a的两条对角线上的元素之和。请填空。main()int a33=1,3,6,7,9,11,14,15,17,sum1=0,sum2=0,i,j;for(i=0;i3;i+)for(j=0;j3;j+)if(i=j) sum1=sum1+aij;for
28、(i=0;i3;i+)for(【1】;【2】;j-)if(i+j)=2) sum2=sum2+aij;printf(“sum1=%d,sum2=%dn”,sum1,sum2);【题7.63】下面程序的运行结果是。main()int a55,i,j,n=1;for(i=0;i5;i+)for(i=0;i5;i+)aij=n+;printf(“The result is:n”);for(i=0;i5;i+)for(j=0;j=i;j+)printf(“%4d”,aij);printf(“n”);【题7.64】下面程序可求出矩阵a的主对角线上的元素之和。请填空。main()int a33=1,3,5
29、,7,9,11,13,15,17,sum=0,i,j;for(i=0;i3;i+)for(j=0;j3;j+)if(【1】) sum=sum+【2】;printf(“sum=%dn”,sum);【题7.65】以下程序可求出所有的水仙花数。(提示:所谓水仙花数是指一个三位正整数,其各位数字的立方之和等于该正整数。例如:407=444000777,故407是一个水仙花数。)请填空。main()int x,y,z,a8,m,i=0;printf(“The special numbers are(in the arrange of 1000):n”);for(【1】;m+)x=m/100;y=【2】;
30、z=m%10;if(x*100+y*10+z=x*x*x+y*y*y+z*z*z) 【3】; i+; for(x=0;xi;x+)printf(“%6d”,ax);【题7.66】下面程序的功能是生成并打印某数列的前20项,该数列第1,2项分别为0和1,以后每个奇数编号的项是前两项之和,偶数编号的项是前两项差的绝对值。生成的20个数存在一维数组x中,并按每行4项的形式输出。请填空。main()int x21,i,j;x1=0; x2=1;i=3;dox=【1】;xi+1=【2】;i=【3】;while(i20);for(i=1;i=20;i+)printf(“%5d”,xi);if(i%4=0)
31、printf(“n”);【题7.67】若有以下输入(代表回车换行符),则下面程序的运行结果是。1 4 2 3 3 4 1 2 3 3 2 2 2 3 3 1 1 1 4 1 1 1 -1#define M 50main()int aM,c5,i,n=0,x;printf(“Enter 0 or 1 or 2 or 3 or 4, to end with -1n”);scanf(“%d”,&x);while(x!=-1)if(x=0&x=4) an=x; n+; scanf(“%d”,&x);for(i=0;i5;i+) ci=0;for(i=0;in;i+) cai+;printf(The r
32、esult is:n”);for(i=1;i=4;i+) printf(“%d:%dn”,i,ci);printf(“n”);【题7.68】下面程序的运行结果是。main()int i,j,a23=2,4,6,8,10,12;printf(“The original array is:n”);for(i=0;i2;i+)for(j=0;j3;j+)printf(“%4d”,aij);printf(“n”);printf(“nthe result is:n”);for(i=0;i3;i+)for(j=0;j2;j+)printf(“%4d”,aji);printf(“n”);【题7.69】设数组
33、a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。请填空。main()int a10,b10,i;for(i=0;i10;i+)scanf(“%d”,&ai);for(【1】;i10;i+)【2】for(i=1;i10;i+)printf(“%3d”,bi);if(【3】=0) printf(“n”);【题7.70】下面程序将十进制整数转换成n进制。请填空。main()int i,base,n,j,num20;printf(“Enter data that will be convertedn”);scanf(“%d”,&n);printf(“Enter basen”