C语言练习数组参考答案.docx

上传人:叶*** 文档编号:34913682 上传时间:2022-08-19 格式:DOCX 页数:17 大小:34.18KB
返回 下载 相关 举报
C语言练习数组参考答案.docx_第1页
第1页 / 共17页
C语言练习数组参考答案.docx_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《C语言练习数组参考答案.docx》由会员分享,可在线阅读,更多相关《C语言练习数组参考答案.docx(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C语言练习3(数组)=参考答案C语言(数组)一、选择题1. 设有程序:main() int i,a11; printf(给数组赋值:n); for (i=0;i=10;i+) scanf(%d,( ); . . printf(输出数组:n); for(i=0;i=10;i+) printf(%d,( ); 则在程序中的两个园括号中分别应填入:CA) &ai和&ai B) ai和&aiC) &ai和aiD) ai和ai 2. 设已定义:int a15; 则数组a占用的内存单元数是( C ).A) 15B) 16C) 30D) 32 3. 阅读程序:main() int a2=0,i,j,k=2;

2、 for(i=0;ik;i+)for(j=0;jk;j+) aj=ai+1; printf(%dn,ak);以上程序的输出结果是( D ).A) 1B) 3C) 2D) 不确定的值4. 阅读程序:f(int b,int n) int i,r=1; for(i=0;i=n;i+) r=r*bi; return r;main() int x,a=2,3,4,5,6,7,8,9; x=f(a,3);printf(%dn,x);以上程序的输出结果是( D ).A) 720B) 6C)24D) 120 5. 以下定义语句中,错误的是( B ).A) int a = 6,7,8; B) int n=5,

3、an; C) char a = string; D) char a5 =0,1,2,3,4;6. 以下描绘中正确的是( D ).A) 数组名后面的常量表达式用一对圆括弧括起来B) 数组下标从1开场 C) 数组下标的数据类型可以是整型或实型D) 数组名的规定与变量名一样7. 若定义数组并初始化char a10=0,1 ,2,3,4,5,6,7,8,9;指出以下错误语句( AB ).A) scanf(%c,a0);B) scanf(%s,&a);C) printf(%c,a3);D) printf(%s,a);8.若定义数组int a10 ,其最终一个数组元素为( C ).A) a0B) a1C)

4、 a9D) a109. 若定义数组并初始化int a10= 1,2,3,4,以下语句哪一个不成立( B )?A) a8 的值为0B) a1 的值为1C) a3 的值为4D) a9 的值为010. 指出以下错误语句( A ).A) int n=10,an;B) int n,a10;C) int a10=1,2,3;D) int a10=1,2,3,4,5,6,7,8,9,10;11. 请读程序:main()int n2,i,j,k; for(i=0;i2;i+) ni=0; k=2; for(i=0;ik;i+) for(j=0;jk;j+) nj=ni+1; printf(%dn,nk);上面

5、程序的输出结果是( A ).A)不确定的值 B)3 C)2 D)112. 若有以下的定义和语句:int str12=1,2,3,4,5,6,7,8,9,10,11,12;char c=e,则数值为2的表达式是( C ).A)strg-c B)str2 C)strd-c D)strd-c13. 设有数组定义:int a5;则下列给数组元素赋值错误的是( B ).A) a3=93;B) scanf(%c,a3);C) a3=getchar();D) a3=a+3;14. 以下数组定义中错误的是( D ).A) #define N 30 int aN+30;B) #define N 30 int a

6、N;C) int a30;D) int aN;15. 在定义一个一维数组时,不能用来表示数组长度的是( D ).A)常量 B)符号常量 C)常量表达式 D) 已被赋值的变量16. 若float型变量占用4个字节,有定义float a20=1.1,2.1,3.1;则数组a在内存中所占的字节数是( D ).A)12 B)20 C)40 D)8017. 设已定义:int x24=1,2,3,4,5,6,7,8; 则元素x11的正确初值是( A ).A) 6B) 5C) 7D) 1 18. 设有定义:int a3=1,2,3,4,5,6,7,8,9; 则a12的初值为( C ).A) 2B) 4C)

