2021年甘肃省陇南市全国计算机等级考试C语言程序设计真题(含答案)_第1页
2021年甘肃省陇南市全国计算机等级考试C语言程序设计真题(含答案)_第2页
2021年甘肃省陇南市全国计算机等级考试C语言程序设计真题(含答案)_第3页
2021年甘肃省陇南市全国计算机等级考试C语言程序设计真题(含答案)_第4页
2021年甘肃省陇南市全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

2021年甘肃省陇南市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有下列函数定义:fun(floath){printf("%f,%f\n",h,h*h);)该函数的类型是()。A.int类型B.float类型C.void类型D.函数无类型说明,定义有错

2.若有定义“intx=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为()。

A.1B.1.9C.2D.2.4

3.

4.对于移动平均算法,是计算某变量之前n个数值的算术平均,正确的说法是()

A.空间复杂度是O(1)B.空间复杂度是O(n)C.空间复杂度是O(logn)D.空间复杂度是O(nlogn)

5.有以下程序:#include<stdio.h>main(){chars[]="012xy\O8s34f4w2‘;inti;n=0;,for(i=0;s[i]!=0;i++)if(s[i]>=0s[i]<=9)n++;printf("%d\n",n);}程序运行后的输出结果是()。A.0B.3C.7D.8

6.若要求从键盘读入含有空格字符的字符串,应使用函数

A.getc()B.gets()C.getehar()D.scanf()

7.与“y=(x>0?1:x<0?-1:0)”;的功能相同的if语句是()。A.A.if(x>0)y=1;elseif(x<0)y=1;else=""y="0;

B."x="">0)y=1;elseif(x<0)y=-l;else=""y="0;"

C.y="-l"x="">O)y=1;elseif(x=-0)y=0;elsey=-l;

D.y=0;if(x>=0)if(x>=0)y=1;elsey=-l;

8.设有定义“Charp[]={‘1’,‘2’,‘3’},*q=p;”,以下不能计算出一个char型数据所占字节数的表达式是()。A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

9.设有以下函数“voidfun(intn,char*s){…}”,则下列对函数指针的定义和赋值均正确的是()。

A.void(*pf)(int,char);pf=&fun;

B.void*pf();pf=fun;

C.void*pf();*pf=fun;

D.void(*pf)(int,char*);pf=fun;

10.有以下程序:

程序执行后的输出结果是()。

A.45B.50C.60D.55

11.

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

#include<stdio.h>

main

{inta[2][3]={{1,2,3),{4,5,6)),(*p)[3],i;

p=a;

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

{if(i<2)

p[1][i]=p[1][i]-1;

else

p[1][i]=1;

}

printf("%d\n",a[o][1]+a[1][1]+a[1][2]);

}

A.8B.7C.12D.9

12.以下程序输出的结果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}

A.ABCDFGHKLB.ABCEFGUMC.EFGJKOD.FGHKL

13.下面不能正确表示a*b/(c*d)的表达式是()。

A.(a*b)/c*dB.a*b/(c*d)C.a/c/d*bD.a*b/c/d

14.有以下程序:#include<stdio.h>intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;…}则以下函数调用语句错误的是()。

A.k=f(a,b);B.k=add(a,b);C.k=(*f)(a,b);D.k=*f(a,b);

15.以下一维数组a正确的定义是()

A.inta(5)B.intn=5,a[n]C.inta[SZ]其中SZ为符号常量D.inta{5}

16.向一个栈顶指针为H的链栈中插入一个s所指向的结点时,需执行()。

A.H->link=s

B.s->link=H->link;H->link=s;

C.s->link=H;H=s;

D.s->link=H;H=H->link;

17.有下列程序:程序执行后的输出结果是()。A.Zhao,m,85,Zhao,m,85

B.Sun,f,90,Zhao,m,85

C.Zhao,m,85,Sun,f,90

D.Sun,f,90,Sun,f,90

