C语言练习3(数组)=参考解答_第1页
C语言练习3(数组)=参考解答_第2页
C语言练习3(数组)=参考解答_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、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和 &aiB) ai和 &aiC) &ai 和 aiD) ai 和 ai2. 设已定义: int a15; 则数

2、组 a 占用的内存单元数是 ( C ).A) 15 B) 16 C) 30 D) 323. 阅读程序:main() int a2=0,i,j,k=2;for(i=0;i<k;i+)for(j=0;j<k;j+) aj=ai+1;printf("%dn",ak);以上程序的输出结果是 ( D ).A) 1 B) 3 C) 2 D) 不确定的值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);pr

3、intf("%dn",x); 以上程序的输出结果是 ( D ).A) 720 B) 6C)24 D) 1205. 以下定义语句中,错误的是 ( B ).A) int a = 6,7,8;B) int n=5, an;C) char a = "string"D) char a5 ='0','1','2','3','4'6. 以下描述中正确的是 ( D ).A) 数组名后面的常量表达式用一对圆括弧括起来B) 数组下标从 1 开始C) 数组下标的数据类型可以是整型或实型D) 数组名

4、的规定与变量名相同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

5、 , 其最后一个数组元素为 ( C ).A) a0B) a1C) 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;i<2;i+) ni=0;k=2;for(i=0;i<k;i+)

6、for(j=0;j<k;j+) nj=ni+1;printf("%dn",nk);上面程序的输出结果是 ( A ).A) 不确定的值B)3C)2D)112. 若有以下的定义和语句:int str12=1,2,3,4,5,6,7,8,9,10,11,12;char c='e',则数值为 2 的表达式是 ( C ).A) str'g'-c B)str2 C)str'd'-'c' D)str'd'-c13. 设有数组定义 :int a5; 则下列给数组元素赋值错误的是 ( B ).A) a3=9

7、3;B) scanf("%c",a3);C) a3=getchar();D) a3='a'+3;14. 以下数组定义中错误的是 ( D ).A) #define N 30int aN+30;B) #define N 30int aN;C) int a30;D) int aN;15. 在定义一个一维数组时,不能用来表示数组长度的是 ( D ).A) 常量B)符号常量 C)常量表达式D)已被赋值的变量则数组 a 在内存中16. 若 float 型变量占用 4 个字节,有定义 float a20=1.1,2.1,3.1; 所占的字节数是 ( D ).A) 12 B

8、)20 C)40 D)80则元素 x11 的正确初值是 ( A ).17. 设已定义: int x24=1,2,3,4,5,6,7,8;A) 6 B) 5 C) 7 D) 118. 设有定义: int a3=1,2,3,4,5,6,7,8,9;则 a12 的初值为 ( C ).A) 2 B) 4 C) 6 D) 819. 设有:int a45;贝擞组a占用的内存字节数是(C ).A) 12 B) 24 C) 40 D) 2020. 以下数组定义中,不正确的是 ( B ).A) int b34;B) int c3 =1,2,1,2,3,4,5,6,7;C) int b200100=0;D) in

9、t c 3=1,2,3,4,5,6;21. 定义数组: int x23;则数组 x 的维数是 ( 2 ).A) 1 B) 2 C) 3 D) 622.若定义数组并初始化 int b23= 1,2,3,4,5,6,以下语句哪一个成立 ( C ) ?A)表达式 b12 的值为 1B)表达式 b12 的值为 4C)表达式 b12 的值为 6D)表达式 b12 的值为 223. 若定义数组并初始化 int a23=1,2,3,4,5,6; for(i=0;i<2;i+)for(j=0;j<3;j+)printf("%d",aij); 语句的结果是哪一个 ( C )?A)

10、 1,2,3,4,5,6B) 1 2 3 4 5 6C) 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,7,8,9; 则下面语句的输出结果是 ( C ).for(i=0;i<3;i+) printf("%d",xi2-i);A) 1 5 9B) 1 4 7C) 3 5 7D) 3 6

11、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;i<3;i+)for(j=0;j<=i;j+)s+=aij;printf("%d",s);A) 18 B) 19 C) 20 D) 2128. 若已有 char b1050; 则该二维字符数组在内存所占字节数为 ( D ).A) 1

12、0 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,则程序的输出结果是(

13、C ).A) aB)空格C)不确定D)031. 合法的数组定义是 ( 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 =

14、"c language"A) 9 B) 10 C) 11 D) 12;数组 c 在内存中所占字节数是 ( C ).34. 指出以下错误语句 ( C ).A) char a10='0','1','2','3','4','5','6','7','8','9'B) char a10='0','1 ','2','3'C) char a2= "1&quo

