【计算机类职业资格】二级C语言-1-1及答案解析.doc

上传人:amazingpat195 文档编号:1324844 上传时间:2019-10-17 格式:DOC 页数:25 大小:90KB
下载 相关 举报
【计算机类职业资格】二级C语言-1-1及答案解析.doc_第1页
第1页 / 共25页
【计算机类职业资格】二级C语言-1-1及答案解析.doc_第2页
第2页 / 共25页
【计算机类职业资格】二级C语言-1-1及答案解析.doc_第3页
第3页 / 共25页
【计算机类职业资格】二级C语言-1-1及答案解析.doc_第4页
第4页 / 共25页
【计算机类职业资格】二级C语言-1-1及答案解析.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、二级 C 语言-1-1 及答案解析(总分:78.00,做题时间:90 分钟)一、选择题(总题数:35,分数:44.00)1.有以下程序: #includestdio.h int f(int n); main() int a=3,s; s=f(a);s=s+f(a); printf(“%d/n“,s); int f(int n) static int a=1; n+=a+; return n; 程序运行后的输出结果是_。(分数:1.00)A.9B.8C.7D.102.程序中头文件 type1.h 的内容是 #define N 5 #define M1 N*3 程序如下: #define “typ

2、e1.h“ #define M2 N*2 main () int i; i=M1+M2; printf(“%d/n“, i); ) 程序编译后运行的输出结果是( )。(分数:1.00)A.10B.20C.25D.303.以下程序的输出结果是 int f() static int i=0; int s=1; s+=i; i+; return s; main ( ) int i,a=0; for (i=0;i5; i+) a+=f(); printf ( “%d/n“ ,a); (分数:1.00)A.20B.24C.25D.154.数据库系统的核心是( )。(分数:1.00)A.数据库B.数据库管

3、理系统C.模拟模型D.软件工程5.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算以及 _ 。(分数:1.00)A.数据的存储结构B.计算方法C.数据映象D.逻辑存储6.以下程序的输出结果是 _ 。 #finclude “stdlib.h“ fun(int*p,int a33) *p=a22; main() int a33=2,4,6,8,10,12,14,16,18,*p; p=(int*)mallocsizeof(int); fun( printf(“%d,%d,%d/n“,*p,*q,*r); 程序运行后输出结果是_。(分数:1.00)A.7,8,8B.7,

4、8,7C.8,7,7D.8,7,88.若有以下程序: #include stdio.h int a=1,3,5,7; main() int i; int *p=a; for(i=0;i4;i+)ai=*p; printf(“%d/n“,a2); 上面程序的输出结果是(分数:1.00)A.5B.7C.1D.39.设有变量说明 int(*p)m,其中的标识符 p 是 _ 。(分数:1.00)A.m 个指向整型变量的指针B.指向 m 个整型变量的指针C.一个指向具有 m 个整型元素的一维数组的指针D.具有 m 个指针元素的一维指针数组,每个元素都指向整型变量10.请选出以下程序的输出结果 _。 #i

