2021年河南省平顶山市全国计算机等级考试C语言程序设计测试卷一(含答案)_第1页
2021年河南省平顶山市全国计算机等级考试C语言程序设计测试卷一(含答案)_第2页
2021年河南省平顶山市全国计算机等级考试C语言程序设计测试卷一(含答案)_第3页
2021年河南省平顶山市全国计算机等级考试C语言程序设计测试卷一(含答案)_第4页
2021年河南省平顶山市全国计算机等级考试C语言程序设计测试卷一(含答案)_第5页
已阅读5页,还剩21页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

2021年河南省平顶山市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若i和k都是int类型变量,有以下for语句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面关于语句执行情况的叙述中正确的是()。

A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环

2.设变量n为f1oat类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五人运算的表达式是()。

A.n=(n*100+0.5)/100.0

B.m=n*100+0.5,n=m/100.0

C.n=n*100+0.5/100.0

D.n=(n/100+0.5)*100.0

3.对于栈操作数据的原则是()。

A.先进先出B.后进先出C.后进后出D.不分顺序

4.下列函数的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}

A.将a所指字符串赋给b所指空间

B.使指针b指向a所指字符串

C.将a所指字符串和b所指字符串进行比较

D.检查a和b所指字符串中是否有‘\0’

5.

6.下列特征中不是面向对象方法的主要特征的是()。

A.多态性B.继承C.封装性D.模块化

7.下述哪一个是顺序存储结构的优点()。

A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示

8.当一个函数无返回值时,定义它的函数类型应是()。

A.voidB.intC.任意D.无

9.设S为C语言的语句,计算机执行下面算法时,算法的时间复杂度为()。A.n2B.O(nlgn)C.O(n)D.O(n2)

10.有以下程序:#include<stdio.h>voidswap(int*a,int*b){intt,*tp;t=*a;*a=*b;*b=t;tp=a;a=b;b=tp;printf(“%d,%d,”,*a,*b);}main(){inti=3,j=7,*p=&i,*q=&j;swap(p,q);printf(“%d,%d,%d,%d”,i,j,*p,*q);}程序运行后的输出结果是()。

A.3,7,3,7,3,7B.7,3,7,3,7,3C.3,7,3,7,7,3D.3,7,7,3,7,3

11.下列关于信息系统的叙述中,错误的是()。

A.广播电视是一种双向的、点到多点的信息交互系自

B.网络聊天是一种双向的,以信息交互为主要目的系统

C.电话是一种双向的、点对点的、以信息交互为主要的的系统

D.雷达是一种以感测和识别为主要目的的系统

12.下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}

A.sum=18B.sum=10C.sum=9D.sum=25

13.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则

A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次

14.有以下程序:#include<stdio.h>main(){char*p=“6938”;inti,s=0;for(i=3;i>=0;i--)s=10*s+p[i]-‘0’;printf(“%d\n”,s);}程序运行后的输出结果是()。

A.8396B.6938C.3869D.3689

15.设x,y,t均为int型变量,执行语句:

x=y=3;

t=++x||++y;

完成后,y的值为A.A.不确定B.4C.3D.1

16.函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是()。

A.文件开始B.文件末尾C.文件当前位置D.以上都不对

17.以下叙述中正确的是()。

A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以“#”开头

C.每个C程序必须在开头包含预处理命令行:#include

D.C语言的预处理不能实现宏定义和条件编译的功能

18.设有定义intn=0,*p=&n,**q=&p;,则下列选项中正确的赋值语句是

A.p=1;B.*q=2;C.q=p;D.*p=5;

19.下列4个关于C语言的结论中错误的是()。

A.可以用do…while语句实现的循环一定可以用while语句实现

B.可以用for语句实现的循环一定可以用while语句实现

C.可以用while语句实现的循环一定可以用for语句实现

D.do…while语句与while语句的区别仅是关键字“while”出现的位置不同

20.以下针对相应语句的注释中,说法错误的是()。

A.int*pt[2];/*pt是一个指针数组名*/

B.int(*pt)[2];/*pt是一维数组名*/

C.int(*pt)();/*pt是指向函数的指针*/

D.int*pt();/*pt是一个函数名*/

二、2.填空题(20题)21.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。

intfun(intn)

{intm=0,f=1,i;

for(i=1;i<=n;i++)

m+=i*f;

f=【】;

returnm;

}

main()