7、6D) 8 19. 设有:int a45; 则数组a占用的内存字节数是( C ).A) 12B) 24C) 40D) 20 20. 以下数组定义中,不正确的是( B ).A) int b34; B) int c3 =1,2,1,2,3,4,5,6,7; C) int b200100=0; D) int c 3=1,2,3,4,5,6; 21. 定义数组:int x23; 则数组x 的维数是( 2 ).A) 1 B) 2 C) 3 D) 6 22. 若定义数组并初始化int b23= 1,2,3,4,5,6,以下语句哪一个成立( C )?A) 表达式b12的值为1B) 表达式b12的值为4C)

8、表达式b12的值为6D) 表达式b12的值为223. 若定义数组并初始化int a23=1,2,3,4,5,6;for(i=0;i2;i+) for(j=0;j3;j+)printf(%d,aij);语句的结果是哪一个( C )A) 1,2,3,4,5,6B) 1 2 3 4 5 6 C) 12345624. 若定义数组并初始化int a23= 1,2, 3,4,5,6;以下语句哪一个不成立( B )?A) a数组中有6个元素B) a23是a数组的最终一个元素的引用C) a数组中每个元素都为整数D) a数组是整型数组25. 定义如下变量和数组:int i;int x33=1,2,3,4,5,6

9、,7,8,9;则下面语句的输出结果是( C ).for(i=0;i3;i+) printf(%d,xi2-i);A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 926. 如有以下定义:double s5=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14;则数值为2的元素是( C ).A) s13 B) s03 C) s02 D) s1227. 以下程序的输出结果是( A ).main()int a33=1,2,3,4,5,6,i,j,s=0;for(i=1;i3;i+)for(j=0;j=i;j+)s+=aij;printf(%d,s);A) 18 B)

10、 19 C) 20 D) 2128. 若已有char b1050;则该二维字符数组在内存所占字节数为( D ).A) 10 B)50 C)60 D)50029. 设有:char a10; 下列语句那个是正确的( D )?A) scanf(%s,a0);B) scanf(%s,&a);C) printf(%s,a0)D) printf(%s,a) 30. 阅读程序:main() char a10; int i; for(i=1;i=5;i+)scanf(%c,&ai); printf(%c,a0);设从键盘输入字符串:abcde,则程序的输出结果是( C ).A) aB)空格C)不确定D)0 3

11、1. 合法的数组定义是( D ).A) int a = string; B) int a5=0,1,2,3,4,5; C) char a= string; D) char a =0,1,2,3;32. 设有数组定义:char string =China;则数组string所占的空间为( B ).A) 5个字节 B) 6个字节 C) 7个字节 D) 10个字节33. 定义字符数组c:char c =c language;数组c在内存中所占字节数是( C ).A) 9 B) 10 C) 11 D) 1234. 指出以下错误语句( C ).A) char a10=0,1,2,3,4,5,6,7,8,

12、9;B) char a10=0,1 ,2,3;C) char a2= 1,2;D) char a2= a,b;35. 若定义数组并初始化char a10=hello,该数组的元素个数是( A ).A) 10B) 5C) 6D) 736. 若定义数组并初始化char a10=HELLO,该数组的元素中 a2是( A ).A) LB) EC) HD) O37. 若定义数组并初始化int b10= 1,2,3,4,以下哪几个语句成立( A C D)?A)b8的值为0B)b1的值为1C)b3的值为整数D)b10不是b数组中的元素38. 若定义数组int a10;指出下列错误语句:ABCDA) a数组共

13、有10个元素,其引用方法是:a1,a2.a10;B) a数组是整型数组,其元素自动初始化为0;C) a数组最终一个元素的引用方法是a10;D) a数组第一个元素的引用方法是a1; 二、推断题1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。 错 2.数组是C语言的一种构造数据类型,其元素的类型可以是整型、实型、字符型甚至构造类型。 对 3.设需定义一个有15个元素的数组a,并对其前5个元素赋初值,可用如下语句实现:int a=1,2,3,4,5; 错 4.数组定义时,只允许运用常量表达式定义数组的大小,其值必需是正整数,而不能用变量来定义数组长度。 对5.C语言数组的下标从0

