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

    【计算机类职业资格】二级C语言真题(2)及答案解析.doc

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

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

    【计算机类职业资格】二级C语言真题(2)及答案解析.doc

    1、二级 C 语言真题(2)及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是_。(分数:1.00)A.一个算法的空间复杂度大,则其时间复杂度也必定大B.一个算法的空间复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.算法的时间复杂度与空间复杂度没有直接关系2.下列叙述中正确的是_。(分数:1.00)A.循环队列中的元素个数随队头指针与队尾指针的变化而动态变化B.循环队列中的元素个数随队头指针的变化而动态变化C.循环队列中的元素个数随队尾指针的变化而动态变化D.以上说法都不对3.一棵二叉树中共有

    2、80 个叶子节点与 70 个度为 1 的节点,则该二叉树中的总节点数为_。(分数:1.00)A.219B.229C.230D.2314.对长度为 10 的线性表进行冒泡排序,最坏情况下需要比较的次数为_。(分数:1.00)A.9B.10C.45D.905.构成计算机软件的是_。(分数:1.00)A.源代码B.程序和数据C.程序和文档D.程序、数据及相关文档6.软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是_。(分数:1.00)A.测试B.设计C.可行性研究D.实现7.下面不能作为结构化方法软件需求分析工具的是_。(分数:1.00)A.系统结构图B.数据字典(DD)C

    3、.数据流程图(DFD 图)D.判定表8.在关系模型中,每一个二维表称为一个_。(分数:1.00)A.关系B.属性C.元组D.主码(键)9.若实体 A 和 B 是一对多的联系,实体 B 和 C 是一对一的联系,则实体 A 和 C 的联系是_。(分数:1.00)A.一对一B.一对多C.多对一D.多对多10.有三个关系 R、S 和 T 如下: R A B C a 1 2 b 2 1 C 3 1 S A B C d 3 2 c 3 1 T A B C a 1 2 b 2 1 c 3 1 d 3 2 则由关系 R 和 S 得到关系 T 的操作是_。(分数:1.00)A.选择B.投影C.交D.并11.以下

    4、叙述中正确的是_。(分数:1.00)A.C 语言程序所调用的函数必须放在 main 函数的前面B.C 语言程序总是从最前面的函数开始执行C.C 语言程序中 main 函数必须放在程序的开始位置D.C 语言程序总是从 main 函数开始执行12.C 语言程序中,运算对象必须是整型数的运算符是_。(分数:1.00)A. sum=pad=5; pAd=+ +sum, pAd+, + +pad; printf(“%d/n“,pad); 程序的输出结果是_。(分数:1.00)A.5B.6C.7D.814.有以下程序: #include stdio.h main( ) int a=3; a+=a-=a*a

    5、; printf(“%d/n“,a); 程序的输出结果是_。(分数:1.00)A.0B.9C.3D.-1215.sizeof(double)是一个_。(分数:1.00)A.整型表达式B.双精度型表达式C.不合法的表达式D.函数调用16.有以下程序: #include stdio.h main( ) int a=2, C=5; printf(“a=%d,b=%d/n“,a,c); 程序的输出结果是_。(分数:1.00)A.a=2,b=5B.a=%2,b=%5C.a=%d,b=%dD.a=%d,b=%d17.若有定义语句: char a=“/82“; 则变量 a_。(分数:1.00)A.说明不合法

    6、B.包含 1 个字符C.包含 2 个字符D.包含 3 个字符18.有以下程序: #include stdio.h main( ) char c1=“A“,c2=“Y“; printf(“%d, %d/n“,c1,c2); 程序的输出结果是_。(分数:1.00)A.输出格式不合法,输出出错信息B.65,89C.65,90D.A,Y19.若变量已正确定义 for(x=0,y=0;(y!=99 x+) 则以上 for 循环执行_。(分数:1.00)A.3 次B.4 次C.无限次D.次数不定20.对于 while(!E) s;,若要执行循环体 s,则 E 的取值应为_。(分数:1.00)A.E 等于

    7、1B.E 不等于 0C.E 不等于 1D.E 等于 021.有以下程序: #include stdio.h main( ) mt x; for(x=3;x6;x+ +) printf(x%2)?(“*%d“) :(“#%d“),x); printf(“/n“); 程序的输出结果是_。(分数:1.00)A.*3#4*5B.#3*4#5C.*3*4#5D.*3#4#522.有以下程序: #include stdio.h main( ) int a,b; for(a=1,b=1;a=100;a+ +) if(b=20) break; if(b%3= =1) b=b+3; continue; b=b-

    8、5; printf(“%d/n“,a); 程序的输出结果是_。(分数:1.00)A.10B.9C.8D.723.有以下程序: #include stdio.h void fun(int x,int y,int *c, int * d) *c=x+y; *d=x-y; main( ) int a=4,b=3,c=0,d=0; fun(a,b, printf(“%d%d/n“,c,d); 程序的输出结果是_。(分数:1.00)A.0 0B.4 3C.3 4D.7 124.有以下程序: #include stdio.h void fun(int *p, int *q) int t; t=* p; *

    9、p=*q; *q=t; *q=*p; main( ) int a=0,b=9; fun( printf(“%d%d/n“,a,b); 程序的输出结果是_。(分数:1.00)A.9 0B.0 0C.9 9D.0 925.有以下程序: #include stdio.h main( ) int a=2,4,6,8,10,x, *p,y=1; P= for(x=0; x3; x+) y+=*(p+x); printf(“%d/n“,y); 程序的输出结果是_。(分数:1.00)A.13B.19C.11D.1526.有以下程序: #include stdio.h main( ) int i,x33=1,

    10、2,3,4,5,6,7,8,9; for(i=0;i3;i+) printf(“%d“, xi2-i); printf(“/n“); 程序的输出结果是_。(分数:1.00)A.1 5 0B.3 5 7C.1 4 7D.3 6 927.设有某函数的说明为 int * func(int a10,int n); 则下列叙述中,正确的是_。(分数:1.00)A.形参 a 对应的实参只能是数组名B.说明中的 a10写成 a或*a 效果完全一样C.func 的函数体中不能对 a 进行移动指针(如 a+)的操作D.只有指向 10 个整数内存单元的指针,才能作为实参传给 a28.有以下程序: #include

    11、 stdio.h char fun(char *c) if(*c=“Z“ return *c; main( ) char s81, *p=s; gets(s); while(*p) *p=fun(p); putchar(*p); p+; printf(“/n“); 若运行时从键盘上输入 OPEN THE DOOR回车,则程序的输出结果是_。(分数:1.00)A.OPEN THE DOORB.oPEN tHE dOORC.open the doorD.Open The Door29.设有定义语句: char *aa2=“abcd“,“ABCD“; 则以下叙述正确的是_。(分数:1.00)A.aa

    12、0存放了字符串“abcd“的首地址B.aa 数组的两个元素只能存放含有 4 个字符的一维数组的首地址C.aa 数组的值分别是字符串“abcd”和“ABCD”D.aa 是指针变量,它指向含有两个元素的字符型数组30.有以下程序: #include stdio.h int fun(char * s) char * p=s; while(*p!=0) p+; return(p-s); main( ) printf(“%d/n“,fun(“goodbey!“); 程序的输出结果是_。(分数:1.00)A.0B.6C.7D.831.有以下程序: #include stdio.h int fun(int

    13、n) int a; if(n= =1)return 1; a=n+fun(n-1); return(a); main( ) printf(“%d/n“,fun(5); 程序的输出结果是_。(分数:1.00)A.9B.14C.10D.1532.有以下程序: #include stdio.h int d=1; void fun(int p) int d=5; d+=p+; printf(“%d“,d); main( ) int a=3; fun(a); d+=a+; printf(“%d/n“,d); 程序的输出结果是_。(分数:1.00)A.8 4B.9 6C.9 4D.8 533.有以下程序:

    14、 #include stdio.h int fun(intA) int b=0; static int c=3; a=(c+,b+); return(a); main( ) int a=2,i,k; for(i=0;i2;i+) k=fun(a+); printf(“%d/n“,k); 程序的输出结果是_。(分数:1.00)A.4B.0C.1D.234.有以下程序: #include stdio.h main( ) char c25=“6934“,“8254“,*p2; int i,j,s=0; for(i=0;i2;i+)pi=ci; for(i=0;i2;i+) for(j=0;pij0

    15、j+=2) s=10*s+pij-“0“; printf(“%d/n“,s); 程序的输出结果是_。(分数:1.00)A.693825B.69825C.63825D.638535.有以下程序: #include stdio.h #define SQR(X) X*X main( ) int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf(“%d/n“,a); 程序的输出结果是_。(分数:1.00)A.0B.1C.9D.1036.有以下程序: #include stdio.h main( ) char x=2,y=2,z; z=(y1) printf(“%d/

    16、n“,z); 程序的输出结果是_。(分数:1.00)A.1B.0C.4D.837.有以下程序: #include stdio.h struct S int a;int b; main( ) struct S a, *p= a.a=99; printf(“%d/n“,_); 程序要求输出结构体中成员 a 的数据,以下不能填入横线处的内容是_。(分数:1.00)A.a.aB.*p.aC.p-aD.(*p).a38.有以下程序: #include stdio.h #include stdlib.h void fun(double *p1,double *p2,double *s) s=(double

    17、 *)calloc(1,sizeof(double); *s=*p1+*(p2+1); main( ) double a2=1.1,2.2,b2=10.0,20.0,*s=a; fun(a,b,s); printf(“%5.2f/n“, *s); 程序的输出结果是_。(分数:1.00)A.21.10B.11.10C.12.10D.1.1039.若已建立以下链表结构,指针 p、s 分别指向如下图所示的节点: (分数:1.00)A.p=p-next; s-next=p;p-next=s;B.s-next=“/0“;p=p-next;p-next=s;C.p=p-next;s-next=p-next

    18、;p-next=s;D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;40.若 fp 已定义为指向某文件的指针,且没有读到该文件的末尾,则 C 语言函数 feof(fp)的函数返回值是_。(分数:1.00)A.EOFB.非 0C.-1D.0二、程序填空题(总题数:1,分数:18.00)41.下列给定程序中,函数 fun 的功能是:在形参 ss 所指字符串数组中查找与形参 t 所指字符串相同的串,找到后返回该串在字符串数组中的位置(即下标值),若未找到则返回-1。ss 所指字符串数组中共有 N 个内容不同的字符串,且串长小于 M。 请在下画线处填入正确的

    19、内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! #nclude stdio.h #include string.h #define N 5 #define M 8 int fun(char(*ss)M,char*t) int i; /* * * * * * * * * *found* * * * * * * * * * for(i=0;i 1;i+) /* * * * * * * * * *found* * * * * * * * * * if(strcmp(ssi,t)=0) return 2; return

    20、-1; main( ) char chNM=“if“,“while“,“switch“,“int“,“for“,tM; int n,i; printf(“/nThe original string/n/n“); for(i=0;iN;i+ +) puts(chi); printf(“/n“); printf(“/nEnter a string for search:“);gets(t); n=fun(ch,t); /* * * * * * * * * *found* * * * * * * * * * if(n= 3)printf(“/nDon“t found!/n“); else print

    21、f(“/nThe position is %d./n“.n); (分数:18.00)三、程序修改题(总题数:1,分数:18.00)42.下列给定程序中函数 fun 的功能是:从整数 10 到 55 之间,查找能被 3 整除且有一位上的数值是 5 的数,把这些数放在 b 所指的数组中,这些数的个数作为函数值返回。规定函数中 a1 存放个位数,a2 存放十位数。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1.C 中,不得增行或删行,也不得更改程序的结构! # include stdio.h int fun(int * b) int k,a1,a2,i=0; for

    22、(k=10;k=55;k+) /* * * * * * * * * * * *found* * * * * * * * * * * * a2=k/1o“ a1=k-a2*10; if(k%3=0i+; /* * * * * * * * * * * *found* * * * * * * * * * * * return k; main( ) int a100,k,m; m=fun(a); printf(“The result is:/n“); for(k=0;km;k+) printf(“%4d“,ak); printf(“/n“); (分数:18.00)四、程序设计题(总题数:1,分数:24

    23、.00)43.规定输入的字符串中只包含字母和*号。请编写函数 fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。 例如,字符串中的内容为:“* * * *A*BC*DEF*G* * * * * * *”,删除后,字符串中的内容应当是:“* * * *A*BC*DEF*G”。在编写函数时,不得使用 C 语言提供的字符串函数。 注意:部分源程序在文件 PROG1.C 中。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 #include stdio.h void fun(char *a) main( ) char s81;vo

    24、id NONO(); printf(“Enter a string:/n“);gets(s); fun(s); printf(“The string after deleted:/n“);puts(s); NONO(); void NONO() /*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE * in,*out; int i; char s81; in=fopen(“in.dat“,“r“); out=fopen(“out.dat“,“w“); for(i=0;i10;i+) fscanf(in,“%s“,s); fun(s); fprintf(out,“%s/

    25、n“,s); fclose(in); fclose(out); (分数:24.00)_二级 C 语言真题(2)答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是_。(分数:1.00)A.一个算法的空间复杂度大,则其时间复杂度也必定大B.一个算法的空间复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.算法的时间复杂度与空间复杂度没有直接关系 解析:解析 算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度是指执行算法所需要的计算工作量,两者之间并没有直接关系,故答案为 D。2.下

    26、列叙述中正确的是_。(分数:1.00)A.循环队列中的元素个数随队头指针与队尾指针的变化而动态变化 B.循环队列中的元素个数随队头指针的变化而动态变化C.循环队列中的元素个数随队尾指针的变化而动态变化D.以上说法都不对解析:解析 在循环队列中,用队尾指针 rear 指向队列中的队尾元素,用队头指针 front 指向队头元素的前一个位置。因此,从队头指针 front 指向的后一个位置直到队尾指针 rear 指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数随队头指针和队尾指针的变化而变化,故 A 正确。3.一棵二叉树中共有 80 个叶子节点与 70 个度为 1 的节点,则该二叉树

    27、中的总节点数为_。(分数:1.00)A.219B.229 C.230D.231解析:解析 二叉树中,度为 0 的节点数等于度为 2 的书点数加 1,即 n 2 =n 0 -1,叶子节点即度为 0的节点,则 n 2 =79,总节点数为 n 0 +n 1 +n 2 =80+70+79=229,故答案为 B。4.对长度为 10 的线性表进行冒泡排序,最坏情况下需要比较的次数为_。(分数:1.00)A.9B.10C.45 D.90解析:解析 冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为 9+8+7+6+5+4+3+2+1=45,故选 C

    28、。5.构成计算机软件的是_。(分数:1.00)A.源代码B.程序和数据C.程序和文档D.程序、数据及相关文档 解析:解析 软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档。故选 D。6.软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是_。(分数:1.00)A.测试B.设计C.可行性研究 D.实现解析:解析 开发阶段包括分析、设计和实施两类任务。其中分析、设计包括需求分析、总体设计和详细设计 3 个阶段,实施则包括编码和测试两个阶段,C 不属于开发阶段。7.下面不能作为结构化方法软件需求分析工具的是_。(分数:1.00)A.系统结构图 B.数据

    29、字典(DD)C.数据流程图(DFD 图)D.判定表解析:解析 结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。8.在关系模型中,每一个二维表称为一个_。(分数:1.00)A.关系 B.属性C.元组D.主码(键)解析:解析 关系模型采用二维表来表示,即每个二维表称为一个关系。9.若实体 A 和 B 是一对多的联系,实体 B 和 C 是一对一的联系,则实体 A 和 C 的联系是_。(分数:1.00)A.一对一B.一对多 C.多对一D.多对多解析:解析A 和 B 为一对多的联系,则对于 A 中的每一个实体,B 中有多个实体与之联系;而 B 与 C 为一对一联系,则对于 B 中的每

    30、一个实体,C 中至多有一个实体与之联系,则可推出对于 A 中的每一个实体,C 中有多个实体与之联系,所以为一对多联系。10.有三个关系 R、S 和 T 如下: R A B C a 1 2 b 2 1 C 3 1 S A B C d 3 2 c 3 1 T A B C a 1 2 b 2 1 c 3 1 d 3 2 则由关系 R 和 S 得到关系 T 的操作是_。(分数:1.00)A.选择B.投影C.交D.并 解析:解析 关系 T 中的元素是关系 R 和关系 S 中所有元组的总和,且去掉了重复的元组,因此为并操作,选项 D 正确。11.以下叙述中正确的是_。(分数:1.00)A.C 语言程序所调

    31、用的函数必须放在 main 函数的前面B.C 语言程序总是从最前面的函数开始执行C.C 语言程序中 main 函数必须放在程序的开始位置D.C 语言程序总是从 main 函数开始执行 解析:解析 C 语言所调用的函数可以放在调用它的函数前面,也可以放在调用它的函数后面,所以 A错误。C 语言程序总是从 main 函数开始执行,所以 B 错误。main 函数的位置可以放在程序的开始,也可以放在中间,还可以放在最后,所以 C 错误。12.C 语言程序中,运算对象必须是整型数的运算符是_。(分数:1.00)A. sum=pad=5; pAd=+ +sum, pAd+, + +pad; printf(

    32、“%d/n“,pad); 程序的输出结果是_。(分数:1.00)A.5B.6 C.7D.8解析:解析C 语言区分大小写,pad 与 pAd 是两个不同的变量。首先将 5 赋值给两个变量,由于赋值运算符的优先级高于逗号运算符,所以计算 pAd=+sum,此时 pad 为 6,sum 也为 6,然后计算 pad+,pAd的值变为 7,+pad 后,pad 的值变为 6,所以选择 B。14.有以下程序: #include stdio.h main( ) int a=3; a+=a-=a*a; printf(“%d/n“,a); 程序的输出结果是_。(分数:1.00)A.0B.9C.3D.-12 解析

    33、:解析 等号“=”运算符是从右到左,且与“+、-、*”运算符相比,优先级较低,首先计算 a * a 结果为 9,执行 a=a-9 后,a 的值为-6,然后执行 a+=a,即 a=a+a=-6+(-6),所以值为-12。15.sizeof(double)是一个_。(分数:1.00)A.整型表达式 B.双精度型表达式C.不合法的表达式D.函数调用解析:解析 sizeof 是 C 语言中的一个操作符(operator),不是函数调用,简单地说,其作用就是返回一个对象或者类型所占的内存字节数。由于结果是无符号整数,因此可以把它看做是无符号整型表达式,所以选择 A。16.有以下程序: #include

    34、stdio.h main( ) int a=2, C=5; printf(“a=%d,b=%d/n“,a,c); 程序的输出结果是_。(分数:1.00)A.a=2,b=5B.a=%2,b=%5C.a=%d,b=%d D.a=%d,b=%d解析:解析 C 语言中用“%”打印输出字符“%”,所以“%d”,输出为“%d”两个普通字符,而不是格式控制符“%d”的含义,所以打印结果为 C。17.若有定义语句: char a=“/82“; 则变量 a_。(分数:1.00)A.说明不合法B.包含 1 个字符 C.包含 2 个字符D.包含 3 个字符解析:解析 定义语句:char a=“/82“;,表示定义字

    35、符变量 a,char 型变量值为 1 个长度,并从右侧开始运算,所以 a 的值为“2“,因此 B 选项正确。18.有以下程序: #include stdio.h main( ) char c1=“A“,c2=“Y“; printf(“%d, %d/n“,c1,c2); 程序的输出结果是_。(分数:1.00)A.输出格式不合法,输出出错信息B.65,89 C.65,90D.A,Y解析:解析 本题重点考查字符变量的相关知识。分别给字符型变量 a 和 b 赋值为“A“和“Y“,printf 函数的“%d”控制符输出的是数字,即 A 和 Y 的 ASSCII 码,因此输出结果为 65,89,因此 B

    36、选项正确。19.若变量已正确定义 for(x=0,y=0;(y!=99 x+) 则以上 for 循环执行_。(分数:1.00)A.3 次B.4 次 C.无限次D.次数不定解析:解析 本题重点考查 for 语句的循环次数。由 for(x=0,y=0;(y!=99x+),y!=99,若要执行循环体 s,则 E 的取值应为_。(分数:1.00)A.E 等于 1B.E 不等于 0C.E 不等于 1D.E 等于 0 解析:解析 while 语句的一般形式为:while(表达式)语句;,其中表达式是循环条件,语句为循环体。while 语句的语义是:计算表达式的值,当值为真(非 0)时,执行循环体语句。该题

    37、中如要执行语句 s,则!E 应为真,因此 E 应等于 0,故 D 选项正确。21.有以下程序: #include stdio.h main( ) mt x; for(x=3;x6;x+ +) printf(x%2)?(“*%d“) :(“#%d“),x); printf(“/n“); 程序的输出结果是_。(分数:1.00)A.*3#4*5 B.#3*4#5C.*3*4#5D.*3#4#5解析:解析 条件运算符组成条件表达式的一般形式为:表达式 1?表达式 2:表达式 3 其求值规则为:如果表达式 1 的值为真,则以表达式 2 的值作为条件表达式的值,否则以表达式 2 的值作为整个条件表达式的值

    38、。本题中语句“printf(x%2)?(“*%d”):(“#%d”),x);”的含义为变量 x 对 2求余,如果结果为真,则按照“*%d”格式输出,否则按照“#%d”格式输出。因此 A 选项正确。22.有以下程序: #include stdio.h main( ) int a,b; for(a=1,b=1;a=100;a+ +) if(b=20) break; if(b%3= =1) b=b+3; continue; b=b-5; printf(“%d/n“,a); 程序的输出结果是_。(分数:1.00)A.10B.9C.8 D.7解析:解析 首先注意 for 循环的控制条件。当 b=20 或

    39、者 a100,则跳出 for 循环,即 b20 且a=100 时执行 for 循环。第一次进入循环,a=1,b=1 均满足循环条件,但 b%3=1 条件满足,故执行b=b+3,得到 b=4。注意:有 continue,所以后面语句不执行,直接跳转到 a+这个语句,因此第一次循环完之后,a=2,b=4。进入第二轮循环,b%3=1 也是满足的,故再次 b=b+3,此轮循环执行之后,a=3,b=7,进入下一轮。此后和前面循环同理,都是 b%3=1 满足,因为每次都是加 3,而之后又去模 3,且都跳过 for 后面语句直接执行 a+,所以,一直循环到 b=22 跳出 for 循环。此时 a 为 8。综

    40、合起来就是,每次循环 b 增加 3,a 增加 1,且当 b22 时跳出循环,结束程序。所以 b 从 1 增加到 22,有(22-1)/3=7,所以 a=1+7=8。因此 C 选项正确。23.有以下程序: #include stdio.h void fun(int x,int y,int *c, int * d) *c=x+y; *d=x-y; main( ) int a=4,b=3,c=0,d=0; fun(a,b, printf(“%d%d/n“,c,d); 程序的输出结果是_。(分数:1.00)A.0 0B.4 3C.3 4D.7 1 解析:解析 主函数中首先初始化整型变量 a、b、c、d

    41、 分别为 4、3、0、0。调用函数 fun,将实参传递给形参。在 fun 函数内,*c=7,*d=1。返回主函数,最后输出 7 和 1。因此 D 选项正确。24.有以下程序: #include stdio.h void fun(int *p, int *q) int t; t=* p; *p=*q; *q=t; *q=*p; main( ) int a=0,b=9; fun( printf(“%d%d/n“,a,b); 程序的输出结果是_。(分数:1.00)A.9 0B.0 0C.9 9 D.0 9解析:解析 主函数中定义整型变量 a、b,分别赋值 0 和 9。将 a 和 b 的地址传递给指针

    42、变量 p 和 q,函数 fun 中将 a 和 b 的值互换后,又将 a 的值赋给 b。返回主函数,最后输出 9 和 9。因此 C 选项正确。25.有以下程序: #include stdio.h main( ) int a=2,4,6,8,10,x, *p,y=1; P= for(x=0; x3; x+) y+=*(p+x); printf(“%d/n“,y); 程序的输出结果是_。(分数:1.00)A.13B.19 C.11D.15解析:解析 本题通过语句“p= for(i=0;i3;i+) printf(“%d“, xi2-i); printf(“/n“); 程序的输出结果是_。(分数:1.

    43、00)A.1 5 0B.3 5 7 C.1 4 7D.3 6 9解析:解析 程序首先初始化二维数组 x33,然后通过 3 次 for 循环,输出 x02、x11和x20的值,即 3、5、7。因此 B 选项正确。27.设有某函数的说明为 int * func(int a10,int n); 则下列叙述中,正确的是_。(分数:1.00)A.形参 a 对应的实参只能是数组名B.说明中的 a10写成 a或*a 效果完全一样 C.func 的函数体中不能对 a 进行移动指针(如 a+)的操作D.只有指向 10 个整数内存单元的指针,才能作为实参传给 a解析:解析 本题重点考查返回指针值的函数的相关知识。

    44、返回指针值的函数,一般定义形式为:类型名*函数名(参数列表)。funC 函数被定义为指针型函数,它的一个形参为整型数组 a,形参 a 对应的实参可以是数组名和指针,故 A、D 错误。实参传递给形参 a 的是地址值,实参和形参指向同一段内存单元,在 funC 函数体内对形参 a 进行移动指针操作,可以改变实参的值,故 C 错误。28.有以下程序: #include stdio.h char fun(char *c) if(*c=“Z“ return *c; main( ) char s81, *p=s; gets(s); while(*p) *p=fun(p); putchar(*p); p+;

    45、 printf(“/n“); 若运行时从键盘上输入 OPEN THE DOOR回车,则程序的输出结果是_。(分数:1.00)A.OPEN THE DOORB.oPEN tHE dOORC.open the door D.Open The Door解析:解析 字符串输入函数 gets 的功能是从标准输入设备键盘上输入一个字符串。首先使指针变量 p指向字符串的首字母,while 循环语句中对字符串的每个字符进行 fun 函数操作。fun 函数的功能是将字符串中的大写字母变成小写字母。将处理结果返回主函数,主函数通过 putchar()字符输出函数进行输出。因此 C 选项正确。29.设有定义语句:

    46、char *aa2=“abcd“,“ABCD“; 则以下叙述正确的是_。(分数:1.00)A.aa0存放了字符串“abcd“的首地址 B.aa 数组的两个元素只能存放含有 4 个字符的一维数组的首地址C.aa 数组的值分别是字符串“abcd”和“ABCD”D.aa 是指针变量,它指向含有两个元素的字符型数组解析:解析 本题中定义了一个指针数组,数组中存放的是字符指针,aa 数组的两个元素分别包含了 5个字符,所以可以存放 5 个字符的一维数组的首地址,所以 B 选项错误。aa 数组的值是指向那两个字符串的字符指针,而不是那两个字符串,所以 C 选项错误。aa 本身是一个指向两个字符指针的指针,所以D 选项错误。30.有以下程序: #include stdio.h int fun(char * s) char * p=s; while(*p!=0) p+; return(p-s); main( ) printf(“%d/n“,fun(“goodbey!“); 程序的输出结果是_。(分数:1.00)A.0B.6C.7D.8 解析:解析 本题主要考查函数定义及调用,


    注意事项

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




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

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

    收起
    展开