{printf("m=%d\n",【】);}

22.测试用例包括输入值集和【】值集。

23.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(【】);

}

24.以下程序运行后的输出结果是______。

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

printf("%d%d%d\n",a,b,C);

}

25.执行以下程序后的输出结果是()。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",A);

26.语句:x++;、++x;、x=x+1;、x=1+x;,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)【】。

27.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。

28.若x和a均是int型变量,则计算完x=(a=4,6*2)后的x值为______。

29.以下程序从终端输入一行字符放在s数组中,输入以回车符作为结束,函数fun统计存放在s数组中每个数字字符的个数。形参ch指向s数组,形参n给出了s数组中字符的个数。在acc数组中用下标为0的元素统计字符“0”的个数,下标为1的元素统计字符“1”的个数,…。请填空。

#include<stdio.h>

voidfun(int*,char*,int);

main()

{chars[80],c;intacc[10],i=0;

printf("Entercharacters:\n");

while((c=getchar())!='\n')s[【】]=c;

fun(【】);

for(i=0;i<10;i++)printf("%c:%d\n",'0'+i,acc[i]);

printf("\n\n");

}

voidfun(int*a,char*ch,intn)

{inti,d;

for(i=0;i<10;i++)a[i]=【】;

for(i=0;i<n;i++)

{d=【】;a[d]++;}

}

30.若有如下程序:

#include"stdio.h"

main()

{chars[30];

Strcpy(&S[0],"adc");

Strcpy(&S[1],"def");

strcpy(&S[2],"gh");;

printf("%S\n",s);

则程序运行后的输出结果是【】。

31.下面程序的输出结果是【】。

#include<stdio.h>

main()

{staiccharb[]="Goodbye";

char*chp=&b[7];

while(--chp>=&b[0])putchar(*chp);

printf("\n");

}

32.下面程序把从终端读入的10个整数以二进制方式写入一个名为bi.dat的新文件中。

#include<stdio.h>

FILE*fp;

main()

{inti,j;

if(fp=fopen(【】)==NULL)exit(0);

for(i=0;i<10;i++)

{scanf("%d",&j);

fwrite(&j,sizeof(int),1,【】;

}

fclose(fp);

}

33.设在主函数中有以下定义和函数调用语句,且fun函数为void类型,请写出fun函数的首部【】。要求形参名为b。

main()

{doubles[10][22];

intn;

fun(s);

}

34.选择程序中的输入输出语句,以满足题目给定的输入输出数据形式。

main()

{inta;floatb;

【】

【】}

输入形式:3.52<空格>6<回车>

输出形式:a*b=21.12

35.有以下程序

voidf(inty,int*x)

{y=y+*x;*X=*X+y;}

main()

{intx=2,y=4;

f(y,&x);

printf("%d%d\n",x,y);

}

执行后输出结果是______。

36.下程序的输出是【】。

main()

{

charstr1[]="Howdoyoudo",*p1=str1;

strcpy(str1+strlen(str1)/2,"esshe");

printf("%s\n",p1);

}

37.下列程序的输出结果是【】。

voidfun(int*n)

{while((*n)--);

printf("%d",++(*n));

}

main()

{inta=1000;

fun(&a);

}

38.有以下程序:

#include<stdio.h>

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

printf("%d\n",t);

}

执行后的输出结果是【】。

39.有以下程序:

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+t(i);

printf("%d\n",j);

}

程序运行后的输出结果是【】。

40.通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【】。

三、1.选择题(20题)41.有以下程序#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(X){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程序

A.a=1,b=0B.a=2,b=2C.a=1,b=1D.a=2,b=1

42.设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是

A.scant("%d",pa);

B.scant("%d",a);

C.scanf("%d",&pa);

D.scanf("%d",*pa);

43.软磁盘最外边的磁道数是()

A.0B.1C.39D.79

44.若有下面的说明和定义:structtest{intm1;charm2;floatm3;unionuu{charu1[5];intu2[2];}ua;}myaa;则sizeof(stmcttest)的值是()。

A.12B.16C.14D.9

45.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是

A.p=q;B.*p=*q;C.n=*q;D.p=n;

46.下列叙述中正确的是()。

A.线性链表的各元素在存储空间中的位置必须是连续的

B.线性链表的头元素一定存储在其他元素的前面

C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面

D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的

