【计算机类职业资格】二级C语言-113及答案解析.doc
《【计算机类职业资格】二级C语言-113及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C语言-113及答案解析.doc(24页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C 语言-113 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:44,分数:100.00)1.有以下程序: #include stdio.h void f(int *p,int *q); main( ) int m=1,n=2,*r= f(r, printf(“%d,%d“,m,n); void f(int *p,int *q) p=p+1; *q=*q+1; 程序运行后的输出结果是_。(分数:5.00)A.2,3B.1,3C.1,4D.1,22.设已有定义:float x;,则以下对指针变量 p 进行定义且赋初值的语句中正确的是_。(分数:2.00)A.in
2、t *p=(float)x;B.float *p=C.float p=D.float *p=1024;3.若有定义语句:double a, *p= 以下叙述中错误的是_。(分数:2.00)A.定义语句中的*号是一个间址运算符B.定义语句中的*号是一个说明符C.定义语句中的 P 只能存放 double 类型变量的地址D.定义语句中,*P= int *p1= *p=*p1*(*p2); printf(“%d/n“,c); 执行后的输出结果是_。(分数:5.00)A.1B.2C.3D.45.以下叙述中正确的是_。(分数:2.00)A.int * p1; int * * p2; int *p3;都是合
3、法的定义指针变量的语句B.指针变量只能通过求地址运算符(与 p=/0;是等价的语句D.语句 p=NULL;执行后,指针 p 指向地址为 0 的存储单元6.以下叙述中正确的是_。(分数:2.00)A.即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同B.如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息C.设变量 p 是一个指针变量,则语句 p=0;是非法的,应该使用 p=NULL;D.指针变量之间不能用关系运算符进行比较7.有以下程序: #include stdio.h main( ) int n, *p=NULL; *p= printf(“Input n:“
4、); scanf(“%d“, printf(“output n:“); printf(“%d/n“,p); 该程序试图通过指针 p 为变量 n 读入数据并输出,但程序有多处错误,以下语句正确的是_。(分数:2.00)A.int n,*p=NULL;B.*p=C.scanf(“%d“,8.若有定义语句:double x,y,*px,*py;执行了 px= py=之后,正确的输入语句是_。(分数:2.00)A.scanf(“%if%le“,px,py);B.scanf(“%f%f“ C.scanf(“%f%f“,x,y);D.scanf(“%1f%1f“,x,y);9.以下程序段完全正确的是_。(
5、分数:2.00)A.int *p; scanf(“%d“,B.int *p; scanf(“%d“,p);C.int k,*p= scanf(“%d“,p);D.int k, *p; *p= scanf(“%d“,p);10.若有定义语句: int a23,*p3; 则以下语句中正确的是_。(分数:2.00)A.p=a;B.p0=a;C.p0=D.p1=11.若有以下程序: #include stdio.h int *f(int *s,int *t) int *k; if(*s*t) k=s; s=t; t=k; return s; main( ) int i=3,j=5, *p= r=f(p
6、,q); printf(“%d,%d,%d,%d,%d/n“,i,j,*p,*q,*r); 则程序的输出结果是_。(分数:2.00)A.3,5,5,3,5B.3,5,3,5,5C.5,3,5,3,5D.5,3,3,5,512.有以下程序: #include stdio.h #include stdlib.h int fun(int n) int *p; p=(int*)malloc(aizeof(int); *p=n; return *p; main( ) int a; a=fun(10); printf(“%d/n“,a+fun(10); 程序的运行结果是_。(分数:2.00)A.0B.10
7、C.20D.出错13.有以下程序: #include stdio.h void fun(int a, int n) int i,t; for(i=0;in/2;i+ +) t=ai; ai=an-1-i; an-1-i=t; main( ) int k10=1,2,3,4,5,6,7,8,9,10,i; fun(k,5); for(i=2; i8; i+ +) printf(“%d“,ki); printf(“/n“); 程序的运行结果是_。(分数:2.00)A.321678B.876543C.1098765D.34567814.有以下程序: #include stdio.h #define
8、N 4 void fun(int aN, int b) int i; for(i=0; iN; i+ +) bi=aii-aiN-1-i; main( ) int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,yN,i; fun(x,y); for(i=0;iN; i+ +) printf(“%d,“,yi); printf(“/n“); 程序运行后的输出结果是_。(分数:2.00)A.-3,-1,1,3,B.-12,-3,0,0,C.0,1,2,3,D.-3,-3,-3,-3,15.有以下程序: #include stdio.h #include st
9、dlib.h void fun(int *p1, int *p2, int *s) s=(int * )malloc(sizeof(int); *s=*p1+*(p2+); main( ) int a2=1,2,b2=10,20,*s=a; fun(a,b,s); printf(“%d/n“, *s); 程序运行后的输出结果是_。(分数:2.00)A.11B.10C.1D.216.有以下程序: #include stdio.h #include string.h main( ) char str20=“One * World“,“One * Dream!“,*p=str1; printf(“%
10、d,“,strlen(P); printf(“%s/n“,p); 程序运行后的输出结果是_。(分数:2.00)A.10, One * Dream!B.9, One * Dream!C.9,One * WorldD.10,One * World17.若有定义: int w35; 则以下不能正确表示该数组元素的表达式是_。(分数:2.00)A.*( printf(“%s/n“,*p); main( ) char * a=“Morning“, “Mtemoon“, “Evening“, “Night“; fun(a); 程序的运行结果是_。(分数:2.00)A.AfternoonB.fternoon
11、C.MorningD.oming19.有以下程序,程序中库函数 islower(ch)用以判断 ch 中的字母是否为小写字母: #include stdio.h #include void fun(char *p)int i=0;while(pi)if(pi=“i+ +;main( )char s1100=“ab cd EFG!“;fun(s1);printf(“%s/n“,s1);程序运行后的输出结果是_。 A.ab cd EFg! B.Ab Cd EFg! C.ab cd EFG! D.aB cD EFG!A B C D D解析 调用 fun 函数后,实参数组名 s1 传给形参指针 p,p
12、 也指向数组 sl。fun 函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母,就把前一个字符转换为大写。程序中语句 pi-1=pi-1-“a“+“A“;即 pi-1=pi-1=32,意思是将 pi-1中的字符转换为大写。因此 D选项正确。(分数:2.00)A.ab cd EFg!B.Ab Cd EFg!C.ab cd EFG!D.aB cD EFG!20.有以下程序: #include stdio.h void fun(char * * p) int i; for(i=0; i4; i+ + ) printf(“%s“,pi); main( ) char *s
13、6=“ABCD“,“EFGH“,“LIKL“,“MNOP“,“QRST“,“UVWX“; fun(s); printf(“/n“ ); 程序运行后的输出结果是_。(分数:2.00)A.ABCDEFGHIJKLB.ABCDC.AEIMD.ABCDEFGHUKLMNOP21.下列语句组中,正确的是_。(分数:2.00)A.char *s;s=*Olympic“;B.char s 7;s=“Olympic“;C.char *s;s=“Olympic“;D.char s7; s=“Olympic“;22.有以下程序(注:字符 a 的 ASCII 码值为 97): #include stdio.h ma
14、in( ) char *s=“abc“; do printf(“%d“, *s%10); +s; while(*s); 程序运行后的输出结果是_。(分数:2.00)A.789B.abcC.7890D.97989923.设有定义: char *c; 以下选项中能够使 c 正确指向一个字符串的是_。(分数:2.00)A.char str=“string“;c=str;B.scanf(“%s“,c);C.c=getchar();D.*c=*string“;24.设有定义语句: int(*f)(int); 则以下叙述正确的是_。(分数:2.00)A.f 是基类型为 int 的指针变量B.f 是指向函数
15、的指针变量,该函数具有一个 int 类型的形参C.f 是指向 int 类型一维数组的指针变量D.f 是函数名,该函数的返回值是基类型为 int 类型的地址25.有以下程序: #include stdio.h int add(int a,int b)return(a+b); main( ) int k,(*f)(), a=5,b=10; f=add; 则以下函数调用语句错误的是_。(分数:2.00)A.k=f(a,b);B.k=add(a,b);C.k=(*f)(a,b);D.k=*f(a,b);26.有以下程序: #include stdio.h #include stdlib.h main(
16、 ) int *a, *b, *c; a=b=c=(int *)malloc(sizeof(int); *a=1; *b=2, *c=3; a=b; printf(“%d,%d,%d/n“,*a,*b,*c); 程序运行后的输出结果是_。(分数:2.00)A.1,1,3B.2,2,3C.1,2,3D.3,3,327.以下语句中存在语法错误的是_。(分数:2.00)A.char ss620; ss1=“right?“;B.char ss()20=“right?“;C.char *ss6; ss1=“right?“;D.char *ss()=“right?“;28.若有以下程序: #include
17、 stdio.h int k=7; void f(int * * s) int * t= * s=t; printf(“%d,%d,%d,“,k,* t,* * s); main( ) int i=3,*p= f(r); printf(“%d,%d,%d/n“,i,*p,* *r); 则程序的输出结果是_。(分数:2.00)A.3,3,3,7,7,7B.3,7,7,7,7,7C.7,7,7,3,3,3D.7,7,7,3,7,729.若有以下程序: #include stdio.h int k=7,m=5; void f(int * * s) int *t= s= *s= printf(“%d,
18、%d,%d,“,k,*t,* *s); main( ) int i=3,*p= f(r); printf(“%d,%d,%d/n“,i,*p,* * r); 则程序的输出结果是_。(分数:2.00)A.7,5,7,3,5,7,B.7,5,7,3,3,3,C.7,5,5,3,3,3,D.7,7,5,3,3,3,30.以下叙述中正确的是_。(分数:2.00)A.在 C 语言中,预处理命令行都以“#”开头B.预处理命令行必须位于 C 源程序的起始位置C.#include stdio.h必须放在 C 程序的开头D.C 语言的预处理不能实现宏定义和条件编译的功能31.以下关于宏的叙述中正确的是_。(分数
19、:2.00)A.宏替换没有数据类型限制B.宏定义必须位于源程序中所有语句之前C.宏名必须用大写字母表示D.宏调用比函数调用耗费时间32.有以下程序: #include stdio.h #define PT 3.5; #define S(x) PT* x * x; main( ) int a=1, b=2; printf(“%4.1f/n“,S(a+b); 程序运行后的输出结果是_。(分数:2.00)A.7.5B.31.5C.程序有错无输出结果D.14.033.若程序中有宏定义行: #define N 100 则以下叙述中正确的是_。(分数:2.00)A.宏定义行中定义了标识符 N 的值为整数
20、100B.在编译程序对 C 源程序进行预处理时用 100 替换标识符 NC.上述宏定义行实现将 100 赋给标识符 ND.在运行时用 100 替换标识符 N34.有以下程序: #include stdio.h #define S(x) 4* (x)* x+1 main( ) int k=5,j=2; printf(“%d/n“,S(k+j); 程序运行后的输出结果是_。(分数:2.00)A.33B.197C.143D.2835.有以下程序: #include stdio.h #define SUB(a) (a)-(a) main( ) int a=2,b=3,c=5,d; d=SUB(a+b)
21、*c; printf(“%d/n“,d); 程序运行后的输出结果是_。(分数:2.00)A.0B.-12C.-20D.1036.有以下程序: #include stdio.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); 程序运行后的输出结果是_。(分数:2.00)A.10,64B.10,10C.64,10D.64,6437.有以下程序: #include stdio.h #define N 5 #define M N+1 #define f(x) (x*M) main( )
22、 int i1,i2; i1=f(2); i2=f(1+1); printf(“%d%d/n“,i1,i2); 程序的运行结果是_。(分数:2.00)A.12 7B.12 12C.11 11D.11 738.若有以下程序: #include stdio.h #define S(x) x*x #define T(x) S(x)*S(x) main( ) int k=5,j=2; printf(“%d,%d/n“,S(k+j),T(k+j); 则程序的输出结果是_。(分数:2.00)A.17,289B.49,2401C.17,37D.49,28939.若有以下程序: #include stdio.
23、h #define S(x) (x)*(x) #define T(x) S(x)/S(x)+1 main( ) int k=3,j=2; printf(“%d,%d/n“, S(k+j),T(k+j); 则程序的输出结果是_。(分数:2.00)A.11,2B.25,2C.11,12D.25,2640.有以下程序: #include stdio.h #define N 2 #define M N+1 #define NUM (M+1) * M/2 main( ) printf(“%d/n“,NuM); 程序运行后的输出结果是_。(分数:5.00)A.4B.8C.9D.641.有以下程序: #in
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 语言 113 答案 解析 DOC