14、开场,下标必需是整数型的常量或变量。对6.数组是数目固定、类型一样的若干变量的有序集合。数组中的每一个数(变量)称为数组元素,数组中的全部元素都属于同一种数据类型。对7.数组元素下标的下界是固定的,总是为0。对8.一维数组在引用时下标的范围是:0 = 下标 数组的长度 。对9.若有数组定义为:int a100;则该数组的下界为0,上界为100。数组元素下标范围是: 下界 = 下标 上界。对10.设已定义:double a55; 则数组a在内存中的存放依次是:a00,a01,a02, . ,a43,a44 。 对 二填空题1.在C语言中,二维数组的元素在内存中的存放依次是 按行的依次依次存放 。

15、2.若有定义:double x35,则x数组中行下标的下限为 0 ,列下标的下限为 0 。3.若有定义:int a34=1,2,0,4,6,8,10;则初始化后,a12的值为 0 ,a21得到的值为 6 。4.字符串”abn012”的长度是 8 。5.下面程序段的运行结果是 he 。char x =”the teacher”;int i=0;while (x+i!=0)if (xi-1=t) printf(“%c”,xi);6.欲为字符串S1输入”Hello World!”,其语句是 scanf(“%s”,S1); 。7.欲将字符串S1复制到字符串S2中,其语句是 strcpy(S2,S1);

16、 。8.假设在程序中调用了strcat函数,则须要预处理嘱咐 #include 。假设调用了gets函数,则须要预处理嘱咐 #include 。9.C语言数组的下标总是从 0 开场,不行以为负数;构成数组各个元素具有一样的 数据类型 。10.字符串是以 0 为完毕标记的一维字符数组。有定义:char a=”;则a数组的长度是 0 。三程序阅读题1.写出下面程序的运行结果。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 ; j=bi) ci

17、=ai-32 ;else ci=bi-32 ;i+;ci=0;puts(c);运行结果:AQM3.当运行下面程序时,从键盘上输入AabD,则写出下面程序的运行结果。main ( ) char s80;int i=0;gets(s);while (si!=0) if (si=a)si=z+a-si ;i+;puts(s);运行结果:AzyD4.写出下面程序的运行结果。main ( ) int i,c;char s25=“8980”,”9198”;for (i=3; i=0 ; i-) c=s0i+s1i-2*0;s0i = c % 10 + 0 ;for (i=0; i=1; i+) puts(

18、si);运行结果:注:s数组中每个字符的ASCII值为:5.当运行下面程序时,从键盘上输入7 4 8 9 1 5,则写出下面程序的运行结果。main ( ) int a6,i,j,k,m;for (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”);运行结果:四程序填空题1.下面程序可求出矩阵a的主对角线上的元素之和,请填(2)空使程序完好。main ( ) int a33=1,3,5,7,9,11,13,15,17 , sum=0, i, j ;

19、for (i=0 ; i3 ; i+)for (j=0 ; j0;j-】) printf(“%d ”,numj) ;3.下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填(3)空使程序完好。main ( ) int a10,max,min,i,j,k ;for (i=0; i10; i+)scanf(“%d”,&ai);max=min=a0;for (i=0; i10; i+) if (aimax) max=ai; 【k=i】; 【max=aj;aj=ak;ak=max;】for (i=0; i10; i+)printf(“%d ”,ai)

20、;4.下面程序的功能是在一个字符串中查找一个指定的字符,若字符串中包含该字符则输出该字符在字符串中第一次出现的位置(下标值),否则输出1,请填(2)空使程序完好。# include main ( ) char c=a ; /* 须要查找的字符*/char t50 ; int i,j,k;gets(t) ;i = 【strlen(t) 】;for (k=0; ki; k+)if (【tk=c 】) j = k ; break ;else j=-1;printf(“%d”,j);5.下面程序用“依次查找法”查找数组a中是否存在某一关键字,请填(2)空使程序完好。main ( ) int a10=2

21、5,57,48,371,123,291,18,22,44;int i=0,x ;scanf(“%d”,&x);【a10=x】;while (ai!=x) i+ ;if (【i10 】) printf(“found=%dn”,i);else printf(“cant found!n”);6. 以下程序是将字符串b的内容连接字符数组a的内容后面,形成新字符串a,请填(2)空使程序完好。main ( ) char a40=”Great ”, b =”Wall”;int i=0,j=0 ;while (ai!=0) i+ ;while (【bj!=0 】) ai=bj ; i+ ; j+ ;【ai=0