47.有如下程序:#include<stdio.h>msin(){chars[]="ABCD",*P;for(p=s+1;p<s+4;p++)Printf("%s\n",p);}该程序的输出结果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

48.下列叙述中,正确的是

A.用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系

B.用E-R图只能表示实体集之间一对一的联系

C.用E-R图只能表示实体集之间一对多的联系

D.用E-R图表示的概念数据模型只能转换为关系数据模型

49.以下程序运行后的输出结果是_______。intd=1;fun(intp)printf(%d",d);returnd;}main(){inta=3;printf("%\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

50.已知i、j、k为iht型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是______。

A.scanf("%d%d%d",&i,&j,&k);

B.scanf("%d,%d,&d",&i,&i,&k);

C.scanf("%2d%2d%2d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

51.下列选项中C语言中不合法的字符串常量的是

A.\121B.′y′C.\n\nD.ABCD\x6d

52.请读程序:#include<stdio.h>#include<string.h>main(){char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}上面程序的输出结果是______。

A.正数B.负数C.零D.不确定的值

53.下面程序的输出结果是()#include<stdio.h>#include<string.h>{char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2.strcat(pi,p2));printf("%s\n",str);}

A.xyzabcABB.zabcABCC.yzabcABCD.xycbcABC

54.有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}该程序的输出结果是______。

A.12B.13C.14D.15

55.下面叙述正确的是()

A.define和auto都不能定义为用户标识符

B.可以把define和auto定义为用户标识符

C.可以把define定义为用户标识符,但auto是C语言的关键字

D.可以把auto定义为用户标识符,但define是C语言的关键字

56.下列程序的输出结果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

A.6,2B.6,4C.8,4D.8,6

57.3.5英寸软盘的一个角上有一个滑动块,如果移动该滑动块将小孔关闭,则该软盘()

A.不能读但能写B.不能读也不能写C.只能读不写D.能读写

58.以下叙述不正确的是

A.一个C源程序可由一个或多个函数组成

B.一个C源程序必须包含一个main函数

C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面

59.在函数scanf的格式控制中,格式说明的类型与输入项的类型应该对应匹配。如果类型不匹配,系统将()。

A.不予接收B.并不给出出错信息,但不能得到正确的数据C.能接收到正确输入D.给出出错信息,不予接收输入

60.已有定义:Mtx=3,y=4,z=5;,则表达式!(x/y)+z-1&&y+z/2的值是()。

A.6B.OC.2D.1

四、选择题(20题)61.若有以下程序段,w和k都是整型变量。

w=k;

LB:if(w==0)gotoLE;

w--;

printf("*");

gotoLB;

LE:

M

则不能与上面程序段等价的循环语句是

A.for(w=k;w!=0;w--)printf("*");

B.w=k;<CR>while(w--!=0)printf("*");w++;

C.w=k;<CR>do{w--;printf("*");}while(w!=0);

D.for(w=k;w;--w)printf("*");

62.定义如下变量和数组:inti,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句for(i=0;i<3;i++)printf("%d",x[i][2-i]);的输出结果是()

A.159B.147C.357D.369

63.有下列程序:

intfun(intn)

{if(n==1))returnl;

else

return(n+fun(n-1)):

}

main()

{intx;

seanf("%d",&x);x=fun(x);printf("%d\n",x);

}

执行程序时,给变量x输入l0,程序的输出结果是()。

A.55

B.54

C.65

D.45

64.有以下程序程序运行后的输出结果是()。A.a+b=0B.a+b=30C.a+b=lOD.出错

65.有以下程序:

从第一列开始输入以下数据(<CR>代表一个回车符.:

2743<CR>

程序的输出结果是()。

A.66877B.668966C.6677877D.6688766

66.

下列程序的输出结果是()。

#include<stdio.h>

voidp(int*x)

{printf("%d¨,++*x);

}

voidmain()

{inty=3;

p(&y);

}

A.3B.4C.2D.5

67.

68.已定义:inta=25,b=14,c=19;,以下三目运算符(?:)所构成语句的执行后

a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序输出的结果是

A.***a=25,b=13,c=19B.***a=26,b=14,c=19C.###a=25,b=13,c=19D.###a=26,b=14,c=19

69.下面不属于需求分析阶段任务的是()。

A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件集成测试计划D.需求规格说明书评审

70.有以下程序:

程序的运行结果是()。

A.0987654321

B.4321098765

C.5678901234

D.0987651234

71.有如下程序

#include"stdio.h"

voidfun(int*a,int*b)

{intm;

m=(*a+*b)*(*a+*b);

m+=(*a-*b)*(*a-*b);

printf("%d\n",m);}

main()

{inta=5,b=6,*x=&a,*y=&b;

fun(x,y);}

程序执行后输出的结果为

A.120B.121

C.122D.123

72.面下程序段的运行结果是

charstr[]="ABC",*p=str;

printf("%d\n",*(p+3));

A.67B.0C.字符’C’的地址D.字符’C’

73.

74.将E—R图转换为关系模式时,实体和联系都可以表示为()。

A.属性B.键C.关系D.域

75.(70)需求分析阶段的任务是确定()

A.软件开发方法

B.软件开发工具

C.软件开发费用

D.软件系统功能

76.有以下程序

#include"stdio.h"

main()

{charstr[]="tomeetme",str1[]="toseeyou";

char*p=str,*p1=str1;

inti;

for(i=0;i<7;i++)

if(*(p+i)==*(p1+i))

putchar(*(p+i));

printf("\n");

}

程序的运行结果是

A.to

B.tomeet

C.toee

D.程序段不能通过编译

77.

78.下列叙述中错误的是()。

A.一种数据的逻辑结构可以有多种存储结构

B.数据的存储结构与数据的处理效率无关

C.数据的存储结构与数据的处理效率密切相关

D.数据的存储结构在计算机中所占的空间不一定是连续的

79.

80.

五、程序改错题(1题)81.给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符:按排列的顺序交叉合并到C所指数组中,过长的剩余字符接在C所指的数组的尾部。例如,当a.所指字符串中的内容为“abcdef9”,b所指字符串中的内容为“1234”时,c所指数组中的内容应“a4b3c2dlef9”;而当a所指字符串中的内容为“1234”,b所指字符串的内容为“abcdef9”时,c所指数组中的内容应该为“lg2f3e4dcba”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到pl所指的字符串的后面。

例如,分别输人下面两个字符串:FirstString——SecondString

程序运行后的输出结果是:FirstString————SecondString

注意:部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

参考答案

1.D此题考查的是基本的循环,答案为D。

2.B

3.B

4.A题目的fun函数内,while循环条件为“(*b=*a)!=‘\\0’”,执行时先把指针a所指向的字符赋给指针b所在的内存单元。如果该字符不是结束标识‘\\0’,执行循环体“a++;b++;”,指针a、b分别指向下一个字符单元。再判断循环条件,如果成立,继续把指针a所指向的字符赋给指针b所在的内存单元,直到遇到结束标识为止。故本题答案为A选项。

5.A

6.DD。【解析】面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。

7.A

8.A

9.D

10.Dmain函数中,首先定义两个整型变量i和j,初值为3和7,并将i的地址赋给p,j的地址赋给q,传给swap函数。swap函数接收两个整型指针变量a、b,然后使用整型变量t交换a、b所指向的值并输出。通过指针变量的交换改变了实参i、j的值,使得i=7,j=3。指针变量tp交换a和b的值,由于a、b的值是p、q值的复制,因此这次交换只改变了形参a、b的值,对实参p、q的值没有改变,此时指针变量a指向j,指针变量b指向i。函数最后输出*a和*b,所以输出3,7。由于swap函数改变了p和q指向的值,因此main函数输出i的值为7,j的值为3,*P的值为i,*q的值为j。最终程序输出:3,7,7,3,7,3。故本题答案为D选项。

11.A广播/电视是一种单向的、点对多点(面)的以信息传递为主要目的的系统。

12.B解析:本题考查带参数的宏的定义及相关运算:S=m+n+m+n*k=1+2+1+2*3=10。

13.B解析:本题考查while语句的使用。本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符'!'的优先级大于不等于运算符'!='的优先级。

14.A程序首先定义一个字符指针P,使其指向一个字符串“6938”。然后通过for循环使用逆序的方式遍历字符串的各个字符,并将各个字符当作整数参与算术运算。其中,“p[i]-‘0’”的含义是将字符串中的数字字符转换成对应的整数;“10*s+P[i]-‘0’”是将上一次运算结果乘以10后与转换后的整数相加,再累加到S中。所以for循环执行完后,S的值是将字符串“6938”逆序后当作整数输出。故本题答案为A选项。

15.Ct=++x或++y,当++x不为0的时候,即++x为真,则不需要再继续判断++y,那么y就不再执行自加,因此y=3.

16.B解析:SEEK_END代表的是文件末尾,SEEK_SET代表的是文件的开始,SEEK_CUR代表的是文件当前位置。

17.B本题是对基本知识点的理解,预处理命令行的位置没有规定,只是习惯写在起始位置而已,当需要时才用#include<stdio.h>头文件,预处理的作用就是实现宏定义和条件编译。

18.D解析:选项A),B),C)的指针赋值表达方式都不正确,*p=5表达整数5放到指针p所指向的存储单元中。注意:通过指针引用一个存储单。

