欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1326429       资源大小:101.50KB        全文页数:36页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、二级 C 语言笔试选择题-1 及答案解析(总分:93.00,做题时间:90 分钟)一、选择题(总题数:55,分数:93.00)1.有以下程序#includestdio.hmain()int a34=(1,3,5,7,9,11,13,15,17,19,21,23,(*p)4=a,i,j,k=0;for(i=0;i3;i+)for(j=0;j2;j+)k=k+*(*(p+i)+j);printf(“%d/n“,k);程序运行后的输出结果是_。A60 B68 C99 D108(分数:2.00)A.B.C.D.2.以下不能将 s 所指字符串正确复制到 t 所指存储空间的是_。Ado*t+=*s+;wh

    2、ile(*s); Bfor(i=0;ti=si;i+);Cwhile(*t=*s)t+;s+; Dfor(i=0,j=0;ti+=sj+;);(分数:2.00)A.B.C.D.3.有以下函数int fun(char*x,char*y)int n=0;while(*x=*y)*x!=/0)x+;y+;n+;return n;函数的功能是_。A统计 x 和 y 所指字符串中最前面连续相同的字符个数B查找 x 和 y 所指字符串中是否有/0C将 y 所指字符串赋给 x 所指存储空间D统计 x 和 y 所指字符串中相同的字符个数(分数:2.00)A.B.C.D.4.有以下程序#includestdio

    3、.hmain()char ch=“uvwxyz“,*pc;pc=ch;printf(“%c/n“,*(pc+5);程序运行后的输出结果是_。Az B0C元素 ch5的地址 D字符 y 的地址(分数:2.00)A.B.C.D.5.设有如下程序段#includestdio.hchar s20=“Beijing“,*p;p=s;则执行 p=s;语句后,以下叙述正确的是_。A可以用*p 表示 s0Bs 数组中元素的个数和 p 所指字符串长度相等Cs 和 p 都是指针变量D数组 s 中的内容和指针变量 p 中的内容相同(分数:2.00)A.B.C.D.6.若有以下程序段char str412=“aa“,

    4、“bbb“,“ccccc“,“d“,*strp4;int i;for(i=0;i4;i+)strpi=stri;不能正确引用字符串的选项是_。Astrp Bstr0 Cstrp3 D*strp(分数:2.00)A.B.C.D.7.有以下程序#includestdio.hmain()int a5=2,4,6,8,10,*p,*k;p=a;k=p;printf(“%d“,*(p+);printf(“%d/n“,*k);程序运行后的输出结果是_。A2 4 B4 4 C2 2 D4 6(分数:2.00)A.B.C.D.8.设有以下函数:void fun(int n,char*s)则下面对函数指针的定义

    5、和赋值均正确的是_。Avoid(*pf)(int,char*);pf=fun; Bvoid*pf();pf=fun;Cvoid*pf();*pf=fun; Dvoid(*pf)(int,chad;)pf=fun;(分数:2.00)A.B.C.D.9.以下叙述中正确的是_。A在 C 语言中,预处理命令行都以”#”开头B预处理命令行必须位于 C 源程序的起始位置C#includestdio.h必须放在 C 程序的开头DC 语言的预处理不能实现宏定义和条件编译的功能(分数:2.00)A.B.C.D.10.以下关于宏的叙述中正确的是_。A宏替换没有数据类型限制 B宏定义必须位于源程序中所有语句之前C宏

    6、名必须用大写字母表示 D宏调用比函数调用耗费时间(分数:2.00)A.B.C.D.11.若程序中有宏定义行:#defineN 100则以下叙述中正确的是_。A在编译程序对 C 源程序进行预处理时用 100 替换标识符 NB宏定义行中定义了标识符 N 的值为整数 100C上述宏定义行实现将 100 赋给标识符 ND在运行时用 100 替换标识符 N(分数:2.00)A.B.C.D.12.有以下程序#includestdio.h#define N 2#define M N+1#define NUM(M+1)*M/2main()printf(“%d/n“,NUM);程序运行后的输出结果是_。A8 B

    7、4 C9 D6(分数:2.00)A.B.C.D.13.有以下程序#includestdio.h#define PT 3.5;#define S(x)PT*x*x;main()int a=1,b=2;printf(“%4.1f/n“,S(a+b):程序运行后的输出结果是_。A程序有错无输出结果 B31.5C7.5 D14.0(分数:2.00)A.B.C.D.14.设有宏定义:#define IsDIV(k,n)(k%n=1)?1:0)且变量 m 已正确定义并赋值,则宏调用:IsDIV(m,5)IsDIV(m,7)为真时所要表达的是_。A判断 m 被 5 和 7 整除是否都余 1 B判断 m 是否

    8、能被 5 和 7 整除C判断 m 被 5 或者 7 整除是否余 1 D判断 m 是否能被 5 或者 7 整除(分数:2.00)A.B.C.D.15.若有以下程序#includestdio.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);则程序的输出结果是_。A17,37 B49,2401 C17,289 D49,289(分数:2.00)A.B.C.D.16.若有以下程序#includestdio.h#define S(x)(x)*(x)#define T(x)S(x)/S

    9、(x)+1main()int k=3,j=2;printf(“%d,%d/n“,S(k+j),T(k+j);则程序的输出结果是_。A25,26 B25,2 C11,12 D11,2(分数:2.00)A.B.C.D.17.有以下程序#includestdio.h#define SUB(X,Y)(X+1)*Ymain()int a=3,b=4;printf(“%d/n“,SUB(a+,b+);程序运行后的输出结果是_。A16 B20 C12 D25(分数:2.00)A.B.C.D.18.下面结构体的定义语句中,错误的是_。Astruct ordint x;int y;int z;struct or

    10、d a; Bstruct ordint x;int y;int z;struct ord a;Cstruct ord int x;int y;int z;a; Dstreetint x;int y;int z;)a;(分数:2.00)A.B.C.D.19.以下结构体类型说明和变量定义中正确的是_。Atypedef struct int n;char c;REC;REC t1,t2;Bstruct REC;int n;char c;);REC t1,t2;Ctypedef struct REC;int n=0;char c=A;t1,t2;Dstructint n;char c;REC;REC

    11、t1,t2;(分数:2.00)A.B.C.D.20.有以下程序#includestdio.hmain()struct STUchar name9;char sex;double score2;struct STU a=“Zhao“,m,85.0,90.0,b=“Qian“,f,95.0,92.0;b=a;printf(“%s,%c,%2.0f,%2.0f/n“,b.name,b.sex,b.score0,b.score1);程序的运行结果是_。AZhao,m,85,90 BQian,m,85,90 CZhao,f,95,92 DQian,f,95,92(分数:2.00)A.B.C.D.21.有

    12、以下程序#includestdio.htypedef structint b,p;A;void f(A c)/*注意:c 是结构变量名*/int j;c.b+=1;c.p+=2;main()int i;A a=1,2;f(a);printf(“%d,%d/n“,a.b,a.p);程序运行后的输出结果是_。A1,2 B2,4 C1,4 D2,3(分数:2.00)A.B.C.D.22.有以下定义和语句struct workersint num;char name20;char c;structint day;int month;int year;s;struct workers w,*pw;pw=

    13、w;能给 w 中 year 成员赋 1980 的语句是_。Aw.s.year=1980; Bw.year=1980; Cpw-year=-1980; D*pw.year=1980;(分数:2.00)A.B.C.D.23.设有定义:structchar mark12;int num1;double num2;t1,t2;若变量均已正确赋初值,则以下语句中错误的是_。At2.mark=t1.mark; Bt2.num1=t1.num1; Ct1=t2; Dt2.num2=t1.num2;(分数:2.00)A.B.C.D.24.若有以下程序#includestdio.h#includestdlib.

    14、h#includestring.htypedef struct stuchar*name,gender;int score;STU;void f(char*p)p=(char*)malloc(10);strcpy(p,“Qian“);main()STU a=NULL,m,290,b;a.name=(char*)malloc(10);strcpy(a.name,“Zhao“);b=a;f(b.name);b.gender=f;b.score=350;printf(“%s,%c,%d,“,a.name,a.gender,a.score);printf(“%s,%c,%d/n“,b.name,b.g

    15、ender,b.score);则程序的输出结果是_。AZhao,m,290,Zhao,f,350 BZhao,m,290,Qian,f,350CQian,f,350,Qian,f,350 DQian,m,290,Qian,f,350(分数:2.00)A.B.C.D.25.有以下程序#includestdio.hstruct Sint a,b;data2=10,100,20,200;main()struct S p=data1;printf(“%d/n“,+(p.a);程序运行后的输出结果是_。A21 B11 C20 D10(分数:2.00)A.B.C.D.26.以下叙述中正确的是_。A在调用函

    16、数时,可以将结构体变量作为实参传给函数B函数的返回值不能是结构体类型C函数的返回值不能是结构体指针类型D结构体数组不能作为参数传给函数(分数:2.00)A.B.C.D.27.以下叙述中正确的是_。A结构体中可以含有指向本结构体的指针成员B结构体变量的地址不能作为实参传给函数C结构体数组名不能作为实参传给函数D即使是同类型的结构体变量,也不能进行整体赋值(分数:2.00)A.B.C.D.28.有以下程序#includestdio.hstruct Sint n;int a20;void f(struct S*P)int i,j,t;for(i=0;ip-n-1;i+)for(j=i+1;jp-n;

    17、j+)if(p-aip-aj)t=p-ai;p-ai=p-aj;p-aj=t;main()int i;struct S s=10,2,3,1,6,8,7,5,4,10,9;f(s);for(i=0;is.n;i+)printf(“%d,“,s.ai);程序运行后的输出结果是_。A1,2,3,4,5,6,7,8,9,10, B10,9,8,7,6,5,4,3,2,1,C2,3,1,6,8,7,5,4,10,9, D10,9,8,7,6,1,2,3,4,5,(分数:2.00)A.B.C.D.29.有以下程序#includestdio.h#includestring.htypedef structc

    18、har name9;char sex;float score2; STU;STU f(STU a)STU b=“Zhao“,m,85.0,90.0;int i;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i2;i+)a.seorei=b.scorei;return a;main()STU c=“Qian“,f1,95.0,92.0,d;d=f(c);printf(“%s,%c,%2.0f,%2.0f/n“,d.name,d.sex,d.score0,d.score1);程序的运行结果是_。AZhao,m,85,90 BQian,m,85,90 CQian

    19、,f,95,92 DZhao,f,95,92(分数:2.00)A.B.C.D.30.若有以下程序#includestdio.htypedef struct stuchar name10,gender;int score;STU;void f(STU a,STU b)b=a;printf(“%s,%c,%d,“,b.name,b.gender,b.score);main()STU a=“Zhao“,m,290,b=“Qian“,f,350;f(a,b);printf(“%s,%c,%d/n“,b.name,b.gender,b.score;则程序的输出结果是_。AZhao,m,290,Qian,

    20、f,350 BZhao,m,290,Zhao,m,290CQian,f,350,Qian,f,350 DZhao,m,290,Zhao,f,350(分数:2.00)A.B.C.D.31.有以下结构体说明、变量定义和赋值语句struct STDchar name10;int age;char sex;s5,*ps;ps=s0;则以下 scanf 函数调用语句有错误的是_。Ascanf(“%d“,ps-age);Bscanf(“%d“,s0.age);Cscanf(“%c“,(ps-sex);Dscanf(“%s“,s0.name;(分数:2.00)A.B.C.D.32.有以下程序#include

    21、stdio.hstruct ordint x,y;dt2=1,2,3,4;main()struct ord*p=dt;printf(“%d,“,+(p-x);printf(“%d/n“,+(p-y);程序运行后的输出结果是_。A2,3 B4,1 C3,4 D1,2(分数:2.00)A.B.C.D.33.若有以下程序段struct st int n;struct st*next;struct st a3=5,a1,7,a2,9,/0,*p;p=a0;则以下选项中值为 6 的表达式是_。A+(p-n) B(*p).n Cp-n+ Dp-n(分数:2.00)A.B.C.D.34.有以下程序#incl

    22、udestdio.h#includestdlib.hmain()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);程序运行后的输出结果是_。A3,3,3 B2,2,3 C1,2,3 D1,1,3(分数:2.00)A.B.C.D.35.有以下程序#includestdio.h#includestdlib.hvoid fun(int*p1,int*p2,int*s)s=(int*)malloe(sizeof(int);*s=*p1+*(p2+);main()int

    23、a2=1,2,b2=10,20,*s=a;fun(a,b,s);printf(“%d/n“,*s);程序运行后的输出结果是_。A1 B10 C11 D2(分数:2.00)A.B.C.D.36.有以下程序段int *p;p=_malloc(sizeof(int);若要求使 p 指向一个 int 型的动态存储单元,在横线处应填入的是_。A(int*) Bint Cint* D(*int)(分数:2.00)A.B.C.D.37.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量 s、p、q 均已正确定义,并用于指向链表结点,指针变量 s 总是作为头指针指向链表的第一个结点。(分数:2.00)

    24、A.B.C.D.38.为了建立如图所示的存储结构(即每个结点含两个域,data 是数据域,next 是指向结点的指针域),则在处应填入的选项是_。Astruct link*next; Blink next; Clink*next; Dstruct link next;(分数:2.00)A.B.C.D.39.下面选项中关于位运算的叙述正确的是_。A位运算的对象只能是整型或字符型数据 B位运算符都需要两个操作数C左移运算的结果总是原操作数据 2 倍 D右移运算时,高位总是补 0(分数:1.00)A.B.C.D.40.下面关于位运算符的叙述,正确的是_。A表示“按位与”的运算 B#表示“按位异或”的

    25、运算C|表示“按位或”的运算 D表示“按位异或”的运算(分数:1.00)A.B.C.D.41.有以下程序#includestdio.hmain()unsigned char a=8,c;c=a3;printf(“%d/n“,c);程序运行后的输出结果是_。A1 B16 C32 D0(分数:1.00)A.B.C.D.42.设有以下语句int a=1,b=2,c;c=a(b2);执行后,c 的值为_。A9 B7 C8 D6(分数:1.00)A.B.C.D.43.有以下程序#includestdio.hmain()unsigned char a=2,b=4,e=5,d;d=a|b;d=c;print

    26、f(“%d/n“,d);程序运行后的输出结果是_。A4 B3 C5 D6(分数:1.00)A.B.C.D.44.有以下程序#includestdio.hmain()int i=1;i=ii;printf(“%d/n“,i);程序运行后的输出结果是_。A0 B-1 C1 D7(分数:1.00)A.B.C.D.45.若有定义语句int h=2;则表达式(b2)/(3|b)的值是()。A8 B2 C4 D0(分数:1.00)A.B.C.D.46.下面选项中关于“文件指针”概念的叙述正确的是_。A文件指针是程序中用 FILE 定义的指针变量B文件指针就是文件位置指针,表示当前读写数据的位置C文件指针指

    27、向文件在计算机中的存储位置D把文件指针传给 fscanf 函数,就可以向文本文件中写入任意的字符(分数:1.00)A.B.C.D.47.以下叙述中正确的是_。A当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失B打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1 个数据DC 语言中的文件是流式文件,凶此只能顺序存取数据(分数:1.00)A.B.C.D.48.下列关于 C 语言文件的叙述中正确的是_。A文件由数据序列组成,可以构成二进制文件或文本文件B文件由结构序列组成,可以构成二进

    28、制文件或文本文件C文件由一系列数据依次排列组成,只能构成二进制文件D文件由字符序列组成,其类型只能是文本文件(分数:1.00)A.B.C.D.49.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为_。A非 0 值 B/0 C0 DNULL(分数:1.00)A.B.C.D.50.若 fp 已定义为指向某文件的指针,且没有读到该文件的末尾,则 C 语言函数 feof(fp)的函数返回值是_。A0 B非 0 C-1 DEOF(分数:1.00)A.B.C.D.51.以下程序依次把从终端输入的字符存放到 f 文件中,用#作为结束输入的标志,则在横线处应填入的选项

    29、是_。#includestdio.hmain()FILE*fp;char ch;fp=fopen(“fname“,“w“);while(ch=getehar()!=#)fputo(_);fclose(fp);Ach,fp Bfp,ch Cch Dch,“fname/(分数:1.00)A.B.C.D.52.有以下程序#includestdio.hmain()FILE *f;f=fopen(“filea.txt“,“w“);fprintf(f,“abc“);fclose(f);若文本文件 filea.txt 中原有内容为:hello,则运行以上程序后,文件 filea.txt 中的内容为Aabc

    30、Babclo Chelloabc Dabchcllo(分数:1.00)A.B.C.D.53.有以下程序#includestdio.hmain()FILE*fp;int i,a6=1,2,3,4,5,6;fp=fopen(“d2.dat“,“w+“);for(i=0;i6;i+)fptintf(fp,“%d/n“,ai);rewind(fp);for(i=0;i6;i+)fscanf(fp,“%d“,a5-i);fclose(fp);for(i=0;i6;i+)printf(“%d,“,ai);程序运行后的输出结果是_。A6,5,4,3,2,1, B1,2,3,4,5,6, C4,5,6,1,2

    31、,3, D1,2,3,3,2,1,(分数:1.00)A.B.C.D.54.有以下程序#includestdio.hmain()FILE*fp;int a10=1,2,3,0,0,i;fp=fopen(“d2.dat“,“wb“);fwrite(a,sizeof(int),5,fp);fwrite(a,sizeof(int),5,fp);fclose(fp);tp=fopen(“d2.dat“,“rb“);fread(a,sizeof(int),10,fp);fclose(fp);for(i=0;i10;i+)printf(“%d,“,ai);程序的运行结果是_。A1,2,3,0,0,1,2,3

    32、,0,0, B1,2,3,1,2,3,0,0,0,0,C123,0,0,0,0,123,0,0,0,0, D1,2,3,0,0,0,0,0,0,0,(分数:1.00)A.B.C.D.55.有以下程序#includestdio.hmain()FILE*fp;char str10;fp=fopen(“myfile.dat“,“w“);fputs(“abe“,fp);fclose(fp);fp=fopen(“myfile.dat“,“a+t“);fprintf(fp,“%d“,28);rewind(fp);fscanf(fp,“%s“,str);puts(str);fclose(fp);程序运行后的

    33、输出结果是_。Aabe28 B28c Cabc D因类型不一致而出错(分数:1.00)A.B.C.D.二级 C 语言笔试选择题-1 答案解析(总分:93.00,做题时间:90 分钟)一、选择题(总题数:55,分数:93.00)1.有以下程序#includestdio.hmain()int a34=(1,3,5,7,9,11,13,15,17,19,21,23,(*p)4=a,i,j,k=0;for(i=0;i3;i+)for(j=0;j2;j+)k=k+*(*(p+i)+j);printf(“%d/n“,k);程序运行后的输出结果是_。A60 B68 C99 D108(分数:2.00)A. B

    34、.C.D.解析:解析 k 累加 a00,a01,a10,a11,a20,a21,结果为 60,答案选择 A。2.以下不能将 s 所指字符串正确复制到 t 所指存储空间的是_。Ado*t+=*s+;while(*s); Bfor(i=0;ti=si;i+);Cwhile(*t=*s)t+;s+; Dfor(i=0,j=0;ti+=sj+;);(分数:2.00)A. B.C.D.解析:解析 do*t+=*s+;while(*s);不能。因为当*s=0 时,while(*s)跳出循环,这样字符串结束标志/0 没有复制给*t,造成*t 不完整。注意,*t+=*s+是先执行*t=*s,然后才进行 t=t

    35、+1,s=s+1。选项 B、C、D 都能将/0 复制过去。3.有以下函数int fun(char*x,char*y)int n=0;while(*x=*y)*x!=/0)x+;y+;n+;return n;函数的功能是_。A统计 x 和 y 所指字符串中最前面连续相同的字符个数B查找 x 和 y 所指字符串中是否有/0C将 y 所指字符串赋给 x 所指存储空间D统计 x 和 y 所指字符串中相同的字符个数(分数:2.00)A. B.C.D.解析:解析 本题中由循环条件可知,当遇到“/0”或“x 与 y 所指的字符的值不相等”其中的一个条件时就结束循环,因此本题函数的功能是统计 x 和 y 所指

    36、字符串中最前面连续相同的字符个数。4.有以下程序#includestdio.hmain()char ch=“uvwxyz“,*pc;pc=ch;printf(“%c/n“,*(pc+5);程序运行后的输出结果是_。Az B0C元素 ch5的地址 D字符 y 的地址(分数:2.00)A. B.C.D.解析:解析 main 函数输出字符串第 6 个元素对应的数据,所以答案为 A。5.设有如下程序段#includestdio.hchar s20=“Beijing“,*p;p=s;则执行 p=s;语句后,以下叙述正确的是_。A可以用*p 表示 s0Bs 数组中元素的个数和 p 所指字符串长度相等Cs

    37、和 p 都是指针变量D数组 s 中的内容和指针变量 p 中的内容相同(分数:2.00)A. B.C.D.解析:解析 本题主要考查的是字符数组、字符串和字符指针的一些概念。数组元素个数,是在定义数组的时候确定的,本题的 s 数组元素个数是 20。而字符串长度,是从该字符串的第 1 个字符开始,一直到/0 字符为止,所历经的字符个数,/0 不算在内。所以本题 p 所指字符串(“Beijing“)的长度为 7。因此选项 B 的叙述不正确。s 是数组名,而不是指针变量,因此选项 C 不正确。数组 s 中除了包含字符串“Beijing”外,还包含其后的 20 个以内字节的内容,而指针变量 p 中包含的只

    38、是数组 s 的首地址。因此选项 D 的说法也不正确。6.若有以下程序段char str412=“aa“,“bbb“,“ccccc“,“d“,*strp4;int i;for(i=0;i4;i+)strpi=stri;不能正确引用字符串的选项是_。Astrp Bstr0 Cstrp3 D*strp(分数:2.00)A. B.C.D.解析:解析 strp 是字符串指针数组,不能作为字符串的引用。7.有以下程序#includestdio.hmain()int a5=2,4,6,8,10,*p,*k;p=a;k=p;printf(“%d“,*(p+);printf(“%d/n“,*k);程序运行后的输

    39、出结果是_。A2 4 B4 4 C2 2 D4 6(分数:2.00)A. B.C.D.解析:解析 *(p+),表达式为 a0的值,为 2,执行后 p 指向 a1,*k 为*p 实际为 a1,输出 4,所以选择 A。8.设有以下函数:void fun(int n,char*s)则下面对函数指针的定义和赋值均正确的是_。Avoid(*pf)(int,char*);pf=fun; Bvoid*pf();pf=fun;Cvoid*pf();*pf=fun; Dvoid(*pf)(int,chad;)pf=fun;(分数:2.00)A. B.C.D.解析:解析 赋值给函数指针,需要函数的参数一致,返回值

    40、一致,才可以赋值。选项 A 正确。9.以下叙述中正确的是_。A在 C 语言中,预处理命令行都以”#”开头B预处理命令行必须位于 C 源程序的起始位置C#includestdio.h必须放在 C 程序的开头DC 语言的预处理不能实现宏定义和条件编译的功能(分数:2.00)A. B.C.D.解析:解析 预处理命令行、#include 没有必要放在程序的开头部分,C 语言可以实现宏定义和条件编译,所以选择 A。10.以下关于宏的叙述中正确的是_。A宏替换没有数据类型限制 B宏定义必须位于源程序中所有语句之前C宏名必须用大写字母表示 D宏调用比函数调用耗费时间(分数:2.00)A. B.C.D.解析:

    41、解析 宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头,因此 B 选项中宏定义必须位于源程序中所有语句之前是错误的。宏名一般用大写,但不是必须用大写,因此 C 选项错误。宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值),因此 D 选项错误。11.若程序中有宏定义行:#defineN 100则以下叙述中正确的是_。A在编译程序对 C 源程序进行预处理时用 100 替换标识符 NB宏定义行中定义了标识符 N 的值为整数 100C上述宏定义行实现将 100 赋给标识符 ND在运行时用 100 替换标识符 N(分数:2.00)A. B.C.D

    42、.解析:解析 常量定义在编译时替换,所以答案选择 A。12.有以下程序#includestdio.h#define N 2#define M N+1#define NUM(M+1)*M/2main()printf(“%d/n“,NUM);程序运行后的输出结果是_。A8 B4 C9 D6(分数:2.00)A. B.C.D.解析:解析 NUM 展开后,(N+1+1)*N+1/2 值为 8。13.有以下程序#includestdio.h#define PT 3.5;#define S(x)PT*x*x;main()int a=1,b=2;printf(“%4.1f/n“,S(a+b):程序运行后的输

    43、出结果是_。A程序有错无输出结果 B31.5C7.5 D14.0(分数:2.00)A. B.C.D.解析:解析 宏定义不是 C 语句,末尾不需要有分号。因此语句“printf(“%4.1fn”,S(a+b); “展开后为“printf(“%4.1fn“,3.5;*a+b*a+b;); “,所以程序会出现语法错误。14.设有宏定义:#define IsDIV(k,n)(k%n=1)?1:0)且变量 m 已正确定义并赋值,则宏调用:IsDIV(m,5)IsDIV(m,7)为真时所要表达的是_。A判断 m 被 5 和 7 整除是否都余 1 B判断 m 是否能被 5 和 7 整除C判断 m 被 5 或

    44、者 7 整除是否余 1 D判断 m 是否能被 5 或者 7 整除(分数:2.00)A. B.C.D.解析:解析 IsDIV(k,n)判断 k 被 n 整除是否余 1,所以 IsDIV(m,5) IsDIV(m,7)就是判断 m 被 5 和7 整除是否都余 1。15.若有以下程序#includestdio.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);则程序的输出结果是_。A17,37 B49,2401 C17,289 D49,289(分数:2.00)A. B.C.D.解

    45、析:解析 S(k+j)展开后为 5+2*5+2 值为 17,T(k+j)展开后 5+2*5+2*5+2*5+2 值为 37,所以答案选择A。16.若有以下程序#includestdio.h#define S(x)(x)*(x)#define T(x)S(x)/S(x)+1main()int k=3,j=2;printf(“%d,%d/n“,S(k+j),T(k+j);则程序的输出结果是_。A25,26 B25,2 C11,12 D11,2(分数:2.00)A. B.C.D.解析:解析 S(k+j)展开后,(3+2)*(3+2)值为 25,T(k+j)展开后,(3+2)*(3+2)/(3+2)*

    46、(3+2)+1 值为26 答案选择 A。17.有以下程序#includestdio.h#define SUB(X,Y)(X+1)*Ymain()int a=3,b=4;printf(“%d/n“,SUB(a+,b+);程序运行后的输出结果是_。A16 B20 C12 D25(分数:2.00)A. B.C.D.解析:解析 SUB 展开后,(a+1)*b+,a+表达式的值为 3,b+表达式的值为 4,所以(3+1)*4 值为16。18.下面结构体的定义语句中,错误的是_。Astruct ordint x;int y;int z;struct ord a; Bstruct ordint x;int y;int z;struct ord a;C


    注意事项

    本文(【计算机类职业资格】二级C语言笔试选择题-1及答案解析.doc)为本站会员(registerpick115)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开