22、】;printf(“%sn”,a);五、编程题1 输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数。用下标为0元素统计字符“0”的个数,下标为1的元素统计字符“1”的个数,.。#include #define N 80void main() char chsN;int i,count10;printf(Input a string:);scanf(%s,chs);for(i=0;i10;i+) counti=0;for(i=0;iN;i+)countchsi-0+;for(i=0;i10;i+)if(counti) printf(%d counts:%dn,i,counti);

23、2 编写程序求随意方阵每行、每列、两对角线元素之和。#include #define N 5#define M 5void main() int aNM=3,4,7,8,9,6,8,2,1,3,8,5,4,3,2,7,6,9,1,5, 5,6,4,1,7;int s1N;/存放每行的和int s2M;/存放每列的和int sum1=0,sum2=0;/存放两对角线的和int i=0,j=0;for(i=0;iN;i+) s1i=0;for(i=0;iM;i+) s2i=0;for(i=0;iN;i+)/计算每行的和for(j=0;jM;j+)s1i+=aij;for(j=0;jM;j+)/计算

24、每列的和for(i=0;iN;i+)s2j+=aij;for(i=0;iN;i+)/计算对角线的和sum1+=aii;for(i=0;iN;i+)/计算每行的和sum2+=aiM-1-i;printf(每行和:);for(i=0;iN;i+) printf(%d ,s1i);printf(n每列和:);for(i=0;iM;i+) printf(%d ,s2i);printf(n对角线和:);printf(%d,%d ,sum1,sum2);3 编写程序求两个矩阵的和。#include #define N 4#define M 5void main() int aNM=3,4,7,8,9,6,

25、8,2,1,3,8,5,4,3,2,7,6,9,1,5 ;int bNM=2,4,7,5,9,7,8,2,5,3,9,5,4,3,2,8,6,9,1,5 ;int cNM,i,j;for(i=0;iN;i+) /计算矩阵的和for(j=0;jM;j+)cij=aij+bij;for(i=0;iN;i+) for(j=0;jM;j+)printf(%d ,cij);printf(n);4 编写程序打印出以下形式的乘法九九表。 * A MULTIPCATION TABLE * (1) (2) (3) (4) (5) (6) (7) (8) (9) (1) 1 2 3 4 5 6 7 8 9 (2)

26、 2 4 6 8 10 12 14 16 18 (3) 3 6 9 12 15 18 21 24 27 (4) 4 8 12 16 20 24 28 32 36 (5) 5 10 15 20 25 30 35 40 45 (6) 6 12 18 24 30 36 42 48 54 (7) 7 14 21 28 35 42 49 56 64 (8) 8 16 24 32 40 48 56 64 72 (9) 9 18 27 36 45 54 63 72 81#include void main() int i=0,j=0;printf( * A MULTIPCATION TABLE *n);pr

27、intf( -n); printf( (1) (2) (3) (4) (5) (6) (7) (8) (9)n);for(i=1;i10;i+)printf(%d),i);for(j=1;j10;j+)printf( %3d,i*j);printf(n);5 调用随机函数为5*4的矩阵置100以内的整数,输出该矩阵,求出每行元素之和,并把和值最大的那一行与第一行上的元素对调。若已定义x为int类型,调用随机函数步骤如下: #include stdlib.h . . x=rand()%100 /*产生0到100的随机数*/ #include #include stdlib.h#define N

28、5#define M 4void main() int aNM;int i,j,x;int index=0,max,temp=0;int s1N;/存放每行的和for(i=0;iN;i+) s1i=0;for(i=0;iN;i+) /置100以内的随机整数for(j=0;jM;j+)x=rand()%100 /*产生0到100的随机数*/;aij=x;for(i=0;iN;i+) /输出矩阵for(j=0;jM;j+)printf(%d ,aij);printf(n);for(i=0;iN;i+)/计算每行的和for(j=0;jM;j+)s1i+=aij;for(i=0;iN;i+)/输出每行的和printf(n第%d行和:%d,i,s1i);max=s10;index=0;for(i=1;imax)max=s1i;index=i;for(i=0;iM;i+)/把和值最大的那一行与第一行上的元素对调temp=a0i;a0i=aindexi;aindexi=temp;printf(n);for(i=0;iN;i+) /输出对调后的矩阵for(j=0;jM;j+)printf(%d ,aij);printf(n);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