19.D解析:本题考查几个循环语句的关系。①do…while语句、while语句、for语句所实现的循环可以相互替代;②do…while语句和while语句的区别是do…while语句至少执行一次。

20.B选项A定义了一个数组pt,它包含两个整型指针元素,所以pt是一个指针数组名,正确;选项B定义了一个数组指针Pt,pt指向一个数组,该数组包含两个整型元素,错误;选项C定义了一个函数,pt是函数指针,指向的函数没有参数,返回类型为整型,正确;选项D定义了一个函数,函数名为pt,函数返回整型指针类型,正确。故本题答案为B选项。

21.-f或f*-1或-1*f或f*(-1)或(-1)*ffun(10)-f或f*-1或-1*f或f*(-1)或(-1)*f\r\nfun(10)解析:调用fun()函数计算m的值,在主函数中的空格处应该填调用fun()函数的语句。fun()函数有一个形参n,为每次参加计算的值的个数,故在主函数中的空格处应该填fun(10),回到fun()函数,函数用到了一个for循环,共循环n次,当循环第i次的时候,m的值等于m=1-2+……+[(-1)的i-1次方]*i,所以在fun()函数的空格处应该填使f改变符号的语句,故应填-f或f*-1或-1*f或f*(-1)或(-1)*f。

22.输出输出解析:测试用例曲测试输入数据(输入值集)和与之对应的预期输出结果(输出值集)两部分组成。

23.str[i]或str+iistr[i]或str+i\r\ni

24.252137252137解析:本题中先定义了整型变量a、b和c,然后分别给赋值a为25,b为八进制的025,c为十六进制0x25。然后调用pruntf()函数将a、b和c分别用十进制输出,且中间用空格隔开,八进制025转换为十进制的值为21,十六进制的0x25转换为十进制的值为37,故最后的输出结果为252137。

25.a=14a=14解析:在“逗号表达式(表达式1,表达式2)”中,其运算方法是先求表达式1的值,然后求表达式2的值,整个逗号表达式的值是表达式2的值。首先3*5=15,a=10,a+4=14,最后输出的运算结果为14。

26.x+=1;

27.可重用性继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。

28.1212解析:x=(表达式1,表达式2,…)的形式,结果为最后一个表达式的值:x=(a=4,6*2)=2*6=12。

29.i++accsi0ch[i]-'0'

30.adghadgh解析:函数strcpy是字符串复制函数。第一次将'adc'复制到以&s[0]为起始地址的存储空间中,第二次将'def'复制到以&s[1]为起始地址的存储空间中,“dc”将被覆盖,变为“adef”,第三次将“gh”复制到以&s[2]为起始地址的存储空间中,“ef”将被覆盖,变为“adgh”。

31.eybdooG

32."bi.dat"fp'bi.dat'\r\nfp解析:打开文件函数fopen的参数是文件名,因此有fopen('bi.dat');而写文件的参数是文件指针,因此有fwrite(&j,sizeof(int),1,fp);

33.voidfun(doubleb[][22])voidfun(doubleb[][22])解析:程序中为了表示函数调用“不带回值”,可以用“void”定义函数为“无类型”(或称“空类型”),这样系统就保证不使函数带回任何值。当二维数组作为形参时,二维数组的第一维可以省略。

34.scanf("%f<空格>%d"&b&a);printf("ab=%5.2f"a*b);scanf('%f<空格>%d',&b,&a);\r\nprintf('a,b=%5.2f',a*b);

35.8484解析:本题考核的知识点是函数的调用、值传递和地址传递的区别。“值传递”指实参将值传递给形参后,实参与形参再无联系。也就是说对行参的改变将不影响实参;地址传递是指地址或数组名作为形参时的参数传递,这种情况下对形参的改变将对实参产生影响.函数f(Y*x)的作用是让y的值加上指针x所指向变量的值,让指针x所指向变量的值加上y的值。由于形参y是传值的,形参x是传地址的,故调用该函数后,作为实参的y的值将不改变,而实参x的值将改变,故最后输出的y的值为4,而x的值为8。