5、nclude stdio.h sub(x, y, z) int x, y,*z; *z=y-x: main() int a, b, c; sub 10,5,sub(7,a,sub(a, b, printf(“%d,% d,/%d/n“, a, b, c); (分数:2.00)A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-711.有以下程序: #includestdio.h #define f(x)x*x*x main() int a =3,s,t; s=f(a+1); t=f(a+1); printf(“%d,%d/n“,s,t); 程序运行后的输出结果是_。(分

6、数:1.00)A.10,64B.10,10C.64,10D.64,6412.以下程序的功能是:按顺序读入 10 名学生 4 门课程的成绩,计算出每位学生的平均分并输出,程序如下: main() int n,k; float score,sum,ave; sum=0.0; for(n=1;n10;n+) for(k=1;k4;k+) scanf(“%f”, while( ch=getchar()!=“/n“) n+;B.n=0; while( getchar()! =“/n“) n+;C.for( n=0; getehar()!=“/n“; n+);D.n=0; for( ch=getchar(

7、); ch!=“/n“; n+);16.下列叙述中正确的是_。(分数:2.00)A.程序的执行效率与数据的存储结构密切相关B.程序的执行效率只取决于程序的控制结构C.程序的执行效率只取决于所处理的数据量D.以上三种说法都不对17.请读程序: #includestdio.h main() int a;float b,c; scanf(“%2d%3f%4f“, 若运行时从键盘上输入 9876543210 (分数:1.00)A.a=98,b=765,c=4321B.a=10,b=432,c=8765C.a=98,b=765.000000,c=4321.000000D.a=98,b=765.0,c=4

8、321.018.下列程序执行后的输出结果是 _ 。 main() char x=0xFFFF;printf(“%d/n“,x-);(分数:1.00)A.-32767B.FFFEC.-1D.-3276819.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是_。(分数:1.00)A.多对多B.一对一C.多对一D.一对多20.若运行以下程序时,从键盘输入 ADescriptorCR(CR表示回车),则下面程序的运行结果是 #include stdio.h main() char c; int v0=1,v1=0,v2=0; do switch(c

9、=getchar() case “a“:case “A“: case “e“:case “E“: case “i“:case “I“: case “o“:case “O“: case “u“:case “U“:v1+=1: default:v0+=1;v2+=1;while(c!=“/n“); printf(“v0=%d,v1=%d,v2=%d/n“,v0,v1,v2);(分数:1.00)A.v0=7,v1=4,v2=7B.v0=8,v1=4,v2=8C.v0=11,v1=4,v2=11D.v0=13,v1=4,v2=1221.下列程序中函数 sort()的功能是对数组 a 中的数据进行由大到

10、小的排序。 #include stdioh void sort(int a,int n) int i,j,t; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(aiaj) t=ai;ai=aj;aj=t; main() int a10=1,2;3,4,5,6,7,8,9,10,i; sort(continue; i+; s+=i; while(i7);. printf(“%d/n“,s); 执行后输出的结果是( )。(分数:1.00)A.16B.12C.28D.2123.以下选项中非法的 C 语言字符常量是_。(分数:1.00)A.“/09“B.“9“C.“/x09“

11、D.“/x9d“24.对于循环队列,下列叙述中正确的是(分数:2.00)A.队头指针是固定不变的B.队头指针一定大干队尾指针C.队头指针一定小于队尾指针D.队头指针可以大干队尾指针,也可以小于队尾指针25.有如下程序段: int a=14, b=15, x; char c=“A“; x=(a 执行该程序段后,x 的值为(分数:1.00)A.trueB.falseC.0D.126.函数 fseek(pf,OL,SEEK_END)中的 SEEK_END 代表的起始点是(分数:1.00)A.文件开始B.文件末尾C.文件当前位置D.以上都不对27.有以下函数定义: void fun(int n,dou

12、ble x) 若以下选项中的变量都已正确定义并赋值,则对函数 fun 正确调用语句是_。(分数:1.00)A.fun(int y,double m);B.k=fun(10,12.5);C.fun(x,n);D.void fun(n,x);28.请阅读以下程序: #includestdio.h main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:a+;break; case 2: a+,b+;break; printf(“a=%d,b=%d/n“,a,b); 上面程序的输出结果是(分数:1.00)A.a=2,b=1B.a=

13、1,b=1C.a=1,b=0D.a=2,b=229.下面判断正确的是(分数:2.00)A.char*a=“china“;等价于 char*a;*a=“china“;B.char str5=“china“;等价于 char str=“china“;C.char *s=“china“;等价于 char *s;s=“china“;D.char c4=“abc“,d4=“abc“;等价于 char c4=d4=“abc“;30.有以下程序: main() int m,n,P; scanf(“m=%dn=%dp=%d“,m,n,p); printf(“%d%d%d/n“,m,n,p); 若想从键盘上输入

14、数据,使变量 m 中的值为 123,n 中的值为 456,p 中的值为 789,则王确的输入是_。(分数:2.00)A.m=123n=456p=789B.m=123 n=456 p=789C.m=123,n=456,P=789D.123 456 78931.以下叙述中正确的是(分数:1.00)A.C 程序中注释部分可以出现在程序中任意合适的地方B.花括号“”和“”只能作为函数体的定界符C.构成 C 程序的基本单位是函数,所有函数名都可以由用户命名D.分号是 C 语句之间的分隔符,不是语句的一部分32.设有以下程序段 int X=0,s=0; while(!X!=0)S+=+X; printf(

15、“%d“,s); 则(分数:2.00)A.运行程序段后输出 0B.运行程序段后输出 1C.程序段中的控制表达式是非法的D.程序段执行无限次33.下列程序执行输出的结果是 _ 。 #includestdio.h f(int a) int b=0; static c=3; a=C+;b+; return(a); main() int a=2,i,k; for(i=0;i2;i+) k=f(a+); printf(“%d/n“,k); (分数:2.00)A.3B.4C.5D.634.以下叙述中错误的是( )。(分数:1.00)A.对于 double 类型数组,不可以直接用数组名对数组进行整体输入或输

16、出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D.可以通过赋初值的方式确定数组元素的个数35.在下列字符序列中,不可用做 C 语言标识符的是 ( )(分数:1.00)A.student_numB.classC.#88D.month_12二、填空题(总题数:15,分数:34.00)36.对于一棵具有 n 个结点的树,则该树中所有结点的度之和为 _ 1_ 。 (分数:4.00)37.在进行软件结构设计时,应遵循的最主要原理是 _ 1_ 。 (分数:4.00)38.若有以下定义,则不移动指针 p,且通过

17、指针 p 引用值为 98 的数组元素的表达式是 _ 1_ 。 int w10=23,54,10,33,47,98,72,80,61, *p=w; (分数:1.00)39.有以下程序 main() int n=0,m+1,X=2; if(!n) X-=l; if(m) X-=2; if(X) X-=3; printf(“%d/n“,x); 执行后输出的结果是 _ 1_ 。 (分数:1.00)40.用复合的赋值运算符将变量 x 中的值增大 2 的赋值表达式是 _ 1_ 。 (分数:1.00)41.函数 my_cmp()的功能是比较字符串 s 和 t 的大小,当 s 等于 t 时返回 0,否则返回

18、s 和 t 的第一个不同字符的 ASCII 码差值,即 st 时返回正值,当 st 时返回负值。请填空。 my_cmp(char *s,char*t) while(*s=*t) if(*s=“/0“)return 0; +s; +t; return 1; (分数:2.00)42.下列程序运行后的输出结果是 1。 #includestdio.h main() char s20; scanf(“%s“,s); printf(“%s“,s); 运行程序,输入 HOW ARE YOU。 (分数:2.00)43.下列程序运行后的输出的结果是 1。 #includestdio.h main() char

19、s20; scanf(“%s“,s); printf(“%s“,s); 运行程序,输入 HOW ARE YOU。 (分数:2.00)44.下面程序的功能是:计算 110 之间奇数和及偶数之和。 #include stdio.h main ( ) int a, b, c, i; a=c=O; for (i=O; i=10;i+=2) a+=i; _ 1_ ; c+=b; printf(“偶数之和=%d/n“,a); printf(“奇数之和=%d/n“,c-11); (分数:5.00)45.有以下程序: #includestdio.h main() int m,n; scanf(“%d%d“,p

20、+; q-k=i+;q-; q-k=i; for(i=0;i5;i+)printf(“%d“,mi.k); printf(“/n“); (分数:2.00)47.对软件是否能达到用户所期望的要求的测试称为 _ 1_ 。 (分数:1.00)48.在面向对象方法中, 1 描述的是具有相似属性与操作的一组对象。 (分数:2.00)49.以下函数用来在 w 数组中插入 x。n 所指向的存储单元中存放 w 数组中字符个数。数组 w 中的字符已按从小到大的顺序排列,插入后数组 w 中的字符仍有序。请填空。 void fun(char*w,char x,int*n) int i, p; p=0; w*n=x;

21、 while(xwp)p+; for(i=*n;ip;i-)wi= _ 1_ ; wp=x; + *n; (分数:1.00)50.若有下列定义和语句: char*s1=“12345“,*s2=“1234“; printf(“%d/n“,strlen(strcpy(s1,s2); 则输出结果为 1。 (分数:2.00)二级 C 语言-1-1 答案解析(总分:78.00,做题时间:90 分钟)一、选择题(总题数:35,分数:44.00)1.有以下程序: #includestdio.h int f(int n); main() int a=3,s; s=f(a);s=s+f(a); printf(“

22、%d/n“,s); int f(int n) static int a=1; n+=a+; return n; 程序运行后的输出结果是_。(分数:1.00)A.9 B.8C.7D.10解析:解析 题目中静态局部变量 a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第一次调用函数执行 n+=a+;时 a 先与 n 相加在再进行自增。n 的值为 4,a 的值为 2,且 a 变量执行完后空间没有释放。再执行 s=s+f(a)时,s 的值为 4,调用 f(a)函数时 n 的返回值为 n=3+2=5,且此时a 的值为 3 了。所以 s 的值为 9。2.程序中头文件 type1.h 的内容

23、是 #define N 5 #define M1 N*3 程序如下: #define “type1.h“ #define M2 N*2 main () int i; i=M1+M2; printf(“%d/n“, i); ) 程序编译后运行的输出结果是( )。(分数:1.00)A.10B.20C.25 D.30解析:解析 编译预处理时,用“type1.h”中的内容替代命令#include“type1.h”。表达式“i=M1+M2” 经过宏替换为“i=5*3+5*2”即 i=25,所以最后输出的 i 的值为 25。所以 4 个选项中 C 正确。3.以下程序的输出结果是 int f() stati

24、c int i=0; int s=1; s+=i; i+; return s; main ( ) int i,a=0; for (i=0;i5; i+) a+=f(); printf ( “%d/n“ ,a); (分数:1.00)A.20B.24C.25D.15 解析:解析 本题考核的知识点是静态变量 static 的应用。在 C 语言中声明为 static 型的变量,在整个程序运行期间,静态局部变量在内存的静态存储区中占据永久性的存储单元。即使退出函数后,下次再进入该函数时,静态局部变量仍使用原来的存储单元。由于并不释放这些存储单元,因此这些存储单元中的值得以保留; 因而可以继续使用存储单元

25、中原来的值。本题中函数 f()中定义了一个 static 型变量i,故每调用一次函数 f(),i 的值加 1,返回 s 的值等于 i,在主函数中用了一个 for 循环,该循环执行了 5 次,每次都调用 f()函数,将其返回值累加到变量 a 中,故悬后 a 的值为 1+2+3+4+5=15。所以,4 个选项中 D 为所选。4.数据库系统的核心是( )。(分数:1.00)A.数据库B.数据库管理系统 C.模拟模型D.软件工程解析:解析 数据库管理系统(Database Management System, DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制

26、及保护和数据服务等,数据库管理系统是数据库系统的核心。5.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算以及 _ 。(分数:1.00)A.数据的存储结构 B.计算方法C.数据映象D.逻辑存储解析:解析 数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含三个方面的内容,即数据的逻辑结构、存储结构和数据的运算。6.以下程序的输出结果是 _ 。 #finclude “stdlib.h“ fun(int*p,int a33) *p=a22; main() int a33=2,4,6,8,10,12,14,16,18,*p; p=(int*)malloc

27、sizeof(int); fun( printf(“%d,%d,%d/n“,*p,*q,*r); 程序运行后输出结果是_。(分数:1.00)A.7,8,8B.7,8,7 C.8,7,7D.8,7,8解析:解析 f 函数的功能是返回地址为 x,y 的两个数中值较的数的地址,本题输出结果是 7,8,7。8.若有以下程序: #include stdio.h int a=1,3,5,7; main() int i; int *p=a; for(i=0;i4;i+)ai=*p; printf(“%d/n“,a2); 上面程序的输出结果是(分数:1.00)A.5B.7C.1 D.3解析:解析 在 C 语言

28、中,数组元素下标是从 0 开始的;指针变量 p 指向数组的首地址。for 循环语句中,指针变量 p 始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为 1。9.设有变量说明 int(*p)m,其中的标识符 p 是 _ 。(分数:1.00)A.m 个指向整型变量的指针B.指向 m 个整型变量的指针C.一个指向具有 m 个整型元素的一维数组的指针 D.具有 m 个指针元素的一维指针数组,每个元素都指向整型变量解析:解析 本题考查指向数组的指针变量的声明。这里的 p 表示一个指向数组的指针:*p 表示指针 p指向地址的内容。10.请选出以下程序的输出结果 _。 #include std

29、io.h sub(x, y, z) int x, y,*z; *z=y-x: main() int a, b, c; sub 10,5,sub(7,a,sub(a, b, printf(“%d,% d,/%d/n“, a, b, c); (分数:2.00)A.5,2,3B.-5,-12,-7 C.-5,-12,-17D.5,-2,-7解析:解析 sub()函数的作用是将形参 y 和 x 的差赋给了 z 指向的那个内存地址,所以在 sub(0.,5, s=f(a+1); t=f(a+1); printf(“%d,%d/n“,s,t); 程序运行后的输出结果是_。(分数:1.00)A.10,64

30、B.10,10C.64,10D.64,64解析:解析 本题考查宏定义的用法,宏定义只是做个简单的替换,所以本题中执行 f(a+1)=a+1*a+1*a+1=3*a+1=10,f(a+1)=(a+1)*(a+1)*(a+1)=64,所以答案为 A 选项。12.以下程序的功能是:按顺序读入 10 名学生 4 门课程的成绩,计算出每位学生的平均分并输出,程序如下: main() int n,k; float score,sum,ave; sum=0.0; for(n=1;n10;n+) for(k=1;k4;k+) scanf(“%f”, while( ch=getchar()!=“/n“) n+;

31、B.n=0; while( getchar()! =“/n“) n+;C.for( n=0; getehar()!=“/n“; n+);D.n=0; for( ch=getchar(); ch!=“/n“; n+); 解析:解析 选项 D 中 ch=getchar()的操作,在 for 语句中所处的位置决定了此操作仅做一次,即只能从键盘上接收一个字符。如果该字符是回车符,则只循环一次就退出;如果输入一个非回车字符,则程序进入无限循环。16.下列叙述中正确的是_。(分数:2.00)A.程序的执行效率与数据的存储结构密切相关 B.程序的执行效率只取决于程序的控制结构C.程序的执行效率只取决于所处理

32、的数据量D.以上三种说法都不对解析:17.请读程序: #includestdio.h main() int a;float b,c; scanf(“%2d%3f%4f“, 若运行时从键盘上输入 9876543210 (分数:1.00)A.a=98,b=765,c=4321B.a=10,b=432,c=8765C.a=98,b=765.000000,c=4321.000000 D.a=98,b=765.0,c=4321.0解析:解析 scanf()把用户从键盘录入的数字的第 1、2 位存入整型变量 a;把第 3、4、5 位存入单精度实型变量 b,把第 6、7、 8、9 位存入单精度实型变量 c,

33、用户录入的第 10 位被 scanf()遗弃。这时变量 a、b、c 的值分别为:98、765.000000、 4321.000000。18.下列程序执行后的输出结果是 _ 。 main() char x=0xFFFF;printf(“%d/n“,x-);(分数:1.00)A.-32767B.FFFEC.-1 D.-32768解析:解析 因为 x=0x FFFF=11111111,因此当以整型形式输出时对应的数为-1。19.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是_。(分数:1.00)A.多对多B.一对一C.多对一 D.一对多解析:解

34、析 事物之间的联系在信息世界中反映为实体集之间的联系,实体集间的联系个数不仅可以是单个的,也可以是多个的,对应关系有:一对一、一对多(多对一)、多对多。两个实体集间的联系可以用图 181 表示。 20.若运行以下程序时,从键盘输入 ADescriptorCR(CR表示回车),则下面程序的运行结果是 #include stdio.h main() char c; int v0=1,v1=0,v2=0; do switch(c=getchar() case “a“:case “A“: case “e“:case “E“: case “i“:case “I“: case “o“:case “O“:

35、case “u“:case “U“:v1+=1: default:v0+=1;v2+=1;while(c!=“/n“); printf(“v0=%d,v1=%d,v2=%d/n“,v0,v1,v2);(分数:1.00)A.v0=7,v1=4,v2=7B.v0=8,v1=4,v2=8C.v0=11,v1=4,v2=11D.v0=13,v1=4,v2=12 解析:解析 本题考查 switch 语句的掌握。必须掌握以下内容。 首先应该明白 switch 语句的语法格式: switch(表达式) case 常量表达式 1:语句组 1; case 常量表达式 2:语句组 2; case 常量表达式 n:

36、语句组 n; default:语句组 n+1; 另外,以下几点是关于 switch 语句的重点: 系统在执行时计算开关表达式的值;根据所得的值在各个 case 标号表达式中寻找匹配,直到发现与表达式匹配的标号。找到匹配后执行后面相应的语句表,顺序往下执行;如果无相匹配的标号,若存在 default 标号,则执行该语句标号后面的语句组 n+1;当不存在 default 标号时,不执行 switch 中的任何一个语句表。一般而言,在多分支结构中总会出现“意外”的情况,这时均可归入 default 程序段,作统一的处理。default 标号是可选性的,不必每次都有,视需要而定。switch 语句中还

37、可以包含switch 语句的嵌套。21.下列程序中函数 sort()的功能是对数组 a 中的数据进行由大到小的排序。 #include stdioh void sort(int a,int n) int i,j,t; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(aiaj) t=ai;ai=aj;aj=t; main() int a10=1,2;3,4,5,6,7,8,9,10,i; sort(continue; i+; s+=i; while(i7);. printf(“%d/n“,s); 执行后输出的结果是( )。(分数:1.00)A.16 B.12C.28D.

38、21解析:23.以下选项中非法的 C 语言字符常量是_。(分数:1.00)A.“/09“ B.“9“C.“/x09“D.“/x9d“解析:解析 /后跟八进制数据,不能出现数字 9。所以选择 A。24.对于循环队列,下列叙述中正确的是(分数:2.00)A.队头指针是固定不变的B.队头指针一定大干队尾指针C.队头指针一定小于队尾指针D.队头指针可以大干队尾指针,也可以小于队尾指针 解析:解析 循环队列是将顺序队列首尾相连形成的,随着插入元素或删除元素的进行,其队头指针及队尾指针是在不断变化的,有时可能会出现队头指针大于队尾指针的情况,也可能是队尾指针大于队头指针,故答案为 D)。25.有如下程序段

39、: int a=14, b=15, x; char c=“A“; x=(a 执行该程序段后,x 的值为(分数:1.00)A.trueB.falseC.0D.1 解析:解析 在 C 语言中,逻辑运算符有 4 个,它们分别是:!(逻辑非)、|(逻辑或)、b+; return(a); main() int a=2,i,k; for(i=0;i2;i+) k=f(a+); printf(“%d/n“,k); (分数:2.00)A.3B.4 C.5D.6解析:解析 本题考查函数调用时的参数传递。在函数调用时,static 变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。 在主函数中,第

40、一次循环,i=0,调用 k=f(a+)=f(2),调用完之后才将 a 加 1,a 变为 3,在 f(2)中,先将 c=3 赋值给 a 返回,然后将 c 加 1,得到 k=a=3,c=4。 第二次循环,i=1,调用 k=f(a+)=f(3),调用完之后才将 a 加 1,a 变为 4,在 f(3)中,先将 c=4 赋值给 a 返回,然后将 c 加 1,得到 k=a=4,c=5。34.以下叙述中错误的是( )。(分数:1.00)A.对于 double 类型数组,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出所定义的

41、下标范围时,系统将给出“下标越界”的出错信息 D.可以通过赋初值的方式确定数组元素的个数解析:解析 本题考查的是数组的基本概念。在 C 语言中,除字符数组外,一个数组不能通过数组名对数组进行整体引用,因此选项 A)是对的。数组名中存放的是一个地址常量,它代表整个数组的首地址,因此选项 B)是对的。C 语言程序在运行过程中,系统不自动检验数组元素的下标是否越界,因此选项 C)是错误的。C 语言规定可以通过赋初值来定义数组的大小,这时数组说明符的一对方括号中可以不指定数组的大小,因此选项 D)也是正确的。所以,4 个选项中选项 C)符合题意。35.在下列字符序列中,不可用做 C 语言标识符的是 (

42、 )(分数:1.00)A.student_numB.classC.#88 D.month_12解析:二、填空题(总题数:15,分数:34.00)36.对于一棵具有 n 个结点的树,则该树中所有结点的度之和为 _ 1_ 。 (分数:4.00)解析:n-137.在进行软件结构设计时,应遵循的最主要原理是 _ 1_ 。 (分数:4.00)解析:模块独立原理38.若有以下定义,则不移动指针 p,且通过指针 p 引用值为 98 的数组元素的表达式是 _ 1_ 。 int w10=23,54,10,33,47,98,72,80,61, *p=w; (分数:1.00)解析:p5 或 *(p+5)解析 98

43、是数组 w 的第 5 个元素(最开始的为第 0 个),而通过*p=w 已经将 p 指向了数组 w,要想不移动指针 p 而引用 98,可以有以下两种写法:p5、*(p+5)。39.有以下程序 main() int n=0,m+1,X=2; if(!n) X-=l; if(m) X-=2; if(X) X-=3; printf(“%d/n“,x); 执行后输出的结果是 _ 1_ 。 (分数:1.00)解析:-4解析 if-else 构造了一种二路分支选择,是一种最基本的选择结构,if(条件) S1(if 分结构) else S2(else 分结构),它的工作过程是:先对条件表达式进行判断,若为真(

44、成立,值为非零),就执行if 分结构(S1);否则(不成立,值为 0),就执行 else 分结构(S2)。本题中,n=O,可以判断(!n)为真,执行“x=x-1=2-1=1;m=1”,可以判断(m)为真,执行“x=x-2=1-2=-1;”进而可以判断(x)为真,执行x=x-3=-1-3=-4。所以,最后输出为-4。40.用复合的赋值运算符将变量 x 中的值增大 2 的赋值表达式是 _ 1_ 。 (分数:1.00)解析:x+=2解析 x+=2 等价于 x=x+2,“+=”为复合的赋值运算符。41.函数 my_cmp()的功能是比较字符串 s 和 t 的大小,当 s 等于 t 时返回 0,否则返回

45、 s 和 t 的第一个不同字符的 ASCII 码差值,即 st 时返回正值,当 st 时返回负值。请填空。 my_cmp(char *s,char*t) while(*s=*t) if(*s=“/0“)return 0; +s; +t; return 1; (分数:2.00)解析:*s-*t解析 两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回。值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回,所以在空框处应填入*s-*t,保证在t 时,返

46、回正值,当 st 时,返回负值。42.下列程序运行后的输出结果是 1。 #includestdio.h main() char s20; scanf(“%s“,s); printf(“%s“,s); 运行程序,输入 HOW ARE YOU。 (分数:2.00)解析:HOW解析 在 scanf()函数中,使用空格作为分隔符,如果输入含有空格的字符中,则不能使用scanf()数,所以本题中输入空格就返回了“/0/, s 数组也就确定了,后面的输入就不再读入数组 s 中。43.下列程序运行后的输出的结果是 1。 #includestdio.h main() char s20; scanf(“%s“,

47、s); printf(“%s“,s); 运行程序,输入 HOW ARE YOU。 (分数:2.00)解析:HOW解析 在 scanf()函数中,使用空格作为分隔符,如果输入含有空格的字符串,则不能使用scanf()函数,所以本题中输入空格就返回了“/0“, s 数组也就确定了,后面的输入就不再读入数组 s 中。44.下面程序的功能是:计算 110 之间奇数和及偶数之和。 #include stdio.h main ( ) int a, b, c, i; a=c=O; for (i=O; i=10;i+=2) a+=i; _ 1_ ; c+=b; printf(“偶数之和=%d/n“,a); printf(“奇数之和=%d/n“,c-11); (分数:5.00)解析:b=i+145.有以下程序: #includestdio.h main() int m,n; scanf(“%d%d“,p+; q-k=i+;q-; q-k=i; for(i=0;i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1