2022年安徽省铜陵市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2022年安徽省铜陵市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2022年安徽省铜陵市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2022年安徽省铜陵市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2022年安徽省铜陵市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

2022年安徽省铜陵市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为________。

A.24B.48C.72D.53

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

main()

{inta,b,d=25;

a=d/10%9;

b=a&&(-1);

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

A.6,1B.2,1C.6,0D.2,0

3.以下程序的运行结果是______。#include<stdio.h>main(){inta[]:{1,2,3,4,5,6,7,8,9,10,11,12):int*p=a+5,*q=NULL:*q=*(p+5):printf("%d%d\n",*p,*q);}

A.运行后报错B.66C.612D.55

4.程序运行后的输出结果是()。A.0304.B.2050C.3344D.3040

5.有如下程序:

longfib(intn)

{if(n>2)return(fib(n-1)+fib(n-2));

elsereturn(2);

}

main()

{printf("%d\n",fib(3));}

该程序的输出结果是A.A.2B.4C.6D.8

6.在下面的字符数组定义中,哪一个有语法错误()。A.chara[20]=”abcdefg”;

B.chara[]=”x+y=55.”;

C.chara[15];

D.chara[10]=’5’;

7.若一组记录的排序码为(7,9,3,5,1,2,10),则利用堆排序的方法建立的初始堆为()

A.10,7,9,3,5,1,2

B.10,9,7,5,1,2,3

C.10,9,7,5,3,2,1

D.10,9,7,3,2,1,5

8.以下程序段中,与语句“k—a>b?(b>c?1:O):0;”功能相同的是()。

A.if(a>b)(b>c)k=1;elsek=0;

B.if((a>b)‖(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b>c)k=1;

D.if(a>b)k=1;elseif(b<=c)k=1;elsek=0:

9.

10.若有定义:int*p[3];,则以下叙述中正确的是()。

A.定义了一个基类型为int的指针变量p,该变量具有三个指针

B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针

C.定义了一个名为*p的整型数组,该数组含有三个int类型元素

D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素

11.有以下程序:

A.1,5,9,B.1,4,7,C.3,5,7,D.3,6,9,

12.带头结点的单链表head为空的判定条件是()。

A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL

13.有以下程序段:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->x

14.若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以哪种方式打开文件()。

A.wbB.wb+C.rb+D.rb

15.以下能正确定义一维数组的选项是()。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

16.设有以下语句:intx=10;x+=3+x%(3),则x的值是()。

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

17.程序设计方法要求在程序设计过程中,()。

A.先编制出程序,经调试使程序运行结果正确后再画出程序的流程图

B.先编制出程序,经调试使程序运行结果正确后再在程序中的适当位置处加注释

C.先画出流程图,再根据流程图编制出程序,最后经调试使程序运行结果正确后再在程序中的适当位置处加注释

D.以上3种说法都不对

18.下列程序段的输出结果是()。chara=9,b=020;prihtf("%o\n",~a&b<<1);

A.100000B.8C.40D.77

19.若定义下列结构体,结构体变量p的出生年份赋值正确的语句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;

A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;

20.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放的存储器内,该数组按行存放,元素A[8][5]的起始地址为()。

A.SA+141B.SA+144C.SA+222D.SA+225

二、2.填空题(20题)21.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

22.最简单的交换排序方法是______。

23.以下程序运行后的输出结果是()。main(){inta,b,c;a=10;b=20;c=(a/b<1)&&(a%b<1);printf("%d%d%d\n",a,b,C);}

24.下列程序执行输出的结果是【】。

#include<stdio.h>

f(inta)

{intb=0;

staticc=3;

a=c++,b++;

return(a);}

main()

{inta=2,i,k;

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

k=f(a++);

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

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

inti=9;

printf("%o\n",i);

26.下面程序的运行结果是【】。

#defineN10

#defines(x)x*x

#definef(x)(x*x)

mam()

{

intil,i2;

i1=1000/s(N);i2=1000/f(N);

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

}

27.以下函数的功能是计算s=1+1/21+1/3!+…+1/n!,请填空。

doublefun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k;

s=s+fac;

}

}

28.若a是int型变量,则表达式(a=2*3,a*2),a+4的值为______。

29.下列执行后输出的结果是【】。

main()

{intarr[10],i,k=0

for(i=0;i<10;i++)atr[i]=i

for(i=1,i<4;i++)k+=arr[i]+i;

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

}

30.一个项目具有一个项目经理,一个项目经理可管理多个项目,则实体“项目经理”与实体“项目”的联系属于()的联系。

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

main()

{intx,a=1,b=2,c=3,d=4;

x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;

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

}

32.以下程序运行时若从键盘输入:102030<回车>。输出结果是()。

#include<stdio.h>

main()

{inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",i,j,k);

}

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

#defineMAX(x,y)(x)>(y)?(x)L:(y)

main()

{inta=5,b=2,C=3,d=3,t;

t=MAX(a+b,c+D)*10;

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

}

34.以下程序运行后的输出结果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}

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

#include<stdio.h>

#include<string.h>

typcdefstructstudent

{charname[10];

longsno;

floatscore;

}STU;

main()

{STUa={"Zhangsan",2001,95},b={"Shangxian",2002,90},

c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%1d%s\n",d.sno,p->name);

}

36.有如下图所示的双链表结构,请根据图示完成结构体的定义:

structaa

{intdata;

【】}node;

37.数据的______结构在计算机存储空问中的存放形式称为数据的存储结构或物理结构。

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

intn='c':

switch(n++)

{default:printf("error");break;

case'a':printf("good");break;

case'c':printf("moming");

case'd':printf("class");

}

39.在双链表中每个结点有两个指针域:一个指向【】,另一个指向【】。

40.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。

三、1.选择题(20题)41.有以下程序;intf1(doubleA){returna*a;}intf2(doublex,doubley){doublea,b;a=n(x);b=f1(y);returna+b;}main(){doublew;w=f2(1.1,2.0);┇}变量w中的值是()

A.5.21B.5C.5D.0

42.下列实体的联系中,属于多对多联系的是()

A.学生与课程B.学校与校长C.住院的病人与病床D.工资级别与职工

43.以下程序的输出结果是______。intf(){staticinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);

A.20B.24C.25D.15

44.设有关系R和S,关系代数表达式为R-(R-S)表示的是

A.R∩SB.R-SC.R∪SD.R÷S

45.设有以下语句:chara=3,b=6,C;c=a|b<<2;printf("%d\n",C);则c的二进制值是()。

A.11011B.10100C.11100D.11000

46.以下关于long、int和short类型数据占用内存大小的叙述中正确的是(),

A.均占4个字节B.根据数据的大小来决定所占内存的字节数C.由用户自己定义D.由C语言编译系统决定

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

A.线性表是由n个元素组成的一个有限序列

B.线性表是一种线性结构

C.线性表的所有结点有且仅有一个前件和后件

D.线性表可以是空表

