2021年吉林省白山市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第1页
2021年吉林省白山市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第2页
2021年吉林省白山市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第3页
2021年吉林省白山市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第4页
2021年吉林省白山市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

2021年吉林省白山市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下关于算法的叙述中错误的是()。

A.算法可以用伪代码、流程图等多种形式来描述

B.一个正确的算法必须有输入

C.一个正确的算法必须有输出

D.用流程图描述的算法可以用任何一种计算机高级语言编写成程序代码

2.若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x一y)(x++):(y++)中的条件表达式(x-y)等价的是()A.(x-y<0|x-y>0)B.x-y<0).C.(x-y>0)D.(x-y==)

3.设以下变量均为int类型,表达式的值不为7的是A.(x=y=6,x+y,x+1)

B.(x=6,x+1,y=6,x+y)

C.(x=y=6,x+y,y+1)

D.(y=6,y+1,x=y,x+1)

4.判断有向图是否存在回路,利用()方法最佳。

A.求关键路径B.求最短路径C.拓扑排序D.广度优先遍历

5.C语言规定,程序中各函数之间()

A.既允许直接递归调用也允许间接递归调用

B.不允许直接递归调用也不允许间接递归调用

C.允许直接递归调用不允许间接递归调用

D.不允许直接递归调用允许间接递归调用

6.

7.

8.若有定义“inta;longb;doublex,y;”,则以下选项中正确的表达式是()。

A.a=x<>yB.a%(int)(x-y)C.(a*y)%bD.y=x+y=x

9.C语言源程序的扩展名是()。

A..CB..exeC..objD..cp

10.在浏览WWW时,如果连接到一个安全的站点,应当以()开头来书写统一资源定位器。

A.shttp://B.http:s//C.http://D.https//

11.下列对于软件测试的描述中正确的是()。

A.软件测试的目的是证明程序是否正确

B.软件测试的目的是使程序运行结果正确

C.软件测试的目的是尽可能多地发现程序中的错误

D.软件测试的目的是使程序符合结构化原则

12.以下程序的主函数中调用了在其面前定义的fun函数#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}则以下选项中错误的fun函数首部是()。、A.doublefun(doublea[l5])

B.doublefun(double*a)

C.doublefun(doublea[])

D.doublefun(doublea)

13.在一个元素个数为N的数组里,找到升序排在N/5位置的元素的最优算法时间复杂度是()A.O(n)B.O(nlogn)C.O(n(logn)2)D.O(n3/2)

14.请问对一个排好序的数组进行查找,时间复杂度为()

A.O(n)B.O(lgn)C.O(nlgn)D.O(1)

15.

16.

17.以下选项中不能用做C程序合法常量的是()。

A.1,234B.‘\123’C.123D.“\x7G”

18.有3个节点的二叉树可能有()种。

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

19.设"char**s;",以下正确的表达式是()。

A.s="computer";B.*s="computer";C.**s="computer";D.*s='c';

20.设有以下宏定义:#defineN3#defineY(n)((N+1)*n)则执行以下语句后,z的值为______。z=2*(N+Y(5+1));A.出错B.42C.48D.54

二、2.填空题(20题)21.下面程序的运行结果:【】。

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[o];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);printf("%d\n",s);

}

22.下面的程序能求a:ab.c文件中最长行和它的位置。

#include<stdio.h>

main()

{intlin,i,j=0,k=0;

charc;

FILE*fp;

fp=(【】("a:ab.c","r");

rewind(fp);

while(fgetc(fp)!=EOF)

i=1;

【】

{i++;

j++;

if(i>=k){k=i;【】;}

}

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

【】;

}

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

main()

{char*k="aeiou";

for(;*k;k++)printf("%c",*k);

}

24.由25人围坐成圆圈,先由任意一人开始顺时针沿用1~25依次编号,然后从1号开始顺时针报数(1、2、3…),凡报5的倍数者出圈,剩下者继续报数,求出最后出圈者的编号。

#include

main()

{inta[26],j,n,count;

for(j=1;j<=25;j++)a[j]=j;

j=1;count=0;n=【】;

do

{

if(a[j]!=0)

{n++;

if(n%5==0)

{【】;

if(count==24)printf("%d\n",,j);

count++;

}

}

j++;

if(j>25)j=1;

}

while(【】);

}

25.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

clrscr();

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);}

