《C语言程序设计-第七章数组练习题【附答案】》由会员分享,可在线阅读,更多相关《C语言程序设计-第七章数组练习题【附答案】(42页珍藏版)》请在金锄头文库上搜索。
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 语言中,一维数组的定义方式为:类型说明符 数组
2、名;A)常量表达式B)整型表达式C)整型常量 或整型表达式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
3、)a02*1B)a13C)a4-20D)a04【题 7.9】以下能对二维数组 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)
4、此说明语句不正确C) 数组 a 中各元素都可得到初值,但其值不一定为 0D) 数组 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) 可在程序的编
5、译或运行阶段得到初值 0【题 7.14】以下各组选项中,均能正确定义二维实型数组 a 的选项是。A)float a34;B)float a(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”,&
6、ai);6 for(i=1;i3;i+) a0=a0+ai;7 printf(“%dn”,a0);8 A)第 3 行有错误B)第 7 行有错误C)第 5 行有错误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】下面程序中有错误的行是(每行程序前面的数字表示行号
7、) 。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(“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】若二维
8、数组 a 有 m 列,则计算任一元素 aij在数组中位置的公式为。 (假设 a00位于数组的第一个位置上。 )A)i*m+jB)j*m+iC)i*m+j-1D)i*m+j+1【题 7.20】对以下说明语句的正确理解是。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) ch
9、ar 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 列,则在 aij前的元素个数为。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】
10、若有以下程序段: 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 进行选择排序(升序)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
11、;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 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【题
12、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)char 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) a b B)abC)ab c【题 7.31】对两个数组 a 和 b 进行如下初始化c
13、har 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);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
14、),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)运行后将输出 ChC)运行后将输出 ChiD)编译出错【题 7.36】下面程序段的运行结果是。char c=“tv0willn”;printf(“%d”,strlen(c);A)14B)3C)9D)字符串中有非法字符,输出值不确定【题 7.37】判断字符串
15、 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】下面程序段是输出两个字符串中对应字符相等的字符。请选择填空。char x=“programming”;char y=“Fortran”;int i=0;while(xi!=0&yi!= 0)if(xi=yi) printf(“%c”,【1】);el
16、se i+;【1】 A)xi+B)y+iC)xiD)yi【题 7.40】下面描述正确的是。A) 两个字符串所包含的字符个数相同时,才能比较字符串B) 字符个数多的字符串比字符个数少的字符串大C) 字符串“STOP ”与“STOP”相等D) 字符串“That”小于字符串“The”【题 7.41】下述对 C 语言字符数组的描述中错误的是。A) 字符数组可以存放字符串B) 字符数组的字符串可以整体输入、输出C) 可以在赋值语句中通过赋值运算符“”对字符数组整体赋值D) 不可以用关系运算符对字符数组中的字符串进行比较【题 7.42】有已排好序的字符串 a,下面的程序是将字符串 s 中的每个字符按 a
17、中元素的规律插入到 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; 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】下面程序
18、的功能是将已按升序排好序的两个字符串 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;strcat(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;
19、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=si C)sj=si; j+D)sj=si【题 7.45】下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。请选择填空。#include main()cha
20、r 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()char 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
21、)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 cc cc cc dd dd cc dd dd ee【题 7.48】当运行以下程序时,从键盘输入:ab c def(表示回车),则下面程序的运行结果是。#include #de
22、fine 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”,s);while(si!=0)if(si=c) si=si-32;else if(si=c-32) si=si+32;i+;puts(s);A)ahAMaB)AhAMa
23、C)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;for(k=2;(c=strk)!=0;k+)switch(c)case I: +k; break;case L: continue;default: putchar(c
24、); 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 语言中,二维数组的定义方式为:类型说明符数组名【1】 【2】 ;【题 7.54】在 C 语言中,二维数组元素在内存中的存放顺序是【】 。【题 7.55】若有定义:double x3
25、5;则 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()int b51,x,i,j=0,n=0;scanf(“%d”,&x);while(x-1) b+n=x; sc
26、anf(“%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】下面程序将二维数组 a 的行和列元素互换后存到另一个二维数组 b 中。请填空。main()int a23
27、=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(“array a:n”);for(i=0;i=1;i+)for(j=0;j=2;j+)pri
28、ntf(“%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(i=0;i3;i+)for(【1】;【2】;j-)if(i+j)=2) sum2
29、=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,7,9,11,13,15,17,sum=0,i,j;for(i=0;i3
30、;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】;z=m%10;if(x*100+y*10+z=x*x*x+y*y
31、*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)printf(“n”);【题 7.67
32、】若有以下输入(代表回车换行符) ,则下面程序的运行结果是。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 result is:n”);for(
33、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】设数组 a 包括 10 个整型元素。
34、下面程序的功能是求出 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);pr
35、intf(“Enter basen”);scanf(“%d”,&base);doi+;numi=n【1】base;n=n【2】base;while(n!=0);printf(“The data %d has been converted into the %d-basedata:n”,n,base);for(【3】)printf(“%d”,numj);【题 7.71】下面程序的功能是输入 5 个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的 5 个数。请填空。main()int a5,max,min,i,j,k;for(i=0;i5;i+)scanf(“%d”,&ai);m
36、in=a0;for(i=1;i5;i+)if(aimin) min=ai; 【1】; max=a0;for(i=1;imax) max=ai; 【2】; 【3】printf(“nThe position of min is:%3dn”,k);printf(“The position of max is:%3dn”,j);for(i=0;i5;i+)printf(“%5d”,ai);【题 7.72】下面程序的运行结果是。main()int i,f10;f0=f1=1;for(i=2;i10;i+)fi=fi-2+fi-1;for(i=0;i10;i+)if(i%4=0) printf(“n”);
37、printf(“%3d”,fi);【题 7.73】下面程序的运行结果是。main()int a10=1,2,2,3,4,3,4,5,1,5;int n=0,i,j,c,k;for(i=0;i10-n;i+)c=ai;for(j=i+1;j10-n;j+)if(aj=c)for(k=j;k10-n;k+)ak=ak+1;n+;for(i=0;i(10-n);i+)printf(“%d”,ai);printf(“n”);【题 7.74】下面程序的功能是给一维数组 a 输入任意 6 个整数,假设为:7 4 8 9 1 5然后建立一个具有以下内容的方阵并打印。请填空。5 7 4 8 9 11 5 7
38、4 8 99 1 5 7 4 88 9 1 5 7 44 8 9 1 5 77 4 8 9 1 5main()int a6,i,j,k,m;for(i=0;i=0;i-)k=a5;for(【1】;j=0;j-)aj+1=aj;【2】;for(m=0;m6;m+)printf(“%d”,am);printf(“n”);【题 7.75】下面程序的功能是输出以下 9*9 阶方阵。请填空。1 1 1 1 1 1 1 1 11 2 2 2 2 2 2 2 11 2 3 3 3 3 3 2 11 2 3 4 4 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 4 4 3 2 11 2 3
39、3 3 3 3 2 11 2 2 2 2 2 2 2 11 1 1 1 1 1 1 1 1main()int a1010,n,i,j,m;scanf(“%d”,&n);if(n%2=0) m=n/2;else 【1】;for(i=0;im;i+)for(j=i;jn-i;j+)aij=i+1;a【2】j=i+1;aji=i+1;aj【3】=i+1;for(i=0;in;i+)for(j=0;j=1);for(j=i-1;j=0;j-)printf(“%d”,aj);【题 7.77】下面程序的功能是将二维数组 a 中每个元素向右移一列,最右一列换到最左一列,移后的数组存到另一二维数组 b 中,并
40、按矩阵形式输出 a 和 b。请填空。例如:array a:array b: 4 5 66 4 5 1 2 33 1 2main()int a23=4,5,6,1,2,3,b23;int i,j;printf(“array a:n”);for(i=0;i=1;i+)for(j=0;j3;j+)printf(“%5d”,aij);【1】;printf(“n”);for(【2】;i+) bi0=ai2;printf(“array b:n”);for(i=0;i2;i+)for(j=0;j3;j+)printf(“%5d”,bij);【3】;【题 7.78】下面程序的功能是统计年龄在 1631 岁之间
41、的学生人数。请填空。main()int a30,n,age,i;for(i=0;i30;i+) ai=0;printf(“Enter the number of the students(30)n”);scanf(“%d”,&n);printf(“Enter the age of each student:n”);for(i=0;in;i+) scanf(“%d”,&age); 【1】; printf(“the result isn”);printf(“agenumbern”);for(【2】;i+)printf(“%3d%6dn”,i,ai-16);【题 7.79】下面程序的功能是检查一个二
42、维数组是否对称(即:对所有 ij 都有 aij=aji) 。请填空。main()int a44=1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4;int i,j,found=0;for(j=0;j4;j+)for(【1】;i4;i+)if(aji!=aij) 【2】; break; if(found) printf(“No”);else printf(“Yes”);【题 7.80】下面程序中数组 a 包括 10 个整数元素,从 a 中第二个元素起,分别将后项减前项之差存入数组 b,并按每行 3 个元素输出数组 b。请填空。main()int a10,b10,i;for(i=0;【
43、1】;i+)scanf(“%d”,&ai);for(i=1;【2】;i+)bi=ai-ai-1;for(i=1;i10;i+)printf(“%3d”,bi);if(【3】) printf(“n”);【题 7.81】下面程序的运行结果是。main()int i=1,n=3,j,k=3;int a5=1,4,5;while(iai) i+;for(j=n-1;j=i;j-)aj+1=aj;ai=k;for(i=0;i=n;i+)printf(“%3d”,ai);【题 7.82】下面程序的运行结果是。main()int num_list=6,7,8,9,k,j,b,u=0,m=4,w;w=m-1;
44、while(u=w)j=num_listu;k=2; b=1;while(k=j/2&b)b=j%+k;if(b) printf(“%dn”,num_listu+);elsenum_listu=num_listw;num_listw-=j;【题 7.83】设数组 a 中的元素均为正整数,以下程序是求 a 中偶数的个数和偶数的平均值。请填空。main()int a10=1,2,3,4,5,6,7,8,9,10;int k,s,i;float ave;for(k=s=i=0;i10;i+)if(ai%2!=0) 【1】;s+=【2】;k+;if(k!=0) ave=s/k; printf(“%d,
45、%fn”,k,ave); 【题 7.84】以下程序是求矩阵 a,b 的和,结果存入矩阵 c 中并按矩阵形式输出。请填空。main()int a34=3,-2,7,5,1,0,4,-3,6,8,0,2;int b34=-2,0,1,4,5,-1,7,6,6,8,0,2;int i,j,c34;for(i=0;i3;i+)for(j=0;j4;j+)cij=【1】;for(i=0;i3;i+)for(j=0;j4;j+)printf(“%3d”,cij);【2】;【题 7.85】以下程序是求矩阵 a,b 的乘积,结果存入矩阵 c 中并按矩阵形式输出。请填空。main()int a32=2,-1,-
46、4,0,3,1;int b22=7,-9,-8,10;int i,j,k,s,c32;for(i=0;i3;i+)for(j=0;j2;j+)for(【1】;k2;k+)s+=【2】;cij=s;for(i=0;i3;i+)for(j=0;j2;j+)printf(“%6d”,cij);【3】【题 7.86】已知以下矩阵:4321YYYY18 . 08 . 002 . 018 . 002 . 02 . 018 . 0002 . 011111下面程序的功能是求出 Y1,Y2,Y3,Y4 的值。请填空。main()float a44=1,-0.2,0,0,-0.8,1,-0.2,-0.2, 0,-
47、0.8,1,-0.2,0,-0.8,-0.8,1,;float x4=1,1,1,1,y4;int i,j,k;for(i=0;i4;i+)yi=0;for(j=0;j4;j+)【1】for(k=0;k4;k+)printf(“nY%d=%-6.2f”,k+1,【2】);【题 7.87】以下程序的功能是求数组 num 中小于零的数据之和。请填空。main()int num20=10,20,1,-20,203,-21,2,-2,-2,11,-21,22,12, -2,-234,-90,22,90,-45,20;int sum=,i;for(i=0;i=19;i+)if(【1】)sum=【2】;p
48、rintf(“sum=%6d”,sum);【题 7.88】以下程序的功能是。main()int num10=10,1,-20,-203,-21,2,-2,-2,11,-21;int sum=0,i;for(i=0;i0)sum=numi+sum;printf(“sum=%6d”,sum);【题 7.89】下面程序的运行结果是。main()int i,j,row,col,min;int a34=1,2,3,4,9,8,7,6,-1,-2,0,5;min=a00;for(i=0;i3;i+)for(j=0;j4;j+)if(aijmin) min=aij; row=i; col=j; printf
49、(“min=%d,row=%d,col=%dn”,min,row,col);【题 7.90】若有以下输入(代表回车) ,则下面程序的运行结果是。52main()int a8=6,12,18,42,44,52,67,94;int low=0,mid,high=7,found,x;found=0;scanf(“%d”,&x);while(lowamid) low=mdi+1;else if(xamid) high=mid-1;else found=1; break; if(found=1) printf(“Search Successful!The index is:%dn”,mid);else
50、printf(“Cant search!n”);【题 7.91】下面程序的运行结果是。main()int a9=0,6,12,18,42,44,52,67,94;int x=52,i,n=9,m;i=n/2+1;m=n/2;while(m!=0)if(xai) i=i+m/2+1; m=m/2; else break;printf(“The index is:%d”,i);【题 7.92】下面程序用“顺序查找法”查找数组 a 中是否存在某一关键字。请填空。main()int a8=25,57,48,37,12,92,86,33;int i,x;scanf(“%d”,&x);for(i=0;i8
51、;i+)if(x=ai) printf(“Found! The index is:%dn”,-i); 【1】; if(【2】)printf(“Cant found!”);【题 7.93】下面程序用“快速顺序查找法”查找数组 a 中是否存在某一关键字。请填空。main()int a9=25,57,48,37,12,92,86,33;int i,x;scanf(“%d”,&x);【1】; i=0;while(ai!=x) i+;if(【2】) printf(“Found! The index is:%dn”,i);else printf(“Cant found!n”);【题 7.94】下面程序用插
52、入法对数组 a 进行降序排序。请填空。main()int a5=4,7,2,5,1;int i,j,m;for(i=1;i=0&maj)【2】;j-;【3】=m;for(i=0;i5;i+)printf(“%d”,ai);printf(“n”);【题 7.95】下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。请填空。main()int a3=5,9,19;int b5=12,24,26,37,48;int c10,i=0,j=0,k=0;while(i3&j5)if(【1】) ck=bj; k+; j+; else ck=ai; k+; i+; while(【2】) ck=
53、ai; i+; k+; while(【3】) ck=bj; k+; j+; for(i=0;ik;i+)printf(“%3d”,ci);【题 7.96】下面程序的运行结果是。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”);【题 7.97】若有以下输入(代表回车) ,则下面程序的运行结果是。32458main()int i=0,base,n,j,old,num20;printf(“Enter data t
54、hat will be convertedn”);scanf(“%d”,&n);old=n;printf(“Enter basen”);scanf(“%d”,&base);doi+;numi=n%base;n=n/base;while(n!=0);printf(“The data %d has been converted into the %d basedata:n”,old,base);for(j=i;j=1;j-)printf(“%5d”,numj);【题 7.98】若有以下输入(代表回车) ,则下面程序的运行结果是。7 4 8 9 1 5main()int a6,i,j,k,m;for
55、(i=0;i=0;i-)k=a5;for(j=4;j=0;j-)aj+1=aj;a0=k;for(m=0;m6;m+)printf(“%d”,am);printf(“n”);【题 7.99】下面程序的运行结果是。main()int a10=1,2,3,4,5,6,7,8,9,10;int k,s,i;float ave;for(k=s=i=0;i10;i+)if(ai%2=0) continue;s+=ai;k+;if(k!=0)ave=s/k;printf(“The number is:%d. The average is:%fn”,k,ave);【题 7.100】若有以下输入(代表回车换行
56、符) ,则下面程序的运行结果是。3 1 2 3 2 2 2 1 1 3 0main()int a4,x,i;for(i=1;i0) ax+=1; scanf(“%d”,&x); for(i=1;i=3;i+) printf(“a%2d=%4dn”,i,ai);【题 7.101】若有以下输入(代表回车换行符) ,则下面程序的运行结果是。59 7 5 3 15#define M 10main()int aM,x,i,n;printf(“Enter n(n10):”;scanf(“%d”,&n);for(i=1;iai) ai+1=ai; i-; ai+1=x;n+;for(i=1;i=n;i+)
57、printf(“%3d”,ai);printf(“n”);【题 7.102】下面程序的运行结果是。#define SIZE 30main()float aSIZE,bSIZE/5,sum;int i,k;for(k=2,i=0;iSIZE;i+) ai=k; k+=2; sum=0;for(k=0,i=0;iSIZE;i+)sum+=ai;if(i+1)%5=5)bk=sum/5;sum=0;k+;printf(“The result is:n”);for(i=0;iSIZE/5;i+) printf(“%5.2f”,bi);printf(“n”);【题 7.103】下面程序的功能是求出矩阵
58、x 的上三角元素之积。其中矩阵 x 的行、列数和元素值均由键盘输入。请填空。#define M 10main()int xMM;int n,i,j;long s=1;printf(“Enter a integer(=10):n”);scanf(“%d”,&n);printf(“Enter %d data on each line for the array xn”,n);for(【1】)for(j=0;jn;j+)scanf(“%d”,&xij);for(i=0;in;i+)for(【2】)【3】printf(“%ldn”,s);【题 7.104】若有以下输入(代表回车换行符) ,则下面程序的
59、运行结果是。41 2 3 41 2 3 41 2 3 41 2 3 4#define M 10main()int xMM;int n,i,j;long s=1;printf(“Enter a integer(=10):n”);scanf(“%d”,&n);printf(“Enter %d data on each line for the array xn”,n);for(i=0;in;i+)for(j=0;jn;j+)scanf(“%d”,&xij);for(i=0;in;i+)for(j=i;j=0&cha=9;a+)s=10*s+cha-0;printf(“%d”,s);【题 7.107
60、】下面程序段将输出 computer,请填空。char ch=“Its a computer”;for(i=0;【1】;i+) 【2】; printf(“%c”,cj; )【题 7.108】下面程序段的运行结果是。char x=“the teacher”;i=0;while(x+i!=0) if(xi-1=t) printf(“%c”,xi);【题 7.109】下面程序的功能是在一个字符数组中查找一个指定的字符,若数组中含有该字符则输出该字符在数组中第一次出现的位置(下标值) ;否则输出-1。请填空。#include #include main()char c=a,t50;int n,k,j;
61、gets(t);n=【1】;for(k=0;kn;k+)if(【2】) j=k; break; else j=-1;printf(“%d”,j);【题 7.110】下面程序的功能是在三个字符串找出最小的。请填空。#include #include main()char s20,str320;int i;for(i=0;i3;i+) gets(stri);strcpy(s,【1】);if(strcmp(str2,s)0) strcpy(s,str2);printf(“%sn”,【2】);【题 7.111】下面程序的功能是从键盘输入一个大写英文字母,要求按字母的顺序打印出3 个相邻的字母,指定的字
62、母在中间。若指定的字符为 Z,则打印 YZA;若为A 则打印 ZAB。请填空。#include main()char a3,c;int i;c=getchar();a1=c;if(c=Z) a2=A; 【1】; else if(c=A) a0=Z; 【2】; else a0=c-1; a2=c+1; for(i=0;i3;i+) putchar(ai);【题 7.112】下面程序的功能是将字符数组 a6=a,b,c,d,e,f变为 a6= f,a,b,c,d,e。请填空。#include main()char t,a6= a,b,c,d,e,f;int i;【1】;for(i=0;i5;i+)
63、【2】;for(i=0;i=5;i+) printf(“%c”,ai);【题 7.113】下面程序的功能是将字符数组 a 下标值为偶数的元素由小到大排序,其它元素不变。请填空。#include main()char a=“labchmfye”,t;int i,j;for(i=0;i7;i+=2)for(j=i+2;j9;【1】)if(【2】) t=ai; ai=aj; aj=t; j+; puts(a);printf(“n”);【题 7.114】下面程序的功能是在任意的字符串 a 中将与字符 c 相等的所有元素的下标值分别存放在整型数组 b 中。请填空。#include main()char
64、a80;int i,b80,k=0;gets(a);for(i=0;ai!=;i+)if(【1】) bk=i; 【2】; for(i=0;ik;i+) printf(“%3d”,bi);【题 7.115】有十个字符串。下面程序的功能是在每个字符串中,找出最大字符按一一对应的顺序放入一维数组 a 中,即第 i 个字符串中的最大字符放入 ai中,输出每个字符串中的最大字符。请填空。#include main()char s1020;int a10,i,j;for(i=0;i10;i+)gets(si);for(i=0;i10;i+)【1】;for(j=1;sij!=0;j+)if(aisij) 【
65、2】;for(i=0;i10;i+)printf(“%d %c”,i,ai);【题 7.116】下面程序的运行结果是。#include main()int i;char a=“Time”,b=“Tom”;for(i=0;ai!=0&bi!=0;i+)if(ai=bi)if(ai=a&ai=z)printf(“%c”,ai-32);else printf(“%c”,ai+32);else printf(“*”);【题 7.117】下面程序的运行结果是。#include main()char a26=“Sun”,“Moon”;int i,j,len2;for(i=0;i2;i+)for(j=0;j
66、6;j+)if(aij=0) leni=j; break; printf(“%6s:%dn”,ai,leni);【题 7.118】下面程序的运行结果是。#include main()int i,r;char s180=“bus”;char s280=“book”;for(i=r=0;s1i!=0&s2i!=0;i+)if(s1i=s2i) i+;else r=s1i-s2i; break; printf(“%d”,r);【题 7.119】下面程序的运行结果是。#include #define LEN 4main()int j,c;static char n2LEN+1=“8980”,“9198
67、”;for(j=LEN-1;j=0;j-)c=n0j+n1j-2*0;n0j=c%10+0;for(j=0;j=1;j+) puts(nj);【题 7.120】下面程序的运行结果是。#include main()int i=5;char c6=“abcd”;do ci=ci-1; while(-i0);puts(c);【题 7.121】当运行以下程序时,从键盘输入 AabD(表示回车) ,则下面程序的运行结果是。#include main()char s80;int i=0;gets(s);while(si!=0)if(si=a)si=z+a-si;i+;puts(s);【题 7.122】下面
68、程序的运行结果是。#include main()char s=“ABCCDA”;int k; char c;for(k=1;(c=sk)!=0;k+)switch(c)case A: putchar(%); continue;case B: +k; break;default: putchar(*);case C: putchar(&); continue;putchar(#);【题 7.123】下面程序的运行结果是。#include main()int i=0;char a=“abm”,b=“aqid”,c10;while(ai!=0&bi!=0)if(ai=bi) ci=ai-32;els
69、e ci=bi-32;+i;ci=0;puts(c);【题 7.124】当运行以下程序时,从键盘输入:BOOK CUT GAME PAGE(表示回车) ,则下面程序的运行结果是。#include #include main()int i;char str10,temp10=“Control”;for(i=0;i4;i+)gets(str);if(strcmp(temp,str)0) strcpy(temp,str);puts(temp);【题 7.125】当运行以下程序时,从键盘输入:girl boy(表示回车) ,则下面程序的运行结果是。#include #include main()cha
70、r a280,t;int i,j,m,n,l,max;for(i=0;i=1;i+) gets(ai);t=a00;for(i=0;i=1;i+)l=strlen(ai);for(j=0;jt) max=aij; m=i; n=j; printf(“%c %d %dn”,max,m,n);7.3编程题【题 7.126】从键盘输入若干整数(数据个数应至少于 50) ,其值在 0 至 4 的范围内,用-1作为输入结束的标志。统计每个整数的个数。试编程。【题 7.127】若有说明:int a23=1,2,3,4,5,6;现要将 a 的行和列的元素互换后存到另一个二维数组 b 中。试编程。【题 7.1
71、28】定义一个含有 30 个整型元素的数组,按顺序分别赋予从 2 开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。试编程。【题 7.129】通过赋初值按行顺序给 23 的二维数组赋予 2、4、6、等偶数,然后按列的顺序输出该数组。试编程。【题 7.130】通过循环按行顺序为一个 55 的二维数组 a 赋 1 到 25 的自然数,然后输出该数组的左下半三角。试编程。【题 7.131】下面是一个 55 阶的螺旋方阵。试编程打印出此形式的 nn(n10)阶的方阵(顺时针方向旋进) 。12345161718196152425207142322218131211109【题 7.13
72、2】数组 a 包括 10 个整数,把 a 中所有的后项除以前项之商取整后存入数组 b,并按每行 3 个元素的格式输出数组 b。试编程。【题 7.133】从键盘输入一个字符,用折半查找法找出该字符在已排序的字符串 a 中的位置。若该字符不在 a 中,则打印出*。试编程。【题 7.134】从键盘输入两个字符串 a 和 b,要求不用库函数 strcat 把串 b 的前五个字符连接到串 a 中;如果 b 的长度小于 5,则把 b 中的所有元素都连接到 a 中。试编程。【题 7.135】从键盘输入一个字符串 a,并在 a 串中的最大元素后边插入字符串 b(b=“ab” ) 。试编程。第七章第七章数组答案
73、数组答案第七章数组【题 7.1-7.52】 CDDAC CCDBC DDBCA CDDDB BBBAB DCCDB DBDDD BDDADC(BB)(ADA)AB AADAD BB【题 7.53】 【1】常量表达式【2】常量表达式【题 7.54】 按行主顺序存放【题 7.55】 【1】0【2】4【题 7.56】 i*m+j+1【题 7.57】 【1】0【2】6【题 7.58】 10 4 6 8 2 4 6 12 2【题 7.59】 【1】&ai【2】i%4=0【3】printf(“n”);【题 7.60】 【1】j=2【2】bji=aij【3】i=0【题 7.63】 The result is
74、: 1 67111213161718192122232425【题 7.64】 【1】i=j【2】aij【题 7.65】 【1】m=100;m=1; j-【题 7.71】 【1】i=j=k【2】k=i【3】aj=max;ak=min;【题 7.72】 1 2 3 5 813213455【题 7.73】 1 2 3 4 5【题 7.74】 【1】j=4【2】a0=k【题 7.75】 【1】m=n/2+1【2】n-i-1【3】n-i-1【题 7.76】 10010【题 7.77】 【1】bij+1=aij【2】i=0;i2【3】printf(“n”)【题 7.78】 【1】aage-16+;【2】i
75、=16;i32;【题 7.79】 【1】i=j+1【2】found=1【题 7.80】 【1】i10【2】i10【3】i%3=0【题 7.81】 1 3 4 5【题 7.82】 7【题 7.83】 【1】continue【2】ai【题 7.84】 【1】aij+bij【2】printf(“n”)【题 7.85】 【1】k=s=0【2】aik*bkj【3】printf(“n”);【题 7.86】 【1】yi+=aij*xj; 【2】yk【题 7.87】 【1】numi0【2】numi+sum【题 7.88】 计算数组 num 中大于零的数据之和【题 7.89】 min=-2,row=2,col=
76、1【题 7.90】 Search Successful! The index is: 5【题 7.91】 The index is: 6【题 7.92】 【1】break【2】i=8【题 7.93】 【1】a8=x【2】ibj【2】i3【3】j5【题 7.96】 1000001000001000001000001【题 7.97】 The data 3245 has been converted into the 8-base data:6255【题 7.98】 5 7 4 8 9 11 5 7 4 8 99 1 5 7 4 88 9 1 5 7 44 8 9 1 5 77 4 8 9 1 5【
77、题 7.99】 The number is: 5, The average is: 5.000000【题 7.100】 a1=3a2=4a3=3【题 7.101】 9 7 5 5 3 1【题 7.102】 The result is:6.0016.0026.0036.0046.0056.00【题 7.103】 【1】i=0;in;i+【2】j=i;jn;j+【3】s*=xij;【题 7.104】 The result = 27648【题 7.105】 9【题 7.106】 600【题 7.107】 【1】i=7【2】j=i+7【题 7.108】 he【题 7.109】 【1】strlen(t)
78、【2】tk=c【题 7.110】 【1】(strcmp(str0,str1)aj【题 7.114】 【1】ai=c【2】k+【题 7.115】 【1】ai=si0【2】ai=sij【题 7.116】 t*M【题 7.117】 Sun:3Moon:4【题 7.118】 4【题 7.119】 70789198【题 7.120】 aabcd【题 7.121】 AzyD【题 7.122】 #&*&%【题 7.123】 AQM【题 7.124】 PAGE【题 7.125】 y12【题 7.126】 #define M 50main()int aM, c5, i, n = 0, x;printf(“Ent
79、er 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 result is:n”);for (i=0; i=4; i+)printf(“%d:%dn”,i ci);printf(“n”);【题 7.127】 main()int a54 = 3,6,2,1,3,9,0,8,2,1,5,6,7,2,7,4,
80、0,0,0,0;int i, j;for (i=0; i4; i+)for (j=0; j4; j+)a4j += aij;printf(“The result is:n”);for (i=0; i4; i+)printf(“%3d”, a4j);【题 7.128】 #define SIZE 30main()float bSIZE/5, sum;int aSIZE, i, j, k;for (k=2, i=0; iSIZE; i+)ai = k;k += 2;sum = 0.0;for (k=0, i=0; iSIZE; i+)sum += ai;j = i + 1;if (i+1)%5 =
81、0)bk = sum / 5;sum = 0;k+;printf(“The result is:n”);for (i=0; iSIZE; i+)printf(“%5.2f ”, bi);printf(“n”);【题 7.129】 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
82、=0; j2; j+)printf(“%4d”, aji);printf(“n”);【题 7.130】 main()int a 55, i, j, n = 1;for (i=0; i5; i+)for (j=0; j5; j+)aij = n+;printf(“The result is:n”);for (i=0; i5; i+)for (j=0; j5; j+)printf(“%4d”, aij);printf(“n”);【题 7.131】 main()int a1010, i, j, k = 0, m, n;printf(“Enter n (n10):n”);scanf(“%d”, &n)
83、;if (n % 2 = 0)m = n / 2;elsem = n / 2 + 1;for (i=0; im; i+)for (j=i; jn-i; j+)k+;aij = k;for (j=i+1; j=i; j-)k+;an-i-1j = k;for (j=n-i-2; j=i+1; j-)k+;aji = k;for (i=0; in; i+)for (j=0; jn; j+)printf(“%5d”, aij);printf(“n”);【题 7.132】 main()int a10, b10, i;for (i=0; i10; i+)scanf(“%d”, &ai);for (i=1
84、; i10; i+)bi = ai / ai-1;for (i=1; i10; i+)printf(“%3d”, bi);if (i % 3 = 0)printf(“n”);【题 7.133】 #include main()char a12 = “adfgikmnprs”, c;int i, top, bot, mid;printf(“Input a charactern”);scanf(“%c”, &c);printf(“c=%cn”, c);for (top=0, bot=10; top amid)top = mid + 1;elsebot = mid 1;if (top bot)prin
85、tf(“* *n”);【题 7.134】 #include #include main()char a80, b80;int i = 0, j;printf(“Input two strings.n”);gets(a);gets(b);while (ai+ != 0);for (j=0, i-; j5&bj!=0; j+)ai+ = bj;ai = 0;puts(a);【题 7.135】 #include #include main()char a80, b = “ab”, max;int i = 1, j;printf(“Input a stringn”);gets(a);puts(a);max = a0;while (ai != 0)if (ai max)max = ai;j = i;i+;for (i=strlen(a)+2; ij; i-)ai = ai-2;ai+1 = a;ai+2 = b;puts(a);