48.以下程序的输出结果是_______。main(){charst[20]="hello\0\t\\";printf(%d%d\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

49.以下程序的输出结果是()。main(){inta=5,b=4,c=6,d;printf("%d\n",d=a>b?(a>c?a:C):(B));}

A.5B.4C.6D.不确定

50.下面程序的输出结果是()。#defineSQR(X)2*X+1main(){inta,b,C;a=3;b=2;C=1;a*=SQR(b+c)/SQR(b+c);printf("%d",a);}

A.3B.18C.21D.24

51.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()

52.有以下程序voidf(int*x,int*y){intt;t=*X;*X=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7);while(p>q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序运行后的输出结果是

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

B.5,6,7,8,1,2,3,4,

C.1,2,3,4,5,6,7,8,

D.8,7,6,5,4,3,2,1,

53.有以下程序:#include<stdio,h>main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;printf("%d\n",n);}程序运行后的输出结果是()。

A.0B.4C.6D.7

54.设有如下定义intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()

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

55.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()。

A.称为函数的直接递归调用B.称为函数的间接递归调用C.称为函数的循环调用D.C语言中不允许这样的递归调用

56.有以下程序:main(){char*p[]={"3697","2584"};inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!='\0'){if((p[il[j]-'0')%2)num=10*num+p[i][j]-'0';j+=2;}printf("%d\n",num);}程序执行后的输出结果是()。

A.35B.37C.39D.3975

57.设整型数i=5,则printf("%d",i+++++i);的输出为______。

A.10B.11C.12D.语法错误

58.若以下程序所生成的可执行文件名为file1.exe,main(intargc,char*argv[]){while(argc-->0){++argv;printf("%s",*argv);}}当键入以下命令执行该程序时:FILE1CHINABEUINGSHANGHAI程序的输出结果是()

A.CHINABEIJIANGSHANGHAI

B.FILE1CHINABEIJING

C.CBS

D.FCB

59.下列选项中合法的赋值语句是()。

A.a=b=34B.a=34,b=34C.i-1;D.m=(int)(x+y);

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

A.一个算法的空间复杂度大,则其时间复杂度也必定大

B.一个算法的空间复杂度大,则其时间复杂度必定小

C.一个算法的时间复杂度大,则其空间复杂度必定小

D.上述三种说法都不对

四、选择题(20题)61.已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是()

A.堆排序B.直接插入排序C.快速排序D.直接选择排序

62.

63.有以下程序:

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

A.4B.34C.31D.32

64.以下选项中可用作C程序合法实数的是()。A..1eOB.3.0e0.2C.E9D.9.12E

65.在软件开发中,需求分析阶段可以使用的工具是()。

A.N—s图B.DFD图C.PAD图D.程序流程图

66.下列判断正确的是()。A.A.chara="ABCD":等价于char*a;*a="ABCD":

B.charstr[10]={"ABCD"}:等价于charstr[10];str[]={"ABCD"};

C.char*s="ABCD":等价于chars;*s="ABCD";

D.charc[5]="ABCD",d[5]="ABCD":等价于charc[5]-d[5]="ABCD";

67.

68.能正确表示“当x的取值在[1,10]和[100,110]范围内为真,否则为假”的表达式是()。A.A.(x>=1)&&(x<=10)&&(x>=100)&&(X<=110)B.(x>=1)

C.((x>=1)&&(x<=10))||((x>=100)&&(x<=110))

D.(x>=1)||(x<=10)&&(x>=100)||(x<=110)

69.下列关于栈的叙述中正确的是()。

A.在栈中只能插入数据,不能删除数据

B.在栈中只能删除数据,不能插入数据

C.栈是先进后出(FILO.的线性表

D.栈是先进先出(FIFO.的线性表

70.以下叙述中正确的是()。A.A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D.c语言中的文件是流式文件,因此只能顺序存取数据

71.有以下程序段:

inti,n;

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

{n=rand()%5;

switch(n)

{casel:

case3:printf("%d\n",n);break;

case2:

case4:print?("%d\n",n);continue;

case():exit(0);

}

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

}

以下关于程序段执行情况的叙述,正确的是()。

A.for循环语句固定执行8次

B.当产生的随机数n为4时结束循环操作

C.当产生的随机数n为1和2时不做任何操作

D.当产生的随机数n为0时结束程序运行

72.

73.

74.输出语句:prinff(”%d\n”,ll+011);的输出结果是()。

A.20B.22C.022D.021

75.下列能正确进行字符串赋值的是()。A.A.chars[5]={”ABCI)E”);

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="ABCDE";

D.char*s;printf("%S",s);

76.以下对一维数组c进行正确的定义初始化的语句是

A.intc[10]=0;B.intc[10]={0}*10;

C.intc[1]={0,0,0,0,0,0,0};D.intc[10]={0};

77.关系模型允许定义三类数据约束,下列不属于数据约束的是()。A.A.实体完整性约束B.参照完整性约束C.域完整性约束D.用户自定义的完整性约束

78.

79.有以下程序:

#include<stdio.h>

intf(intx):

main

{intn=1,m;

m=f(f(f(n)));printf("%d\n",m);

}

intf(intx)

{returnx*2;)

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

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

80.

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

#include<stdio.h>

main

{inti;

for(i=1;i<=10,i++)

{if((i*i>=20)&&(i*i<=100))

break;

}

printf("%d\n",i*i;

}

A.49B.36C.25D.64

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:传人一个整数n,计算如下公式的值。t=1/2-1/3-…-1/n例如,若输入3,则应输出0.166667。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n-1)+1/2n)例如,若输入10,则输出为S=3.597740。n的值要求大于1但不大于100。注意:部分源程序给出如下。请勿改动函数main()和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.D

2.B解析:算术运行符“/”、“%”的优先级处于同一级,并且两者的结合性都是从左到右。所以算术表达式运算过程为:a=25/10%9=2%9=2:当逻辑运算符“&&”两边的值都是非零时,逻辑表达式的值才为真(即为1)。所以b=2&&(-1)=1。

3.A

4.D[解析]第一次循环沩0.i%2为0.执行switch(a[0]%62)中的case0语句后内容即a[0]++,a[0]的值变成3;第二次循环的值为1.i%62为1.执行case1:a[]=0;所以a[1]的值变成0;第三次循环的值为2.i%62为0.执行switch([2]%62)中的case1语句后的内容a[2]--,a[2]的值变成4;第四次循环的值为3.i%2为1.执行case1:ai]=0;所以a[3]的值变成0.

5.B

6.D

7.B

8.A本题考查了双重三目运算符的用法。例如:表达式a>b?c:d可以看成,当a>b时取C的值,否则取d的值。在本题中k=a>b?(b>c?1:0):0可以看做:当b>c时为真,则k=a>b?1:0。当bb?0:0。也就是说,当a>b并且b>C时,k=1,否则k=0。所以A选项符合题意。

9.D

10.B解析:当一个数组中的元素均为指针类型数据时,该数组就称为指针数组。int*p[3]表示此数组是指针类型的,每个数组元素(指针变量)都是指向一个整型的指针变量。

11.C即输出x[0][2]x[l][1]x[2][0]分别为357。

12.B

13.C解析:要计算一个复杂的表达式时,首先要弄明白表达式中所有运算符的优先级与结合性,本题中所涉及的运算符中,->的优先级最高,*和++的优先级相同,但其结合性为从右至左。所以选项A等价于*pt->y)也就是pt所指向的结构体的成员指针变量y所指向的内容。从前面的程序段不难看出,pt指向结构体数组c的首地址,也就是指向它的第1个元素,在它的第1个元素中,指针变量y又被初始化为指向控型数组a的首地址,即指向数组a的第1个元素。故选项A中的表达式的值为a[0],也就是1。选项B中表达式的值就是c[0].x,即10。根据优先级和结合性,选项C中的表达式等价于++(pt->x),由于是前缀++,所以整个表达式的值为pt->x的值加1,故为11。而选项D中,++是后缀形式,所以(pt++)的值还是pt的原值,即等于pt->x的值10。故应该选择C。

14.B解析:本题考查文件使用方式标识符。方式“wb”为输出打开一个二进制文件;方式“wb+”为读写建立一个新的二进制文件;方式“rb+”为读写打开一个二进制文件:方式“rb”为输入打开一个二进制文件。

15.B解析:选项A)定义的是长度为5的数组元素,但初值有6个元素,所以错误;选项C)不符合数组定义形式,数组名后应加上“[];选项D)的类型说明符错误,应改为char;选项B)中的0,1,2,3,4,5分别表示对应字符的ASCII码,所以正确。

16.A

17.D解析:程序设计的过程应是先画出流程图,然后根据流程图编制出程序,所以选项A错误。程序中的注释是为了提高程序的可读性,注释必须在编制程序的同时加入,所以,选项B和选项C错误。综上所述,本题的正确答案为选项D。