26.以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字符依次放到该文

件中,用井作为结束输入的标志。请填空。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenameoffile\n");

gets(fname);

if((fp=【】)==NULL)

{printf("Cannotope\n");exit(O);}

printf("Enterdata\n");

while((ch=getchar())!='#')

fputc(【】,fp);

fclose(fp);

}

27.以下函数的功能是求x的y次方,请填空

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

}

28.数据的逻辑结构有线性结构和______两大类。

29.数据结构分为逻辑结构与存储结构,线性链表属于【】。

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

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

31.下列程序的输出结果是16.00,请填空:

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

32.执行下列语句段后,x的值是______。

int*p,x;

x=100;

p=&x;

x=*p+50;

33.在面向对象方法中,类之间共享属性和操作的机制称为______。

34.【】是从二维表列的方向进行的运算。

35.以下程序的运行结果为【】。

#include<stdio.h>

main()

{staticintb[2][3]={{1,2,3},{4,5,6}};

staticint*pb[]={b[0],b[1]};

inti,j;

i=0;

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

printf("b[%d][%d]=%d",i,j,*(pb[i]+j));

printf("\n");

}

36.执行下面程序段后,k的值是【】。

r=1;n=203;k=1

do}k*=n%10*r;n/=10;r++;}while(n);

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

main()

{inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

{if(i==2||i==4)continue;

j=0;

do{s+=a[i][j];j++;}while(j<4);

}

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

}

38.下列函数从字符数组s[]中删除和c一样的字符,请在下面横线处填空。voiddelete(s,C)chars[],c;{inti,j;for(i=j=0;();i++)if(s[i]!='c')s[j++]=s[i];s[j]="\0";}

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

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

for(i=1;i<5.i++)

PRINT(a+i);

printf("\n");

}

40.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,当s<t时返回负值。请填空。

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

三、1.选择题(20题)41.下列描述中,不是线性表顺序存储结构特征的是

A.不便于插入和删除B.需要连续的存储空间C.可随机访问D.需另外开辟空间来保存元素之间的关系

42.有下面程序段

#include"stdio.h"

#include"string.h"

main()

{chara[3][20]={{"china"},{"isa"},{"bigcountry!"}};

chark[100]={0},*p=k;

inti;

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

{p=strcat(p,a[i]);}

i=strlen(p);

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

则程序段的输出结果是

A.18B.19C.20D.21

43.有以下定义语句

doublea,b;intw;longc;

若各变量已正确赋值,则下列选项中正确的表达式是A.a=a+b=b++B.w%(int)a+b)C.(c+w)%(int)aD.w=a==b;

44.有如下定义#defineD2intx=5;floaty=3.83;charC='D';则下面选项中错误的是

A.x++;B.y++;C.c++;D.D++;

45.C语言的基本单位是()。

A.函数B.过程C.子程序D.子函数

46.不能把字符串"HELLO!"赋绐数组b的语句是______。

A.charb[10]={'H,''E','L','L','O','!'};

B.charb[10]={'h','e'.,l','l','o''!'};

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

47.有以下程序:voidf(intb[]){inti;for(i=2;i<6;i++)b[i]*=2;}main(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;f(A);for(i=0;i<10;i++)printf("%d,",a[i]);}程序运行后的输出结果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.1,2,6,8,10,12,7,8,9,10,

C.1,2,3,4,10,12,14,16,9,10,

D.1,2,6,8,10,12,14,16,9,10,

48.以下叙述中正确的是______。

A.C语言比其他语言高级

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

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

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

49.请选出以下程序的输出结果______。#include<stdio.h>sub(x,y,z)intx,y,*z;{*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,%d\n",a,b,c);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

50.有以下程序:main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}程序运行后的输出结果是______。

A.42B.45C.56D.60

51.若有以下定义:chars[20]="programming",*ps=s;则不能代表字符o的表达式是_______。

A.ps+2B.s[2]C.ps[2]D.ps+=2,*ps