36.HowdoessheHowdoesshe解析:strcpy(str1,s1):字符串拷贝函数,作用是将字符串s1拷贝到字符数组str1中去。strlen(str):测试字符串str的长度,函数的值为字符串中实际长度,不包括\'\\0\'在内。本题中strlen(str1)的值为13,则strcpy(str1+strlen(str1)/2,'esshe');相当于strcpy(str1+6,'esshe');,因此可得答案为Howdoesshe。

37.00解析:while循环的条件为即当*n非零时执行循环,(*n)一是先使用*n的值再对*n减1,结束while循环后*n的值为-1。++(*n)是先对*n加1再使用*n的值,-1+1=0,输出*n的值即输出0。

38.00解析:本题是计算5*4*3*2*1*0的值,结果为0。

39.33解析:i=1时,f(1)=1,j=j+f(1)=0+1=1;i=2时,f(2)=f(1)+1=1+1=2:j=j+f(2)=1+3=3;此时循环结束,程序运行后的输出结果是3。

40.软件生命周期软件生命周期解析:软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。

41.D解析:本题考查switch语句,首先,x=1符合条件casel,执行switch(y)语句,y=0符合case0语句,执行a++并跳出switch(y)语句,此时a=1。因为case1语句后面没有break语句,所以向后执行case2语句,执行a++,b++,然后跳出switch(x),得a=2,b=1。

42.A解析:scanf()函数的功能是进行输入数据,它是按格式参数的要求从终端上把数据传送到地址参数所指定的内存空间中,C语言允许程序员间接地使用内存地址,这个地址是通过对变量名“求地址”运算得到的,求地址的运算符是&,得到的地址是一种符号地址。本题中定义了整型变量a和一个指向整型数据的指针变量pa,并定义pa是一个存放a的地址的变量。选项B中应该将a改为&a;选项C应该将&pa改为pa,因为pa已经表示存放a的地址;选项D中*pa表示的是指针pa所指向存储空间的变量的值,而不是一个地址。

43.A

44.A解析:结构体变量所占的存储空间是各个分量所占空间的总和。共用体变量中的所有成员占有同一个存储空间,其字节数与成员中占字节数最多的那个成员相等。charu1[5]是有5个元素的字符数组占5个字节,intu2[2]是有2个元素的整型数组占2*2=4个字节,共用体占5个字节的存储空间。int占2个字节,char占1个字节,float占4个字节,因此结构体所占的存储空间为2+1+4+5=12个字节。

45.D解析:本题中首先定义了一整型变量n并赋初值为2,接着定义了一个整型指针变量p并让它指向n,接着又定义了一指向指针的指针变量q。选项A中给指针变量p赋值q,故这个赋值语句正确。选项B中*p=*q就是将*q的值赋给指针变量p所指向的变量n,故这个赋值语句不是非法的赋值语句。选项C中是将*q的值赋给变量n,故这个表达式不是非法的赋值语句。选项D中p为一指针变量,应该将一地址赋给它,而在此选项的表达式中将变量n而不是n的地址赋给它,故这个表达式不合法。

46.DD.【解析】在线性链表中,各元素在存储空间中的位置是任意的,各元素的顺序也是任意的,依靠指针来实现数据元素的前后件关系。

47.D解析:本题考查指向字符串指针的运算方法。执行p=s+1后,指针变量p就指向字符串中的第二个字符“B”,然后输出字符串“BCD”并换行;下面继续执行循环语句,指针变量p指向下一个字符“C”,输出字符串“CD”,最后一次循环,p指向字符“D”,输出字符串“D”。

48.A解析:两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。

49.C解析:静态局部变量在编译时赋韧值,即只赋初值一次,在程序运行时它已有初值。以后每次调用时不再重新赋韧值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用—次函数重新给一次初值,相当于执行一次赋值语句。本题在程序开头定义了全局变量d并赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在第一次调用函数fun时,d初值为5,p由主函数传递过来的值为1,则d=d+p=5+1=6,由于d是静态局部变量,在函数调用结束后,它仍保留d=6。再次调用fun函数,d的初值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的值井返回主函数。