18.C解析:将变量a按位求反,再与b按位与,最后左移1位。9的二进制表示为00001001,020的二进制表示为00010000。a按位求反为11110110,再与b按位与结果为00010000,左移1位结果为00100000。按八进制输出为040。

19.C解析:本题主要考查怎样为嵌套定义的结构中的成员赋值:由于worker中的birth是一个st型的结构,在给birth赋值时,不能将birth作为一个整体,要用“.”运算再深入一层访问到最基本的成员x、y、z。

20.C

21.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。

22.冒泡排序冒泡排序解析:交换排序是指借助数据元素之间的互相交换进行排序的一种方法。冒泡排序是一种最简单的交换排序方法,它是通过相邻元素之间的相互交换逐步将线性表变成有序。

23.1020010200解析:本题考查的是混合运算。“(a/b<1)&&(a%b<1)”的运算顺序为:括号>算术运算符>关系运算符>逻辑运算符。其中a%b=10,a,b=0,所以a%b<1的值为0,a/b<1的值为1,故整个表达式的结果为0,所以输出的a,b,c的值为10200。

24.44解析:本题考查了静态存储类别的局部变量的特点。静态存储类别的局部变量在程序的整个生存周期内都存在,但作用域却只局限于定义它的函数或局部范围。当i=0时执行第一次for循环,k=f(2),a=c++,b++;因为赋值运算符的优先级高于逗号运算符,所以a=3,c=4;当i=1时执行第二次for循环,k=f(3),a=c++,b++;因为c为静态局部变量所以保留着这一次执行的结果值4,所以a=4,c=5,所以函数f()返回a的值为4。

25.1111解析:本题考核的知识点是printf()函数的输出格式。本题中定义了一个整型变量i并赋初值为9,然后要求以八进制输出i的值,9的八进制数的表示为11。

26.100010100010解析:首先将程序中的宏替换掉,两处的宏替换后分别为i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后输出的i1和i2的值分别为1000和10。

27.k=k*ik=k*i解析:本题中遗过for循环求s表达式中每一项的和,表达式“fac=fac/k;”求的是每—项的值,所以k的值应为n!,在求n!的时候,可以用上次循环阶乘的值乘i,就可以直接得此次n!,故本题填k=k*i。

28.此题考查逗号表达式。逗号表达式的值是最后一个表达式的值,所以本题的返回值是a+4。前面已经给a赋值6,所以返回值a+4=6+4=10。

29.1212解析:本题的第—个for循环用于始数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。

30.一对多一对多解析:实体之间的对应关系称为联系,它反映现实世界事物之间的相互关联。两个实体间的联系可以归结为三种类型:一对一联系表现为某一实体与另一实体一一对应相关联:一对多联系表现为某一实体与相关多个实体相关联;多对多联系表现为多个实体与相关多个实体相联系。所以实体“项目经理”与实体“项目”的联系属于一对多的联系。

31.11解析:因为在条件表达式(a<b)?a:b中,比较表达式a<b为真,所以x的值等于a的值等于1,后面两个条件表达式中的比较表达式都为真,所以最终x的值等于1。

32.1030010300解析:本题的考点是C语言的scanf的“%*d”。“%*d”是在输入流中跳过一个整数,而读入下一个整数。因此语句“scanf('%d%*d%d',&i,&j,&k);”在读入10、20、30时,将10读入到i中,将20跳过,将30读入到j中,而k没有读入数,仍是初值的0。

33.77解析:在C语言中,宏定义是直接替换的,所以在对表达式MAX(a+b,c+d)*10进行替换后,表达式变为(a+b)>(c+d)?(a+b):(c+d)*10。

在这个条件表达式中,(a+b)>(c+d)为真,所以用(a+b)的值为整个表达式的值(否则用(c+d)*10的值作为整个表达式的值),而(a+b)的值为7。所以整个表达式的值为7。

34.6262解析:本题考查的是宏定义。带参数的宏定义是按#indefine命令行中指定的字符串从左到右进行转换。本题中替换的式子为:6+8*6+8,代入i,j的值得到62。

35.2002Shangxian2002Shangxian解析:strcmp函数用于比较两个字符串的大小,因为=Zhangsan,=Shangxian,所以strcmp(,)>0为真,执行d=b;因为=Anhua,=Shangxian,所以strcmp(,)>0不成立,不执行d=c;最后输出d.sno和的值分别为2002,Shangxian。

36.structaa*lhead*rchild;structaa*lhead,*rchild;解析:结构体对链表的定义。

37.逻辑逻辑解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构或物理结构。

38.morningclassmorningclass解析:本题考查了两个知识点:①“++、--”运算后缀形式是先使用变量原来的值,使用完后再使其增1或减1;②在switch语句中,当n=\'c\'时,执行“case\'c\':”,输出morning;因为此句中没有break语句,因此接着执行'case\'d\':”,输出class,最终输出结果为morningclass。

39.前趋结点后继结点前趋结点\r\n后继结点

40.自顶而下自顶而下

41.C

42.AA本题考查关系数据库中实体之间的联系。实体之间的联系有3种:一对一关系、一对多关系和多对多关系。一个学生可以选择多门课程,一门课程可被多个学生选择,所以学生与课程之间是多对多的联系

43.D解析:函数f中变量i为静态变量,函数f调用结束后变量i所占据的存储单元不会释放,而在主函数中f被调用5次,具体过程如下:

第1次调用f:s=s+i=1+0=1,i=i+1=1,主函数中a=a+f()=0+1=1

第2次调用f:s=s+i=1+1=2,i=i+1=2,主函数中a=a+f()=1+2=3

第3次调用f:s=s+i=1+2=3,i=i+1=3,主函数中a=a+f()=3+3=6

第4次调用f:s=s+i=1+3=4,i=i+1=4,主函数中a=a+f()=6+4=10

第5次调用f:s=s+i=1+4=5,i=i+4=5,主函数中a=a+f()=10+5=15

所以printf语句的输出结果为15。

44.A解析:R-S表示属于R但不属于S,R-(R-S)\ue009表示属于R但不属于(R-S),即相当于R∩S。

45.A解析:因为左移运算符<<的优先级比位或运算符,要高,所以先计算b<<2。而左移n位在不溢出的前提下相当于乘以2n,所以b<<2=6*22=24。再计算3|24=(00000011)2|(00011000)2=(00011011)2,故本题的正确答案是A。

46.D解析:在C语言的标准中,short占2个字节、long占4个字节,但int的大小和编译系统相关。例如在Turbo\u3000C\u30002.0中,int占2个字节,但在VisualC++6.0(VC6可以用做C语言编译器)中占4个字节。故本题应该选择D。

47.CC.【解析】线性表是一种线性结构,由n(n≥0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项C.是错误的。

48.B解析:C语言中字符串是以'\\0'字符结束的,且strlen()函数计算的是'\\0'字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。

49.C解析:本题考核的知识点是条件表达式的使用.在C语言中问号表达式(如:a>c?a:c;)的计算规则为:如果a>c为真,那么表达式的值为a的值;否则表达式的值为C的值。本题中的printf()函数中的输出表达式,首先计算括号内的条件表达式,它的值为6(a>c?a:c中a>c即5>6为假故该表达式的值为c的值即为6),然后再计算外面表达式(等价于a>b?6:b)的值,同理可得该表达式的值为6,将值6赋值给d,因此最后输出该表达式的值为6,所以,4个选项中C为所选。

50.C解析:以b+c代替参数x,a*=a*(2*b+c+1/2*b+c+1)=3*(2*2+1+1/2*2+1+1)=21。

51.Bscanf(\u3000)语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf(\u3000)函数不能输入空格;getehar(\u3000)函数用于输入字符,其调用形式为:ch=getelaar(\u3000),getehar(\u3000)函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets(\u3000)函数的凋用形式为:gets(str_adr),其中stradr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。9ets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc(\u3000)函数的调用形式为:ch=getc(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。

52.D解析:在C语言中,函数参数的默认传递方式是传值,即函数内部的形参只是调用时的实参的一个拷贝,改变形参,实参不会被改变.如果想要实现传址调用只能使用传递指针的方式来实现.利用指针作函数的参数时,无论形参指针还是实参指针所指的都是同一个内存地址,所以形参如果改变了这个地址中的内容,也就是改变了实参所指的地址内容.本题程序开头定义了一个函数f(),在函数中用一个临时变量t交换了两个指针参数所指的地址内容,所以该函数的作用就是交换两个参数所指的内容。在主函数中,首先定义了一个int型数组a,并定义了两个int型指针p、q分别指向数组a的第一个元素和最后一个元素。然后使用一个while循环调用函数f()不断交换两个指针所指的内容,每次交换后p往后移动一个元素,q往前移动一个元素,直到q不再大于p,即直到两个指针在数组a的中间相遇为止。所以,程序最终运行的结果是数组a中的所有元素全被反序排列一次。故应该选择选项D。

53.D解析:在程序中,当L的值为5和4时,case都没有与其匹配的值,所以执行default语句;当k=3时,执行n+=k;得n=3;当L=2时,执行case2:然后顺序执行case3:n+=k;得n=5;当k=1时,执行case1:n+=k;得n=6,然后顺序执行case2:和case3:n+=k;使得n=7。

54.A

55.B解析:在C语言中所谓函数的递归是指在调用一个函数的过程中,又出现了直接或间接调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用。显然题目中所说得函数调用为函数的间接递归调用。所以,4个选项中选项B符合题意。

56.C解析:本题首先定义了一个字符指针数组p,然后使用一个两重循环遍历数组p。因为内循环的循环变量j每次会加2,所以只能遍历到数组p每行中列下标为偶数的字符,它们是‘3’、‘9’、‘2’、‘8’。然后,将它们通过p[i][j]-‘0’表达式转换为对应的整数3、9、2、8,并用%2来判断该整数是否为奇数。所以最终能执行到num=10*num+p[i][j]-‘0’,语句的只有‘3’和‘9’两个字符。此时已不难算出,运行后num中的值为39。故应该选择C。

57.D解析:C语言中有基本的算术运算符(+、-、*、/)还包括自增自减运算符(++、-),在C语言解析表达式时,它总是进行贪婪咀嚼,这佯,该表达式就被解析为i+++++i,显然该表达式不合C语言语法。

58.A

59.D解析:选项A)是一个合法的赋值表达式,但结尾没加分号,所以它不是一个赋值语句;选项B)是一个逗号表达式,也因为结尾没有加分号而不是合法的赋值语句,选项C)是一个算术表达式,虽然有分号,但这个表达式没有赋值操作,因此,也不是一条赋值语句。