52.以下程序的运行结果是______。main(){chart=02;printf("%d\n",t=++t>>2);}

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

53.请选出以下程序的输出结果()。#include<stdio.h>sub(int*s,inty){staticintt=3;y=s[t];t--;}main(){inta[]={1,2,3,4},i,x=0;for(i=0;i<4;i++){sub(a,x);printf("%d",x);}printf("\n");}

A.1234B.4321C.0D.4444

54.以下只有在使用时才为该类型变量分配内存的存储类说明是______。

A.auto和static

B.auto和register

C.register和static

D.extern和register

55.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a<回车>后,以下叙述正确的是()。

A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入第2个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

56.在设计程序时,应采纳的原则之一是()。

A.不限制goto语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解

57.有以下程序#include<stdio.h>voidWriteStr(char*fn,char*str){FILE*fp;fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}main(){WriteStr("t1.dat","start");WriteStr("t1.dat","end");}程序运行后,文件t1.dat中的内容是

A.startB.endC.startendD.endrt

58.若有如下程序:intm=1;main(){intt=0,s=0;{intm=4;s+=m;)t+=m;printf("%d,%d\n",s,t);}则程序运行后的输出结果是()。

A.1,1B.1,4C.4,1D.4,4

59.阅读下面程序,则程序段的功能是

#include"stdio.h"

main()

{intc[]={23,1,56,234,7,0,34},i,j,t;

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

{t=c[i];j=i-1;

while(j>=0&&t>c[j])

{c[j+1]=c[j];j--;}

c[j+1]=t;}

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

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

putchar(′\n′);}

A.对数组元素的升序排列B.对数组元素的降序排列C.对数组元素的倒序排列D.对数组元素的随机排列

60.若有说明语句:doubleop,a;,则能通过scanf语句正确给输入项读入数据的程序段是()。