18.关于C语言中数的表示,以下叙述中正确的是()。

A.只有整型数在允许范围内能精确无误地表示,实型数会有误差

B.只要在允许范围内整型数和实型数都能精确地表示

C.只有实型数在允许范围内能精确无误地表示,整形数会有误差

D.只有用八进制表示的数才不会有误差

19.以下不合法的用尸标识符是()。A.A.804zhangB._hhC.yy614D.If

20.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()

A.不确定B.n-i+1C.iD.n-i

二、2.填空题(20题)21.有以下定义语句,则sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear,

union{intshare1;

floatshare2;

}share;

}a;

22.若有以下程序段:

intc1=1,c2=2,c3;

c3=1.0/c2*c1;

则执行后,c3中的值是【】。

23.以下程序的运行结果是______。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%51d\n",k);}

24.下列程序的输出结果是______。

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

25.结构化分析方法是面向______进行分析的方法。

26.若有下列定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,则值为3的表达式为:______。

27.下列程序的运行结果是______。

main()

{inti,a[10];

a[0]=a[1]=1;

for(i=2;i<5;i++)

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

printf("%d",a[i]);

}

}

28.数据结构分为逻辑结构与存储结构,带链的栈属于【】。

29.以下程序的输出结果是【】。

main()

{char*p=“abodefgh”,*r;

long*q;

q=(long*)p;

q++;

r=(char*)q;

printf(“%s\n”,r);

}

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

main()

{

charc1,c2;

for{c1='0',c2='9';c1<c2;c1++,C2--)

printf("%c%c",c1,c2);

printf("\n");

}

31.以下函数用来在w数组中插入x,w数组中的数已按由小到大的顺序存放,n为数组中存放的数的个数。插入后数组中的个数仍然有序。请填空,使之完整。

voidfun(char*w,charx,int*n)

{inti,p;

p=0;

w[*n]=x;

whiel(x>w[p])【】;

for(i=*n;i>p;i--)w[i]=【】;

w[p]=x;

++*n;

}

32.下列程序的运行结果是______。

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

33.下列程序的运行结果是______。

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

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

}

34.fseek函数的正确调用形式是【】。

35.下列程序段的运行结果是______。

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

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

36.有以下程序

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

执行后输出结果是【】。

37.下列程序的功能是将字符串s中所有的字符c删除。请填空。

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')

s[j]='\0';

puts(s);

}

38.下面程序的功能是:计算1~10之间的奇数之和与偶数之和,请填空。

#include<stdio.h>

main()

{inta,b,c,i;

a=c=0;

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

{a+=i;

【】;

c+=b;}

printf("偶数之和=%d\n",a);

printf("奇数之和=%d\n",c-11);}

39.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2;

ch1=getchar();ch2=getchar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

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

}

程序运行时输入12<回车>,执行后输出结果是【】。

40.阅读下面程序段,则执行后输出的结果是【】。

#include"stdio.h"

main()