60.D解析:时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。人们都希望选择一个既省存储空间、又省执行时间的算法。然而,有时为了加快算法的运行速度,不得不增加空间开销;有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。因此,选项A、B、C的说法都是错误的。故本题的正确答案是D。

61.B堆排序。先把序列看成一棵大根堆或小根堆,摘取最大或最小元素后再建成新的根堆,再排序。堆排序的过程是:先建一个堆,输出堆顶的最大或最小的元素,再将剩余的n-1个元素重新调整成一个新堆。如此反复进行,直到排序完成。

直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好的有序表中,从而得到一个新的、记录数增1的有序表。首先,将序列中的第1个记录看成是一个有序的子序列,然后从第2个记录起逐个进行插入,直至整个序列变成按关键字非递减有序序列为止。

快速排序是对冒泡排序的一种改进。它的基本思想是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可以分别对这两部分记录继续进行排序,以达到整个序列有序。

直接选择排序是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的一个记录,并和第i个记录交换。这样重复执行n-1趟选择排序。

在本题中,数据表A中每个元素距其最终位置不远,即说明数据表基本有序,简单移动一些元素即可完成排序,在这种情况下,使用直接插入排序法所需时间最少,最合理。因此本题的正确答案是B。

\r\n\r\n\r\n

62.D\r\n

63.C本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4.0,这样对应定义fun函数首部有三种形式,这里采用了第一种形式——行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中最大的那个元素。因此C选项正确。

64.Ae前e后有数字,e后数值为整数,所以B)、c)、D)错误。

65.B在软件开发中,需求分析阶段可以使用的工具有:DFD图(数据流图)、数据字典(DD.、判断树和判定表;概要设计阶段可以使用的工具有:结构图SC(也成程序结构图);详细设计阶段可以使用的工具有:①图形工具:程序流程图、N—S、PAD(问题分析图)、HIP0②表格工具:判定表③语言工具:PDL(伪码):测试、调试阶段一般采用各种方法。因此本题的正确答案是B。

66.Da=“ABCD”书写错误,因为“=”左边不能出现常量;数组名S是代表S数组首地址常量,而不是变量;字符串只有在定义时维数可以省略。

67.B

68.C本题考查逻辑与(&&)和逻辑或(||)运算符的使用。x值在[1,10]之间,C语言中可以写成“(x>=1)&&(x<=10)”;x值在[100,110]之间,C语言表达式应写成“(x>=100)&&(x<=110)”;[1,10]和[100,110]满足任意条件就可以,所以是逻辑或的关系,因此只要将前两个表达式用逻辑或运算符连接起来即可,所以最后的表达式:((x>=1)&&(x<=10))||((x>=100)&&(x<=110))。

69.C\n栈是限定在一端进行插入与删除的线性表。栈是按照“先进后出”的或后进先出的原则组织数据的,因此,栈也被称为“先进后出”表或“后进先出”表。本题答案是C)。

\n

70.AB)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。c)选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可以进行随机读写。故本题答案为A)。

71.A\n程序中的if循环是固定地执行8次,属于计数器,程序是从中随机抽取一个数,然后对5进行求余再输出,共抽取8个数。所以答案为A。

\n

72.B

73.A

74.Aprintf(”%d\n”,ll+叭1),11为十进制,011为八进制形式,打印格式%d表示十进制格式输出,因此,先将八进制数转化为十进制,011(8)=81s1+1+80=9,相当于printf(”%d\n”,ll+9),故答案为20,A选项正确。

75.C选项A、B的空间不够;字符串存储要有结束符'\0',且要占用一个空间,printf用来输出字符,不能输入字符串。

76.D本题主要考查数组的定义和初始化。在本题中,考查的是一维数组的定义和初始化操作。一维数组的定义格式为:

数据类型说明数组名[n];

一维数组的初始化格式为:

数据类型说明数组名[n]={元素1,元素2,……,元素n};

或者

数据类型说明数组名[]={元素1,元素2,……,元素n};

另外,在定义数组和初始化数组时需要注意:

(1)定义数组时的n值只能使用常量,不能使用变量。

(2)定义数组时可以不标明数组元素的个数,而是通过赋初值的方式确定。

(3)数组初始化时,数组的元素类型必须与定义的类型一致,当初值的个数小于整型常量n时,编译系统会自动补0。一旦给定初值数超过n,编译系统将报错。

综上所述,不难找出本题正确的答案为D,在选项A和B中,数组的定义方式都是正确的,但初始化的方法不正确;在选项C中,赋值的元素个数超过了数组定义的大小,在编译时系统会报错。

77.C数据约束是用来确保数据的准确性和一致性的。常见的四种数据约束如下:

(1)实体完整性约束:规定表的每一行在表中是唯一的实体。

(2)域完整性约束:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。

(3)参照完整性约束:是指两个表的主关键字和外关键字的数据应一致,保证了表之间数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。

(4)用户定义的完整性约束:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。

在上述四种数据约束中,不属于关系模型定义的三种数据约束的是域完整性约束。

78.D

79.D本题考查函数返回值作参数,最初n=1,f(n)=f(1)=2,将f(n)的结果代入第二个f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

80.C

\n本题考查for循环及if语句。当执行到第一个满足(i*i>一20)&&(i*i<=100)这个条件的i出现时,break跳出循环,执行下列的printf语句。