A.*p=&a;scanf("%1f",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%1f",*p);

D.p=&a;scanf("%1f",p);

四、选择题(20题)61.(74)用链表表示线性表的优点是()

A.便于插入和删除操作

B.数据元素的物理顺序与逻辑顺序相同

C.花费的存储空间较顺序存储少

D.便于随机存取

62.以下程序的输出结果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1

63.(61)数据结构中,与所使用的计算机无关的是数据的()

A.存储结构

B.物理结构

C.逻辑结构

D.物理和存储结构

64.以下程序的输出结果是()。

A.678910

B.13579

C.12345

D.62345

65.软件设计中,有利于提高模块独立性的一个准则是______。A.低内聚低耦合B.低内聚高耦合C.高内聚低耦合D.高内聚高耦合

66.以下关于C语言的叙述中正确的是()。

A.C语言中的注释不可以夹在变量名或关键字的中间

B.C语言中的变量可以在使用之前的任何位置进行定义

C.在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致

D.C语言的数值常量中夹带空格不影响常量值的正确表示

67.

68.若执行以下程序时从键盘上输入9,则输出结果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8

69.

70.

71.以下数组定义中错误的是()。

72.

73.设整型变量n的值为2,执行语句“n+=n-=n*n;”后,n的值是__________

A.0B.4C.-4D.2

74.

75.

76.

77.有以下程序:

当运行时输入:a<回车>后,以下叙述正确的是()。

A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入第2个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

78.关系规范理论是关系数据库进行逻辑设计的基础,这个理论最基本的要求是关系中的每个属性是()。

A.类型不变的B.宽度不变的C.不可分割的D.互不相关的

79.在C语言中,运算对象必须是整型数的运算符是()。

A.%B.\C.%和\D.**

80.以下选项中合法的标识符是()。

五、程序改错题(1题)81.给定程序中,函数proc()的功能是:使数组中的元素的值增加10倍。修改其中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写一个函数proc,它的功能是:求出1~m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

例如,若传给m的值为70,则程序输出:

7111421222833354244495556636670

注意:部分源程序给出如下。

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidproc(intm,int*a,int*n)

{}

voidmain

{

intarr[N],n,k;

system("CLS");

proc(70,arr,&n);

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

if((k+1)%20==0)//每行输出20个数

{printf("%4d",arr[k]);

printf("\n");

}

else

printf("%4d",arr[k]);

printf("\n");

}

参考答案

1.B【答案】B

【知识点】算法描述

【解析】一个算法应该有0个或多个输入,但是必须有一个或多个输出。

2.A条件表达式:x=表达式1,表达式2:表达式3的含义是:先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x。若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x。在本题中与表达式1:(x-y等价的是(x-y>0)。

3.B本题考查逗号表达式的用法。C语言中逗号“,”也是一种运算符,称为逗号运算符,其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式1,表达式2。其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,…,表达式n。它的值为表达式n的值。

4.C

5.A解析:C语言规定,程序中各函数之间既允许直接递归调用也允许间接递归调用。

6.D

7.A

8.BC语言中没有“<>”运算符,所以A选项错误。运算符“%”的左右两个操作数必须为整型数据,所以B选项正确。表达式“a*y”的结果为double型,所以C选项错误。不能将值赋给像“x+y”这样的表达式,所以D选项错误。故本题答案为B选项。

9.AC语言源程序的扩展名是.C,目标文件的扩展名是.obj,可执行文件的扩展名是.exe。故本题答案为A选项。

10.C

11.C解析:关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。本题答案为C。

12.A由题可知fun的参数为变量,而a[15]为常量,所以答案为A。

13.A

14.B

15.A

16.A

17.AA选项中逗号是一个操作符。

18.C

19.B

20.D

21.66解析:s=f(&aa[0],3)=aa[0]+aa[1]+aa[2]=1+2+3=6。

22.fopenwhile(fgetc(fp)!='\n')lin=jclose(fp)fopen\r\nwhile(fgetc(fp)!='\\n')\r\nlin=j\r\nclose(fp)

23.aeiou

24.0a[j]=0count<25

25.for(i=0;i<t;i++)0for(i=0;i<t;i++)\r\n0解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应使*k的值为数组中的某一下标值,即*k=0。

26.fopen(fname:"w")

27.xx解析:函数的定义形式为:

函数类型函数名(形参表)

{

类型说明语句;

执行语句;

}

本题中函数的功能是:累积变量以求捐变量的Y次方。

28.非线性结构非线性结构

29.存储结构

30.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:

类型说明符*指针变量名;

解析:本题,已知结果z=16.00,即16.0=a/2+b*x/y+1/2,分别把a、b,代入,得到16.0=9/2+2*x/1.1+1/2。因为a=9,a是整型,所以9/2的值在没有进行类型转换时,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。

32.150150解析:本题先给变量x赋初始值100,然后将指针p指向变量x,*p是取指针p所指地址的内容,即100,所以x=100+50=150。

33.继承继承

34.投影投影解析:在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交,差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。投影是从二维表的列方向上进行的运算。

35.b[0][0]=1b[0][1]=2b[0][2]=3

36.00解析:本题考查的是do…while循环。第一次执行循环体,因为k=1,r=1,n=20;所以k=1*20%10*1=0,n=20/10=2,r=2;第二次执行循环体,k=0*2%10*2=0,n=10/10=1,r=3;第三次执行循环体,k=0*1%10*3=0,n=1/10=0,r=4。所以k的值为0。

37.92

38.s[i]!='\0's[i]!='\\0'解析:本题是要删除字符数组中和c一样的字符,for循环实现的功能是逐个读出字符数组s中的元素,并和字符c做比较,直到遇到字符串结束标志'\\0',结束循环,所以横线上应该填s[i]!='\\0'。

39.1234theend1,2,3,4,theend解析:本题考查带参数的宏的定义。第1次循环,i=1时,调用PRINT(1),P(1)输出1;第2次循环,i=2时,调用PRINT(2),P(2)输出2:第3次循环,i=3时,调用PRINT(3),P(3)输出3:第4次循环,i=4时,调用PRINT(4),P(4)输出4,theend。

40.*s-*t*s-*t解析:两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回0值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回。所以在空框处应填入*s-*t,保证在e>t时返回正值,当s<t时返回负值。

41.D解析:线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此,不需要另外开辟空间来保存元素之间的关系。

42.B解析:字符串连接函数streat的调用形式如下:strcat(s1,s2)。此函数将s2所指字符串的内容连接到s1所指的字符串后面,并自动覆盖s1串末尾的尾标,函数返回s1的地址值。

43.C解析:选项A不是合法的赋值语句,将最右边的第一个赋值表达式加括号即为a=a+(b=b++)才正确,故选项A不正确。选项B中运算符%的对象必须是整型,而在选项B中(int)a+b为double型,故选项B不正确。a,b都为double型,应当避免使用a==b这样的关系表达式,因为通常存放在内存中的实型数据是有误差的,因此不可能精确相等,这将导致关系表达式a==b总为0。所以,4个选项中选项C符合题意。

44.D解析:C语言中++运算符的对象可以是整型、实型和字符型,但不可是常量,本题中D为常量。

45.AA。【解析】C语言是函数式的语言。它的基本组成单位是函数,在C语言中任何程序都是由一个或者多个函数组成的。

46.B解析:在C语言中,写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字符串。

47.B解析:本题在调用函数时,实参是数组名也是把数组a的首地址传递给形参,由条件i=2且i<6得出函数将列以a[2]开始的4个元素(3、4、5、6)进行乘2操作,结果分别是a[2]=6、a[3]=8、a[4]=10、a[5]=12。a[0]、a[1]、a[6]、a[7]、a[8]、a[9]的值没有发生变化。

48.C解析:计算机语言分为低级语言、汇编语言和高级语言,C语言属于高级语言,但并不是说C语言比其他语言高级,所以选项A错误;除了低级语言外,其他各种语言都必须译成能被计算机识别的二进制数才能执行,选项B错误;C语言出现从1972年到1973年间,并不是出现最晚的语言,所以选项D也是错误的。

49.B解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&A),10和5届于值传递,a是属于地址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&B)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