{charfun(char,int);

chara='A';

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

三、1.选择题(20题)41.下列程序的运行结果是()。#include<stdio.h>voidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=3,b=6,*x=&a,*y=&b;fun(x,y);printf("%d%d",a,b);

A.63B.36C.编译出错D.00

42.设有以下语句typedefstructTT{charc;inta[4];}CIN;则下面叙述中正确的是______。A.可以用TT定义结构体变量

B.TT是struct类型的变量

C.可以用CIN定义结构体变量

D.CIN是structTT类型的变量

43.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

44.已知inta=1,b=3则a^b的值为

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

45.以下选项中,不能正确赋值的是______。

A.chars1[10];s1="chest";

B.chars2[]={'C','t','e','s','t'};

C.chars3[20]="Chest";

D.char*s4="Ctest\n"

46.软件系统生命周期的第一个阶段是______。

A.软件分析阶段B.软件设计阶段C.软件运行阶段D.软件维护阶段

47.下列程序的执行结果是()。#include<stdio.h>main(){inta,b,c;a=b=2:c=(a++)-1;printf("%d,%d",a,c);c+=(a+=-a+++(++B);printf("%d,%d",a,c);}

A.3,14,1B.3,14,2C.2,04,1D.2,14,1

48.下列不属于软件工程的3个要素的是______。

A.工具B.过程C.方法D.环境

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

A.调用printf函数时,必须要有输出项

B.使用putchar函数时,必须在之前包含头文件stdio.h

C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCⅡ码

50.设有定义:charp[]={‘1’,‘2’,‘3’,},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是______。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

51.组成计算机网络的最大好处是()

A.进行通话联系B.资源共享C.发送电子邮件D.能使用更多软件

52.有如下程序

main()

{intn=9;

while(n>6){n--;printf("%d",n);}}

该程序的输出结果是

A.987B.876C.8765D.9876

53.有以下计算公式:

若程序前面已在命令行中包括math.h文件,不能够正确计算上述公式的程序是()。

A.if(x>=0)y=sqrt(x);

B.y=sqrt(x);elsey=sqrt(-x);if(x<0)y=sqrt(-x);

C.if(x>=0)y=sqrt(x);

D.y=sqrt(x>=0?x:-x);

54.以下叙述正确的是A.C语言比其他语言高级

B.C语言可以不用编译就能被计算机识别执行

C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D.C语言出现的最晚、具有其他语言的一切优点

55.若x=3,y=z=4,则下列表达式的值分别为()(1)(z>=y>=x)?1:0(2)y+=z,x*=y

A.024B.18C.08D.112

56.若有语句:char*line[5];,以下叙述中正确的是

A.定义line是一个数组,每个数组元素是一个基类型为char为指针变量

B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

C.定义line是一个指针数组,语句中的*号称为间址运算符

D.定义line是一个指向字符型函数的指针

57.若有以下的说明语句,则与它等价的说明是chars[3][5]={"aaaa","bbbb","cccc"};

A.char**s1={"aaaa","bbbb","cccc"};

B.char*s2[3]={"aaaa","bbbb","cccc"};

C.chars3[][5]={"aaaa","bbbb","cccc"};

D.chars4[][4]={"aaaa","bbbb","cccc"};

58.若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

59.以下4组用户定义标识符中,全部合法的一组是

A._mainencludesin

B.If_maxturbo

C.txtREAL3COM

D.intk_2_001

60.以下叙述中错误的是()。

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值.

D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

四、选择题(20题)61.

62.(VC++)若有以下定义,则对b数组元素正确的引用是

intb[2][3]={1,2,3,4,5,6};A.b[1]B.b[0][3]C.b[2][2]D.b[1][1]

63.数据的存储结构是指()。

A.数据所占的存储空间

B.数据的逻辑结构在计算机中的存放形式

C.数据在计算机中的顺序存储方式

D.存储在计算机外存中的数据

64.结构化程序设计的3种结构是()。

A.顺序结构、选择结构、转移结构

B.分支结构、等价结构、循环结构

C.多分支结构、赋值结构、等价结构

D.顺序结构、选择结构、循环结构

65.有以下程序:

#include<stdio.h>

main()

{chara[20],b[20],c[20];

scanf("%s%s",a,b);

gets(c);

printf("%S%S%s\n",a,b,c);

}

程序运行时从第一列开始输入:

Thisisacat!<回车>

则输出结果是()。

A.Thisisacat!

B.Thisisa

C.Thisisacat!

D.Thisisacat!

66.有以下程序段

structSTU

{charnum[10];floatscore[3];};

main()

{

structSTUs[3]={

{"20021",90,95,85},

{"20022",95,80,75},

{"20023",100,95,90},

},*p=s;

inti;floatsum=0;

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

sum=sum+p->score[i];

printf("%6.2f\n",sum);

}

程序运行后的输出结果是

A.260.00B.270.00

C.280.00D.285.00

67.下列选项中属于软件生命周期开发阶段任务的是()。

A.可行性研究

B.需求分析

C.详细设计

D.软件维护

68.结构化程序所要求的基本结构不包括()。

A.顺序结构B.选择(分支)结构C.GOT0跳转D.重复(循环)结构

69.

70.

71.以下叙述中错误的是()。A.可以通过typedef增加新的类型

B.可以用typedef已存在的类型用一个新的名字来代表

C.用pypedef义新的类型名后,原有类型名仍有效

D.用pypedef以为各种类型起别名,但不能为变量起别名

72.

73.

74.若有以下程序

#include<stdio.h>

voidf(intn);

main()

{

voidf(intn);

f(5);

}

voidf(intn)

{

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

}

则以下叙述中不正确的是

A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f

C.对于以上程序,编译时系统会提示出错信息:对f函数重复说明

D.函数f无返回值,所以,可用void将其类型定义为无返回值型

75.

76.

77.

78.有如下程序

#include<stdio.h>

main()

{

FILE*fp1;

fp1=fopen("f1.txt","w");

fprintf(fp1,"abc");

fclose(fp1);

}

若文本文件f1.txt中原有内容为good,则运行以上程序后,文件f1.txt中的内容为

A.goodabcB.abcd

C.abcD.abcgood

79.

能正确表示“当x的取值在[1,10]和[100,110]范围内为真,否则为假”的表达式是()。

A.(x>=1)&&(x<=10)&&(x>=100)&&(X<=110)

B.(x>=1)

C.

D.(x<2=10)

E.

F.(x>=100)

G.

H.(x<=1l0)

I.(gt;=1)&&(x<=10)

J.

K.(gt;=100)&&(x<=110)

80.有以下程序:

程序运行后的输出结果是()。

A.02356B.0235C.235D.2356

五、程序改错题(1题)81.下列给定程序中,函数ptoc的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入前两个字符中,插入后前3个字符依然有序;再把第4个字符插入前三个字符中,待排序的字符串已

在主函数中赋予。

请修改程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<strin9.h>

#include<stdi0.h>

#defineM80

voidproc(char*arr)

{inti,j,n;charch;

n=strlen(arr):

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

//****found****

{c=arr[i];

j=i-1;

while((j>=o)&&(ch<arr[j]))

{

arr[j+1]=arr[j];

j--;

}

arr[j+1]=ch;

}

}

voidmain

{

chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";

printf("Theoriginalstring:%s\n",a);

proc(a);

printf("Thestringaftersortin9:

%s\n\n",a);

}

六、程序设计题(1题)82.规定输入的字符串中只包含字母和。号。请编写函数fun,其功能是:将字符串尾部的。号全部删除,前面和中间的*号不动。

参考答案

1.A本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。

2.A在表达式“z=0.9+x/y”中,先计算“3.6-2”,结果为1;再计算“0.9+1”,结果为1.9。因为变量z为整型,所以z的值为1。故本题答案为A选项。

3.A

4.A

5.B考查简单的C程序数组和循环。for循环是指i=0,如果s/[3]!=0,则i自动加1。if循环指的是s[i]中的元素大于等于0且小于等于9,则n加l,所以答案为B。

6.B解析:scanf()语句用“空格”区别不同的字符串;getc()与getchar()语句不能用于字符串的读入。

7.By=(x=)071:x<0?-1:0)中有两个三目运算符,因此按从右到在的顺序运算,可写成y=(x>071:(x<0?-1:0)),故选择8选项。

8.A根据题目中的定义可知,“sizeof(p)”计算的是数组p中所有元素所占用的字节数,而不是char型数据所占的字节数。故本题答案为A选项。

9.D函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。函数名代表函数的入口地址,指向函数的指针应该定义为“void(*Pf)();”。如果定义为“void*pf();”,则表示函数pf的返回值是一个基类型为void的指针。故本题答案为D选项。

10.C内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。Fun(a,5)的值是l5,再次调用后slim=15,所以Fun(b,4)=45,s=45+15=60。

11.B

\n本题考查for循环及if…else语句嵌套,第1次执行for循环,p[1][0]=p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,p[1][2]=l,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。

\n

12.D当k=1时,引用的是二维数组元素w[1][1],值为字符串“FGH”;当k=2时,引用的是数组元素w[2][2],即字符串“KL”;当k=3时,结束程序的执行。注意:字符串数组的定义。

13.A

14.D运算符“()”的优先级高于运算符“*”。“(*f)()”定义函数指针,f是指向函数的指针。执行语句“f=add;”,将函数add的首地址赋给指针f,所以调用函数add可以写为f。函数的返回值是整型,不是指针类型,不能用运算符,故*f(a,b);”的调用方式错误。故本题答案为D选项。

15.C

16.C

17.D程序定义结构体类型STU,main函数定义结构体STU变量b,并将b的地址赋给指针变量a。调用函数f,传入a。在函数f中,定义了STU变量c,并将c的地址赋给d,再用d指向的值赋给a指向的地址,接着输出a指向的值,也就是c的值:Sun,f,90。由于函数f的调用通过指针参数a修改了变量b的值,因此a指向的值也就是b的值等价于c:Sun,f,90。本题答案为D选项。

18.A当数据类型是实数时,在存储过程中,当小数部分无限长时,会存在小数部分的截断,会存在误差,所以答案选择A。

19.AC语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线。

20.B

21.10410\r\n4解析:结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。int占2个字节,float占4个字节,共用体变量所占的内存长度等于最长的成员的长度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4-10。

22.00解析:在赋值运算中。如果表达式中变量和常量的数据类型不一致就会自动进行类型转换。系统会计算1.0/c2,由于1.0是实型,所以均先转化为双精度型0.500000,再和c1转化后的双精度数相乘得0.500000。但其要赋值给整型变量c3,故要进行强制转换,c3的值为0。

23.k=5k=5解析:本题主要考查了函数的递归调用方法。g=0或g=1或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。

24.3691236912解析:本题考查最基本的for循环:for(cc=1;cc<5;cc++)规定循环次数为4次,每次a+=3即每次a的值增3,但因为fun函数中变量a为static类型,所以每次调用完于函数之后,变量a所做的改变都要保存。

25.数据流数据流解析:结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

26.p+=2*(p++)p+=2,*(p++)解析:由题可知a[2]=3,因此只要使指针p指向a[3],然后再引用指针的值就可以了。

27.11<CR>23<CR>5(<CR代表换行)11<CR>23<CR>5(<CR,代表换行)解析:本题通过语句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”将数组中前面两项的和赋值给数组当前元素,得到a的值应为(1,1,2,3,5)。语句if(i%2==0)pfintf('\\n')是要将数组中的元素以每行2个的形式输出。

28.存储结构存储结构解析:带链的栈属于栈的链式存储结构。

29.efghefgh解析:本题定义了一个字符型指针变量p并通过赋初值让它指向了一个字符串,定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“q=(long*)p;”把P的地址值强制转换为长整型地址值并赋值给q,然后执行“q++;”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址,最后输出,指向的字符中,是“efgh”。

30.918273645918273645解析:题目中为for循环定义了两个字符型循环变量c1和c2,循环开始时分别初始化为字符'0'和'9',然后每次循环结束给c1增1、c2减1,循环条件为c1<c2,即让c1的值依次为'0'、'1'、'2'…,c2的值依次为'9'、'8'、'7'…,直到两个数相遇时结束循环。又因为该循环的循环体每次按字符形式输出c1和c2的值.所以最终的输出结果为:0918273645。

31.++pw[i-1]

32.111,1解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。

33.22132,2,1,3解析:本题考查++,--运算符和条件运算符的使用。

“表达式1?表达式2:表达式3”的功能是:表达式1的值若非0,则计算表达式2的值,且表达式2的值为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。

本题中,x=1,y=2时,x<y成立,输出y的值2;y=2,z=3时,z<y不成立,执行y++,输出2后y值增1,所以最后一个输出x的值不变为1,y的值为增加后的3。

34.fseek(文件指针位移量起始点)fseek(文件指针,位移量,起始点)解析:本题考查函数fseek的用法。fseek函数的调用形式为:

fseek(文件指针,位移量,起始点)

“起始点”用0,1或2代替,其中,0代表“文件开始”;1为“当前位置”;2为“文件末尾”。“位移量”指以“起始点”为基点,向前移动的字节数。ANSIC和大多数C版本要求位移量是long型数据,这样当文件的长度大于64k时不致出现问题。ANSIC标准规定在数字的末尾加一个字母L,就表示long型。

35.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d”格式输出的,即输出其相应ASCII码值68。

36.-4-4解析:if…else构造了一种二路分支选择,是一种最基本的选择结构,if(条件)S1(if分结构)elseS2(else分结构),它的工作过程是:先对条件表达式进行判断,若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行else分结构(S2)。本题中,n=0,可以判断(!n)为真,执行x=x-1=2-1=1;m=1,可以判断(m)为真,执行x=x-2=1-2=-1进而可以判断(x)为真,执行x=x-3=-1-3=-4。

37.S[j++]=s[i]S[j++]=s[i]解析:循环开始后如果数组s中储存值与字符c相同,则i++直接跳过当前值;如果不相同,则将当前值赋予数组指定位置,并通过j++将下标加1,指向下一元素要存储的位置。

38.b=i+1b=i+1解析:本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2之后和累加至a,所以a的值就是1~10之间的偶数之后;b的值是1~11之间的奇数和,但在输出b值时c去掉多加的11,即为1~10之间的奇数之和。

39.1212解析:字符类型的数据在内存中以相应的ASCII码存放,在C语言中,字符数据可以等价为与其相应的ASCII码的整数,还可以作为整数参加运算。在本题中,n1=ch1-'0'='1-'0'=49-48=1,n2=n1*10+(ch2-'0')=1*10+('2'-'0')=10+2=12,所以,最后输出为12。

40.NN解析:函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符“A”的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。

41.B解析:程序看上去是要实现交换两个指针的值,但是C语言中实参变量和形参变量之间的数据传递是单向的“值传递”,指针变量做函数参数也要遵循这一规则。调用函数不能企图通过改变形参指针的值而使实参指针的值也改变。所以本题的输出结果是36。

42.C解析:将题目中的定义语句去掉前面的typedef和后面的CIN(分号保留),就是一条完整的结构体定义语句,其中struct是说明符,TT是结构体名,大括号里面的是结构体成员的定义。此时要声明该结构体变量时需要使用struct加结构体名一起来声明,structTT一起构成一个结构体类型,就好像字符类型char。若只去掉前面的typedef,就是一条结构体定义同时声明个结构体变量CIN的语句,因为CIN的前面部分是structTT的完整写法,可以看作是structTT。C语言允许用typedef说明一种新类型名,其语法格式为:

typedef类型名标识符;

以后就可以用该标识符来代替被说明的类型名了。因此,当前面存在typedef时,该语句就变成了给structTT的定义一个新的名称CIN。所以,此时的CIN是一个结构体类型,它相当于structTT,即可以和char一样单独用来声明该结构体变量,而TT只是一个结构体名,不能单独用来声明变量。所以,4个选项中C符合题意。

43.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

44.C解析:^是按位异或运算,如果对应位不同则结果为1,相同则为0。

45.A解析:语言中不能将字符串常量直接赋给数组。但在赋初值时可以。

46.A解析:软件工程的第一个阶段是软件分析阶段。软件分析阶段的工作是由软件分析员和用户一起来做的。软件分析的结果是分析人员写出的分析报告,该分析报告实际上就是软件系统的系统总体设计方案。

47.A解析:本题主要考查自加运算符(++、--)的使用。①前缀变量“++i、-i”,在使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参与运算:②后缀变量“i++、i--”,先使用此时的表达式的值参与运算,在使用i之后,再使i的值加1或者减1。本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此语句后,的值是3;表达式c+=-a+++(++b)等价于c=c+(-a++)+(++b),c=1+(-3)+3=1,此时a=4,b=3。

48.D解析:本题考查了软件工程的基本概念。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。

49.B

50.A解析:本题考查的重点是sizeof()的运用。sizeof用于返回其操作数(变量、类型)相对应数据类型的字节数。因此,选项A是错误的,因为p是一个地址,它既不是一个数据类型,也不是数据变量。

51.B

52.B解析:该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时,n的值是9,循环体内,先经过n--运算,n的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。由循环条件n>6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环时,输出为6,由此可以排除选项C)。