\n

81.(1)错误:t=1.0-1/i;

正确:t-=1.O/i;

(2)错误:;

正确:returnt;

【解析】从题目中的公式可知,整数rl每增加1,其结果为上一次的结果减1/i,因此,“t=1.0-1/i;”应改为“t-=1.0/i;”;由函数的定义可知,函数proc()要把最后所得到的结果返回给主函数,因此要在函数proc()最后加上“returnt;”。

82.

【解析】首先定义一个变量来存放表达式的和,根据题目中提供的多项式,通过n次循环来求出n项的和。最后把所求得的和返回到主函数当中。

2022年安徽省铜陵市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为________。

A.24B.48C.72D.53

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

main()

{inta,b,d=25;

a=d/10%9;

b=a&&(-1);

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

A.6,1B.2,1C.6,0D.2,0

3.以下程序的运行结果是______。#include<stdio.h>main(){inta[]:{1,2,3,4,5,6,7,8,9,10,11,12):int*p=a+5,*q=NULL:*q=*(p+5):printf("%d%d\n",*p,*q);}

A.运行后报错B.66C.612D.55

4.程序运行后的输出结果是()。A.0304.B.2050C.3344D.3040

5.有如下程序:

longfib(intn)

{if(n>2)return(fib(n-1)+fib(n-2));

elsereturn(2);

}

main()

{printf("%d\n",fib(3));}

该程序的输出结果是A.A.2B.4C.6D.8

6.在下面的字符数组定义中,哪一个有语法错误()。A.chara[20]=”abcdefg”;

B.chara[]=”x+y=55.”;

C.chara[15];

D.chara[10]=’5’;

7.若一组记录的排序码为(7,9,3,5,1,2,10),则利用堆排序的方法建立的初始堆为()

A.10,7,9,3,5,1,2

B.10,9,7,5,1,2,3

C.10,9,7,5,3,2,1

D.10,9,7,3,2,1,5

8.以下程序段中,与语句“k—a>b?(b>c?1:O):0;”功能相同的是()。

A.if(a>b)(b>c)k=1;elsek=0;

B.if((a>b)‖(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b>c)k=1;

D.if(a>b)k=1;elseif(b<=c)k=1;elsek=0:

9.

10.若有定义:int*p[3];,则以下叙述中正确的是()。

A.定义了一个基类型为int的指针变量p,该变量具有三个指针

B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针

C.定义了一个名为*p的整型数组,该数组含有三个int类型元素

D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素

11.有以下程序:

A.1,5,9,B.1,4,7,C.3,5,7,D.3,6,9,

12.带头结点的单链表head为空的判定条件是()。

A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL

13.有以下程序段:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->x

14.若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以哪种方式打开文件()。

A.wbB.wb+C.rb+D.rb

15.以下能正确定义一维数组的选项是()。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

16.设有以下语句:intx=10;x+=3+x%(3),则x的值是()。

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

17.程序设计方法要求在程序设计过程中,()。

A.先编制出程序,经调试使程序运行结果正确后再画出程序的流程图

B.先编制出程序,经调试使程序运行结果正确后再在程序中的适当位置处加注释

C.先画出流程图,再根据流程图编制出程序,最后经调试使程序运行结果正确后再在程序中的适当位置处加注释

D.以上3种说法都不对

18.下列程序段的输出结果是()。chara=9,b=020;prihtf("%o\n",~a&b<<1);

A.100000B.8C.40D.77

19.若定义下列结构体,结构体变量p的出生年份赋值正确的语句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;

A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;

20.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放的存储器内,该数组按行存放,元素A[8][5]的起始地址为()。

A.SA+141B.SA+144C.SA+222D.SA+225

二、2.填空题(20题)21.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

22.最简单的交换排序方法是______。

23.以下程序运行后的输出结果是()。main(){inta,b,c;a=10;b=20;c=(a/b<1)&&(a%b<1);printf("%d%d%d\n",a,b,C);}

24.下列程序执行输出的结果是【】。

#include<stdio.h>

f(inta)

{intb=0;

staticc=3;

a=c++,b++;

return(a);}

main()

{inta=2,i,k;

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

k=f(a++);

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

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

inti=9;

printf("%o\n",i);

26.下面程序的运行结果是【】。

#defineN10

#defines(x)x*x

#definef(x)(x*x)

mam()

{

intil,i2;

i1=1000/s(N);i2=1000/f(N);

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

}

27.以下函数的功能是计算s=1+1/21+1/3!+…+1/n!,请填空。

doublefun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k;

s=s+fac;

}

}

28.若a是int型变量,则表达式(a=2*3,a*2),a+4的值为______。

29.下列执行后输出的结果是【】。

main()

{intarr[10],i,k=0

for(i=0;i<10;i++)atr[i]=i

for(i=1,i<4;i++)k+=arr[i]+i;

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

}

30.一个项目具有一个项目经理,一个项目经理可管理多个项目,则实体“项目经理”与实体“项目”的联系属于()的联系。

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

main()

{intx,a=1,b=2,c=3,d=4;

x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;

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

}

32.以下程序运行时若从键盘输入:102030<回车>。输出结果是()。

#include<stdio.h>

main()

{inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",i,j,k);

}

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

#defineMAX(x,y)(x)>(y)?(x)L:(y)

main()

{inta=5,b=2,C=3,d=3,t;

t=MAX(a+b,c+D)*10;

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

}

34.以下程序运行后的输出结果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}

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