50.A解析:scanf函数中格式控制后面应为变量地址列表,因此选项C和选项D都错误,选项B中“&d”是指针变量d的地址,与题目不符。由题目可知指针变量d中存放的是变量c的地址,所以正确答案为选项A。

51.B解析:字符串常量是由双引号括起来的一串字符,其中的双引号不可缺少。由此可知,选项A)、C)、D)都是合法的字符串常量,而选B)是一个字符常量。

52.A解析:本题考查字符串比较函数strcmp()的应用。strcmp(s1,s2)是中比较函数,当s1>s2时返回值为正数,当s1<s2时返回值为负数,当s1=s2时返回值为零。本题中s1,s2分别表示两个串中第一个字符的地址,s1++和s2++是将指针指向串的第二个字符,指针变量s1指向的是串“bCdEf”的首地址,即字符b的地址,而指针变量s2指向的是字符'B'的地址。而在字符串比较中,宁符串大小的确定是各个字符串相应位置字符的ASCII码值的大小决定的,字符'B'的ASCII码值为66,字符“b”的ASCII码值为98,所以s1>s2,返回值为正数。

53.D

54.D解析:调用函数func(x,y),返回x+y,即7;再调用函数func(7,z),返回7+z,即15。

55.C

56.B解析:本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。

57.D

58.D解析:本题考查C语言的基本基础知识。在C程序中,注释用符号“/*”开始,而以符号“*/”结束。程序的注释可以放在程序的任何位置。通常将注释放在程序的开始,以说明本程序的功能;或者放在程序的某个语句后面,以对此语句的功能进行描述。无论将注释放有何处,在程序进行编译时,编译程序不会处理注释的内容;且注释内容也不会出现在目标程序中。

59.B解析:在scanf函数的格式控制中,格式说明的类型与输入项的类型必须一一对应匹配,如不匹配将导致数据输入出现错误,但是系统并不报错。

60.D解析:本题中,&&左边的表达式!(x+y)为!(3+7),结果为假,即为0。再加上2,然后减一,相当于0+5-1=4。左边等于4,&&右边的表达式y+z/2相当于4+5/2为6,所以整个表达式相当于4&&6为真,即为1,所以选项D正确。

61.C本题主要考查几种循环结构的比较。在题目中,给出了一段程序,程序首先对整型变量w赋值;然后定义了一段程序LB,在该段程序中,首先判断变量w是否为零,如果是,则用GOTO语句跳出该段程序至LE,如果不为零,则w自减并输出*,然后用GOTO语句跳到该程序段开始的地方执行。该段程序其实相当于一个循环,循环的结束条件是变量w的值等于零。

在选项A中,我们可以看到循环结束的条件是变量w的值等于零,而初值也一样,与题目中的程序段意思完全一致。

在选项B中,我们可以看出循环结束的条件是变量w的值等于零,而程序也是先判断,再执行后面的语句,与原程序段描述的意思一致。

在选项C中,do-while循环是直到型循环,即先执行一次循环体中的语句后,再判断循环条件,当w的值已经等于0时,循环依然要运行一次,与原程序段描述的内容不一致,是题目的答案。

在选项D中,循环所描述的内容也与原程序段一致。

提醒:在完成这类题时,首先需要弄明白原程序段的作用,如果看不懂,则可以比较选项中与其他选项不同的结果。

62.C

63.A\n本题在函数intfun(intn)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量X时,递归调用的过程为

\nfun(10)=l0+fun(9)=10+9+fun(8)=10+9+8+fun(7)

\n=10+9++8+7+fun(6)=10+9++8+7+6+fun(6)

\n=10+9++8+7+6+5+fun(4)

\n=10+9++8+7+6+5+4+fun(3)

\n=10+9++8+7+6+5+4+3+fun(2)

\n=10+9++8+7+6+5+4+3+2+fun(1)

\n=10+9++8+7+6+5+4+3+2=55

\n

64.A注释/*和*/,之间计算机不参与编译,所以a、b值仍为0,答案选择A)。

65.A本题主要考查了字符输入输出函数get—char和putchar的使用。getchar函数用来从标准输入设备上读人一个字符,putchar(C)函数是将字符变量c中的字符输出到标准输出设备上,并且字符可以看作整数参与运算。

66.B

\n本题考查函数调用时的参数传递。在函数

温馨提示

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

评论

0/150

提交评论