50.A解析:本题考查while语句和if语句的嵌套,程序段实现的功能是将p[1]至p[7]中的奇数相加求和并输出,j=13+15+17=45。

51.A解析:ps+2就是s[2]的地址,即存放字符o的地址,所以A是错误的。

52.A解析:t的二进制形式是00000010,前置加之后,t值的二进制形式为00000011,右移两位,最后两个1将移出,t值最后是0。

53.C解析:本题考查函数的形参和实参的关系。函数sub将实参x的值传给形参y,y值的改变不能使x的值发生改变,所以输出的x值始终为0。

54.B解析:extern、register、static、auto分别是定义外部变量、寄存器变量、静态变量、自动变量,其中,自动变量和寄存器变量属于动态存储,调用时临时分配单元而静态变量和外部变量属于静态存储,在整个程序运行时都存在。

55.A解析:本题考查的是getchar()函数。getchar()函数执行时将从键盘缓冲区中读取用户的输入,而不管输入的是否可打印字符,所以当输入a<回车>后,键盘缓冲区被输入的实际上是两个字符:'a'和'\\n'。故选项A的说法是正确的。

56.D解析:滥用goto语句将使程序流程无规律,可读性差,因此选项A)不选;注解行有利于对程序的理解,不应减少或取消,选项B)也不选;程序的长短要依照实际情况而论,而不是越短越好,选项C)也不选。

57.B解析:本题主要考查的是打开文件函数fopen().题目开始定义了一个函数,该函数有两个字符指针型参数,其作用分别用来传入文件名和文件内容。函数首先定义一个文件指针印,然后使用fopen()函数打开参数fn所指定的文件。本题的关键就在于fopen()函数的第2个参数,这个参数指定了文件打开的方式。'w'表示为写而打开一个文本文件,如果文件不存在,则新建一个文件,否则将清空原有文件。接下来函数使用fputs()函数将参数str中的内容写入文件,最后调用fclose()函数关闭文件。在主函数中两次调用该函数,但写入的是同一个文件,故只有最后一次写入有效。所以应该选择B。

58.C解析:{intm=4;s+=m;}是复合语句,m=4,s+=m等价于s=s+m=0+4=4。t+=m等价于t=t+m,这里m为全局变量,值为1,t=t+m=O+1=1。

59.B解析:读懂两个循环的关系,是解这个题目的关键,本题的第一个for循环的作用是实现对数组元素的遍历

温馨提示

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

评论

0/150

提交评论