#include<stdio.h>

#include<string.h>

typcdefstructstudent

{charname[10];

longsno;

floatscore;

}STU;

main()

{STUa={"Zhangsan",2001,95},b={"Shangxian",2002,90},

c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%1d%s\n",d.sno,p->name);

}

36.有如下图所示的双链表结构,请根据图示完成结构体的定义:

structaa

{intdata;

【】}node;

37.数据的______结构在计算机存储空问中的存放形式称为数据的存储结构或物理结构。

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

intn='c':

switch(n++)

{default:printf("error");break;

case'a':printf("good");break;

case'c':printf("moming");

case'd':printf("class");

}

39.在双链表中每个结点有两个指针域:一个指向【】,另一个指向【】。

40.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。

三、1.选择题(20题)41.有以下程序;intf1(doubleA){returna*a;}intf2(doublex,doubley){doublea,b;a=n(x);b=f1(y);returna+b;}main(){doublew;w=f2(1.1,2.0);┇}变量w中的值是()

A.5.21B.5C.5D.0

42.下列实体的联系中,属于多对多联系的是()

A.学生与课程B.学校与校长C.住院的病人与病床D.工资级别与职工

43.以下程序的输出结果是______。intf(){staticinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);

A.20B.24C.25D.15

44.设有关系R和S,关系代数表达式为R-(R-S)表示的是

A.R∩SB.R-SC.R∪SD.R÷S

45.设有以下语句:chara=3,b=6,C;c=a|b<<2;printf("%d\n",C);则c的二进制值是()。

A.11011B.10100C.11100D.11000

46.以下关于long、int和short类型数据占用内存大小的叙述中正确的是(),

A.均占4个字节B.根据数据的大小来决定所占内存的字节数C.由用户自己定义D.由C语言编译系统决定

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

A.线性表是由n个元素组成的一个有限序列

B.线性表是一种线性结构

C.线性表的所有结点有且仅有一个前件和后件

D.线性表可以是空表

48.以下程序的输出结果是_______。main(){charst[20]="hello\0\t\\";printf(%d%d\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

49.以下程序的输出结果是()。main(){inta=5,b=4,c=6,d;printf("%d\n",d=a>b?(a>c?a:C):(B));}

A.5B.4C.6D.不确定

50.下面程序的输出结果是()。#defineSQR(X)2*X+1main(){inta,b,C;a=3;b=2;C=1;a*=SQR(b+c)/SQR(b+c);printf("%d",a);}

A.3B.18C.21D.24

51.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()

52.有以下程序voidf(int*x,int*y){intt;t=*X;*X=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7);while(p>q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序运行后的输出结果是

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

B.5,6,7,8,1,2,3,4,

C.1,2,3,4,5,6,7,8,

D.8,7,6,5,4,3,2,1,

53.有以下程序:#include<stdio,h>main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;printf("%d\n",n);}程序运行后的输出结果是()。

A.0B.4C.6D.7

54.设有如下定义intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()

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

55.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()。

A.称为函数的直接递归调用B.称为函数的间接递归调用C.称为函数的循环调用D.C语言中不允许这样的递归调用

56.有以下程序:main(){char*p[]={"3697","2584"};inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!='\0'){if((p[il[j]-'0')%2)num=10*num+p[i][j]-'0';j+=2;}printf("%d\n",num);}程序执行后的输出结果是()。

A.35B.37C.39D.3975

57.设整型数i=5,则printf("%d",i+++++i);的输出为______。

A.10B.11C.12D.语法错误

58.若以下程序所生成的可执行文件名为file1.exe,main(intargc,char*argv[]){while(argc-->0){++argv;printf("%s",*argv);}}当键入以下命令执行该程序时:FILE1CHINABEUINGSHANGHAI程序的输出结果是()

A.CHINABEIJIANGSHANGHAI

B.FILE1CHINABEIJING

C.CBS

D.FCB

59.下列选项中合法的赋值语句是()。

A.a=b=34B.a=34,b=34C.i-1;D.m=(int)(x+y);

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

A.一个算法的空间复杂度大,则其时间复杂度也必定大

B.一个算法的空间复杂度大,则其时间复杂度必定小

C.一个算法的时间复杂度大,则其空间复杂度必定小

D.上述三种说法都不对

四、选择题(20题)61.已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是()

A.堆排序B.直接插入排序C.快速排序D.直接选择排序

62.

63.有以下程序:

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

A.4B.34C.31D.32

64.以下选项中可用作C程序合法实数的是()。A..1eOB.3.0e0.2C.E9D.9.12E

65.在软件开发中,需求分析阶段可以使用的工具是()。

A.N—s图B.DFD图C.PAD图D.程序流程图

66.下列判断正确的是()。A.A.chara="ABCD":等价于char*a;*a="ABCD":

B.charstr[10]={"ABCD"}:等价于charstr[10];str[]={"ABCD"};

C.char*s="ABCD":等价于chars;*s="ABCD";

D.charc[5]="ABCD",d[5]="ABCD":等价于charc[5]-d[5]="ABCD";

67.

68.能正确表示“当x的取值在[1,10]和[100,110]范围内为真,否则为假”的

温馨提示

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

评论

0/150

提交评论