15、t;,"2"D) char a2= 'a','b ' ;35. 若定义数组并初始化 char a10="hello",A) 10B) 5C) 6D) 7该数组的元素个数是 ( A ).36. 若定义数组并初始化char a10="HELLO",该数组的元素中 a2 是( A ).18A) 'L'B) 'E'C) 'H'D) 'O'以下哪几个语句成立 ( A C D) ?37. 若定义数组并初始化 int b10= 1,2,3,4,A) b8

16、 的值为 0B) b1 的值为 1C) b3 的值为整数D) b10 不是 b 数组中的元素38. 若定义数组 int a10 ;指出下列错误语句: ABCDA) a数组共有10个元素,其引用方法是:a1,a2a10;B) a数组是整型数组,其元素自动初始化为0;C) a数组最后一个元素的引用方法是a10;D) a数组第一个元素的引用方法是 a1;、判断题1. 数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。错2. 数组是C语言的一种构造数据类型,其元素的类型可以是整型、实型、字符型甚至结构类 型。对3. 设需定义一个有15个元素的数组a,并对其前5个元素赋初值,可用如下语句实

17、现:inta=1,2,3,4,5;错4. 数组定义时,只允许使用常量表达式定义数组的大小,其值必须是正整数,而不能用变量来定义数组长度。对5. C语言数组的下标从0开始,下标必须是整数型的常量或变量。对6. 数组是数目固定、类型相同的若干变量的有序集合。数组中的每一个数(变量)称为数组 元素,数组中的所有元素都属于同一种数据类型。对7. 数组元素下标的下界是固定的,总是为0。对8. 一维数组在引用时下标的范围是:0 <=下标 < 数组的长度。对9. 若有数组定义为:int a100;则该数组的下界为0, 上界为100。数组元素下标范围是: 下界 <=下标 < 上界。对1