53.B

54.C解析:目前,在社会上使用的程序设计语言有上百种,它们都被称为计算机“高级语言”,如BASIC,C语言等。但是对于计算机本身来说,它并不能直接识别由高级语言编写的程序,只能接受并处理由0,1代码组成的数据,即所谓的机器语言代码。目前,一些程序设计语言(如Visual\u3000Basic\u3000Visual\u3000C++和Visual\u3000FoxPro等)所具有的面向对象技术,C语言则没有。

55.A

56.A解析:C语言中[]比*优先级高,因此line先与[5]结合,形成line[5]形式,这是数组形式,它有5个元素,然后再与line前面的'*'结合,表示此数组是一个指针数组,每个数组元素都是一个基类型为char的指针变量。

57.C解析:本题中的s数组是一个二维字符数组,选项A)是一个双重指针,但字符串的长度没有限制;选项B)是一个元素为字符指针的数组,同样的也是字符串的长度没有限制;选项D)中,每个字符串的长度限制为4,不正确。注意:用字符数组作为字符串和用指针指向的一个字符串之间的区别。

58.B解析:本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变量访问,即st.i,也可以用等价的指针形式,即(*p).i和p->i。

59.A解析:标识符是以字母或下划线开头,由字母、数字或下划线组成的字符序列(例如,-max含非法字符-),并且用户标识符不能与C语言中的32个关键字同名(例如,int是关键字,不是合法的用户标识符)。选项B中-max不是字母、数字或下划线组成的字符序列;选项C中3COM不是由字母或下划线开头;选项D中int为C语言中的关键字;选项A中全部为合法的标识符。

60.C解析:函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。

61.C

62.D这是二维数组,所以A错\r\n数组是从0开始,所以第一个不能有2,第二个不能有3.所以B,C错。

63.B解析:数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。

64.D结构化程序设计的基本要点:①采用自顶向下、逐步求精的程序设计方法;②任何程序都可由顺序、选择和循环3种基本控制结构构造。

65.D答案为D,空格表示结束,则c里面的内容为'acat!',前面没有空格。

66.B在本题中,程序首先定义一个结构体,结构体中含有两个结构体成员,两个结构体成员都是数组。

在主函数中,首先定义了一个大小为3的该结构体数组s,并对其进行初始化操作,然后定义了一个该结构体类型的指针变量p,使其指向结构体数组s,接着定义两个变量,整型变量i作为循环变量,浮点型变量sum用来保存和计算结果。然后执行for循环。

当循环变量i=0时,执行sum=sum+p->score[i];语句,p->score[0]表示结构体数组中第一个结构体变量的score[0]值,即90,本次循环结束后,sum的值为90。

温馨提示

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

评论

0/150

提交评论