18、0. 设已定义:doublea55;则数组 a在内存中的存放顺序是:a00,a01,a02, . ,a43,a44。 对1. 在C语言中,二维数组的元素在内存中的存放顺序是按行的顺序依次存放。2. 若有定义:double x35,则x数组中行下标的下限为_0_,列下标的下限为_0_。3. 若有定义:int a34=1,2,0,4,6,8,10;则初始化后,a12的值为 ,a21 得到的值为_6_。4. 字符串” ab”的长度是8。5. 下面程序段的运行结果是hechar x =” the teacher ”;int i=0;while (x+i!=0''if (xi- 1= &

19、#39; t ' ) printf( “ c” ,xi);6. 欲为字符串 S1输入” Hello World!,其语句是。7欲将字符串 S1复制到字符串 S2中,其语句是strcpy(S2,S1); 。gets函数,贝U数据类型08. 如果在程序中调用了strcat函数,则需要预处理命令#inelude <string.h>。如果调用了需要预处理命令#i nclude <stdio.h>。9. C语言数组的下标总是从 _0_开始,不可以为负数;构成数组各个元素具有相同的10. 字符串是以0'为结束标志的一维字符数组。有定义:char a=则”数组的长度

20、是三.程序阅读题1. 写出下面程序的运行结果。mai n () int a66,i,j ;for (i=1; i<6 ; i+) for (j=1 ; j<6 ; j+) aij=(i/j)*(j/i);for (i=1;i<6 ; i+) for (j=1 ; j<6 ; j+)printf( “ 2d' ,aij); printf( n“);运行结果:1 0 0 0 00 10 0 00 0 10 00 0 0 1 00 0 0 0 12. 写出下面程序的运行结果。mai n () int i=0;char a =” abm" , b =” aqi

21、d ” , c10;while (ai!=0' ' && bi!= 0' ')if (ai>=bi) ci=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<=' z'&& si>=' a')si=' z '-s+

22、9; a'i+; puts(s);运行结果:AzyD4写出下面程序的运行结果。mai n () 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(si);运行结果:9198注:s数组中每个字符的 ASCII值为:7078574957565当运行下面程序时,从键盘上输入7 4 8 9 1 5/,则写出下面程序的运行结果。mai n () int a6,i,j,k,m;

23、for (i=0 ; i<6 ; i+) scanf (“ d' ,&ai);for (i=5 ; i>=0; i-) k=a5;for (j=4; j>=0; j-) aj+1=aj;a0=k;for (m=0 ; m<6 ; m+) printf( “ %d ” ,am);printf( n”');运行结果:574891157489915748891574489157748915四.程序填空题1下面程序可求出矩阵a的主对角线上的元素之和,请填(2)空使程序完整。mai n () int a33=1,3,5,7,9,11,13,15,17, s

24、um=0, i, j ;for (i=0 ; i<3 ; i+)for (j=0 ; j<3 ; j+)if (【i=j 】)sum=sum+ 【aij】;printf( “ sum=%d ,sum);2下面程序将十进制整数n转换成base进制,请填(3)空使程序完整。mai n () int i,base ,n,j,nu m20;scanf( “ d',&n);sca nf( “ %&base);do i+;numi=【n%base 】;n=【n/base; while (n !=0);for (【j=i;j>0;j-)printf( “ %b ,n

25、umj);3下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填 空使程序完整。mai n () int a10,max, min ,i,j,k ;for (i=0; i<10; i+)scanf(“ d' ,&ai);max=min=a0;for (i=0; i<10; i+) if (ai<min) min=ai;【 j=i 】 ; if (ai>max) max=ai;【 k=i 】 ; 【 max=aj;aj=ak;ak=max; 】for (i=0; i<10; i+)printf(“

26、%”d ,ai);4. 下面程序的功能是在一个字符串中查找一个指定的字符,若字符串中包含该字符则输出该字符在字符串 中第一次出现的位置(下标值) ,否则输出 1,请填 (2)空使程序完整。# include <string.h>main ( ) char c=' a '需要; /*查找的字符 */char t50 ;int i,j,k;gets(t) ;i = 【 strlen(t) 】 ;for (k=0; k<i; k+)if ( 【 tk=c 】 ) j = k ; break ;else j=-1;printf(“ %d” ,j);5. 下面程序用 “

27、顺序查找法 ”查找数组 a 中是否存在某一关键字,请填(2)空使程序完整。main ( ) int a10=25,57,48,371,123,291,18,22,44;int i=0,x ;scanf( “ %d” ,&x);【 a10=x 】 ;while (ai!=x) i+ ;if ( 【i<10 】) printf(“ foundn=”%d,i);else printf(“'ct afonund!n” );6. 以下程序是将字符串b的内容连接字符数组a的内容后面,形成新字符串a,请填(2)空使程序完整。main ( ) char a40=”Great ”, b =

28、”Wall ”;int i=0,j=0 ;while (ai!=0'') i+ ;while ( 【 bj!='0' 】 ) ai=bj ; i+ ; j+ ;【 ai='0' 】;printf(“n%”s,a);五、 编程 题0 元素统计字符1 输入一行数字字符 , 请用数组元素作为计数器来统计每个数字字符的个数。用下标为 “0”的个数,下标为 1 的元素统计字符“ 1”的个数, . 。#include <stdio.h>#define N 80void main()char chsN;int i,count10;printf(&q

29、uot;Input a string:");scanf("%s",chs);for(i=0;i<10;i+) counti=0;for(i=0;i<N;i+)countchsi-'0'+;for(i=0;i<10;i+)if(counti) printf("%d counts:%dn",i,counti);2 编写程序求任意方阵每行、每列、两对角线元素之和。#include <stdio.h>#define N 5#define M 5void main()int aNM= 3,4,7,8,9,6,

30、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;i<N;i+) s1i=0;for(i=0;i<M;i+) s2i=0;for(i=0;i<N;i+)/ 计算每行的和for(j=0;j<M;j+)s1i+=aij;for(j=0;j<M;j+)/ 计算每列的和 for(i=0;i<N;i+) s2j+=aij; for(i=0;i<N;i+)/ 计算对角线的和 sum1+

31、=aii;for(i=0;i<N;i+)/ 计算每行的和 sum2+=aiM-1-i;printf(" 每行和: "); for(i=0;i<N;i+) printf("%d ",s1i); printf("n 每列和: "); for(i=0;i<M;i+) printf("%d ",s2i); printf("n 对角线和: "); printf("%d,%d ",sum1,sum2);3 编写程序求两个矩阵的和。#include <stdio.h

32、>#define N 4#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 ;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;i<N;i+) /计算矩阵的和for(j=0;j<M;j+)cij=aij+bij;for(i=0;i<N;i+)for(j=0;j<M;j+)prin tf("%d ”,cij);prin tf("n");4 编写程序打印出以下形式的乘法九九表。* A MULTIPCATION TABLE *(1)(8) (9)(1)1234 :5 67892468 10 12 14 16 183691215 -18 :21 :24 274812162024283236510152025303540456121824303642485471421283542495664(8)81624324048566472(9)91827364554637281#in clude <stdio.h> void mai n()int i=0,j=0;p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论