2021-2022年广东省深圳市全国计算机等级考试C语言程序设计_第1页
2021-2022年广东省深圳市全国计算机等级考试C语言程序设计_第2页
2021-2022年广东省深圳市全国计算机等级考试C语言程序设计_第3页
2021-2022年广东省深圳市全国计算机等级考试C语言程序设计_第4页
2021-2022年广东省深圳市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩106页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年广东省深圳市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,但函数不完整:intfun(int*a,intn){int*p,*s;for(p=a,s=a;p-a<=""p="">if(________)s=p;return*s;}在if语句下划线处应填入的选项是()。

A.p>sB.*p>*sC.a[p]>a[s]D.p-a>p-s

2.已知intt=0;while(t=1){…}则以下叙述正确的是()。

A.循环控制表达式的值为0B.循环控制表达式的值为1C.循环控制表达式不合法D.以上说法都不对

3.fgetc函数的作用是从指定文件读入—个字符,该文件的打开方式必须是______。

A.只读B.追加C.读或读写D.以上均正确

4.

5.设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为()。A.6B.8C.9D.12

6.若有定义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==)

7.有如下程序段:

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B'):

执行该程序后,x的值为()。A.A.trueB.falseC.0D.1

8.向一个栈顶指针为HS的链式栈中插入一个s所指的结点时,则执行()。

A.HS->next=s

B.S->next=HS->nextHS->next=s

C.s->next=HSHS=s

D.S->next=HSHS=HS->next

9.对线性表进行折半查找时,必须要求线性表()。

A.顺序方式存储B.链式方式存储C.以顺序方式存储,且结点按关键字有序排列D.以链式方式存储,且结点按关键字有序排列

10.每次从无序表中挑选出一个最小或最大元素,把它交换到有序表的一端,此种排序方法叫做()排序。

A.插入B.堆C.快速D.归并排序

11.下列程序的输出结果是

#include"stdio.h"

#defineN3

#defineM3

voidfun(inta[M][N])

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

main()

{inta[M][N];

inti,j;

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

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

a[i][j]=i+j-(i-j);

fun(a);}A.A.3B.4C.5D.6

12.以下关于注释的叙述中错误的是()。

A.注释的边界符号“/”和“*”之间不允许加入空格

B.C语言允许注释出现在程序中任意合适的地方

C.注释的内容仅用于阅读,对程序的运行不起作用

D.注释的边界符号“/*”和“*/”必须成对出现且可以嵌套

13.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少()。

A.1和5B.2和4C.4和2D.5和1

14.有以下程序#include<stdio.h>intfun(chars[]){intn=0;while(*s<=9&&*s>=0){n=10*n+*s-o;s++;)return(n);}main{chars[10]={6,1,*,4,*,9,*,0,*);printf("%d",fun(s));}程序运行的结果是()。A.9B.61490C.61D.5

15.软件生命周期是指()。A.软件产品从提出、实现、使用维护到停止使用退役的过程

B.软件从需求分析、设计、实现到测试完成的过程

C.软件的开发过程

D.软件的运行维护过程

16.假设把整数关键码K散列到有N个槽的散列表,以下哪些散列函数是好的散列函数()

A.h(K)=KmodN

B.h(K)=1

C.h(K)=K/N

D.h(K)=(K+rand(N))modN,rand(N)返回一个0到N-1的整数

17.栈这种数据结构一般应用在()。

A.递归调用B.子程序调用C.表达式求值D.A,B,C

18.如果最常用的操作是取第i个结点及其前驱,最节省时间的存储方式是()。

A.单链表B.双向链表C.单循环链表D.顺序表

19.有以下程序#include<stdio.h>voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;i<n-1;j++)for(j=i+l;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main{intc[10]={1,2,3,4,5,6,7,8,9,0),i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序运行的结果是()。A.1,2,3,4,5,6,7,8,9,0,

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

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

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

20.设S为一个长度为n的字符串,其中的字符各不相同,则S中的互异的非平凡子串(非空且不同于S本身)的个数为()。

A.2n-1B.n2C.(n2/2)+(n/2)D.(n2/2)+(n/2)-1

二、2.填空题(20题)21.已知字符'A'的ASCII码值为65,以下语句的输出结果是【】。

charch='B';

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

22.若有定义doublea[5];,则a数组元素下标的上限为______。

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

main()

{

charc1,c2;

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

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

printf("\n");

}

24.下面程序的运行结果是()。#defineP(A)printf("%d",A)main(){intj,a[]={1,2,3,4,5,6,7},i=5;for(j=3;j>1;j--){switch(j){case1:case2:P(a[i++]);break;case3:P(a[--i]);}}}

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

intmystrlen(char*str)

{inti;

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

return(【】);

}

26.funl函数的调用语句为:fun1(&a,&b,&c);它将3个整数按由大到小的顺序调整后依次放入a、b、c这3个变量中,a中放最大数。

voidfun2(int*x,int*y)

{intt;

t=*x;*X=*y;*y=t;

}

voidfunl(int*pa,int*pb,int*pc)

{if(*pc>*pb)fun2(【】);

if(*pa<*pc)fun2(【】);

if(*pa<*pb)fun2(【】);

}

27.x和y都是double型变量,x的初值为4.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为______。

28.以下程序的功能是从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。请填空。

main()

{charstr[81],*sptr;

inti;

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

{str[i]=getchar();

if(str[i]=='\n')break;

}

str[i]=【】;

sptr=str1

while(*sptr)putchar(*sptr【】);

}

29.函数fun的功能是计算xn。

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函数中已正确定义m、a、b变量并赋值,并调用fun函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为【】。

30.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。

31.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

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

main()

{

intx=0210;

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

}

33.在关系模型中,二维表的行称为______。

34.设有以下定义和语句,则*(*(p+2)+1)的值为【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

35.数据库管理系统是位于用户与______之间的软件系统。

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

main()

{charb[]="Hello,you";

b[5]=0;

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

}

37.算法的复杂度主要包括空间复杂度和______复杂度。

38.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

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

#include<stdio.h>

main()

{intx=1,y=1,a=1,b=1;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:

a++;b++;break;

}

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

}

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

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main0

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

三、1.选择题(20题)41.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

42.以下程序的功能是:建立一个带有头结点的甲—向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请从与下划线处号码对应的一组选项中选择出正确的选项。

#include<stdlib.h>

structnode

{chardata;structnode*next:};

(1)CreatList(char*s)

{

structnode*h,*p,*q;

h=(structnode*)mallocsizeof(structnode));

p=q=h;

while(*s!='\0')

{

p=(structnode*)malloc(sizeof(structnode));

p->data=(2);

q->next=p;

q-(3);

S++;

}

p->next='\0';

returnh;

}

main()

{

charstr[]="linklist";

structnode*head;

head=CreatList(str);

}

(1)

A.char*B.structnodeC.structnode*D.char

43.设已有定义:floatx;则以下对指针变量p进行定义且赋初值的语句中正确的是A.float*p=1024;

B.int*p=(float)x;

C.floatp=&x;

D.float*P=&x;

44.在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是A.p向高地址移了一个字节B.p向高地址移了一个存储单元C.p向高地址移了两个字节D.p与a+1等价

45.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是______。A.k%2B.k%2==1C.(k%2)!=0D.!k%2==1

46.一个关系中属性个数为1时,称此关系为()。

A.对应关系B.单一关系C.一元关系D.二元关系

47.在下列语句中,其含义为“q为一个指针的函数,该指针指向整型数据”的定义语句是()。

A.int**q;B.int(*q)0;C.int*q;D.int*q();

48.一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()A.有零个或多个输入B.有零个或多个输出C.有穷性D.可行性

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

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

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

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

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

50.在c语言中,变量的隐含存储类别是()。

A.autoB.staticC.externD.无存储类别

51.下列程序的输出结果是

#include"stdio.h"

#defineN3

#defineM3

voidfun(inta[M][N])

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

main()

{inta[M][N];

inti,j;

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

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

a[i][j]=i+j-(i-j);

fun(a);}

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

52.结构化程序设计主要强调的是______。

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

53.下列二维数组初始化语句中,正确且与语句floata[][3]={0,3,8,0,9};等价的是

A.floata[2][]={{0,3,8},{0,9}};

B.floata[][3]={0,3,8,0,9,0};

C.floata[][3]={{0,3},{8,0},{9,0}};

D.floata[2][]={{0,3,8},{0,9,0}};

54.下面程序的输出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=8,v2=8,v3=8,v4=8

55.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序运行后的输出结果是

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

56.在计算机中,算法是指()。

A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法

57.若有"doublea;",则正确的输入语句是()。

A.scanf("%1f",a);

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

C.scanf("%1f",&a)

D.scanf("%1e",&a);

58.以下程序的输出结果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}

A.12B.23C.14D.32

59.有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序输出结果是______。

A.0B.0.25C.0.5D.1

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

A.变量的作用域取决于变量定义语句的位置

B.全局变量可以在函数以外的任何部位进行定义

C.局部变量的作用域可用于其他函数的调用

D.一个变量说明为static存储类型是为了限制其他编译单元的引用

四、选择题(20题)61.

62.有以下程序:

i

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

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

63.

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

main

{doubled=3.2;intx,Y;

x=1.2;v=(x+3.8)/5.0;

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

}

A.3B.3.2C.0D.3.07

64.

65.

66.

67.

68.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、P、q、均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。该程序段实现的功能是()。

A.首结点成为尾结点B.尾结点成为首结点C.删除首结点D.删除尾结点

69.

有以下程序,其中函数f的功能是将多个字符串按字典顺序排序()。

#include<string.h>

voidf(char*p[],intn)

{char*t;inti,j;

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

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

if(strcmp(p[i],p[j]>0){t=p[i];p[i]=p[j];p[j]

=t;}

}

main

{char*P[5]={"abe","aabdfg","abbd","dcd-

be","cd"};

f(p,5);

printf("%d\n",strlen(p[1]));

}

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

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

70.

71.计算机的内存储器比外存器()

A.价格便宜B.存储容量大C.读写速度快D.读写速度慢

72.下面不属于软件工程三要素的是()。

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

73.有以下程序程序运托舌的输出结果是()。

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

74.有以下程序

#include<stdio.h>

main()

{inti=5;

do

{if(i%3==1)

if(i%5==2)

{printf("*%d",i);break;}

i++;

}while(i!=0);

printf("\n");

}

程序的运行结果是

A.*7B.*3*5

C.*5D.*2*6

75.数据流图中带有箭头的线段表示的是()。

A.控制流B.事件驱动C.模块调用D.数据流

76.若有以下说明和语句,请选出哪个是对C数组元素的正确引用()。

A.cp+1B.*(cp+3)C.*(cp+1)+3D.*(*cp+2)

77.有以下程序

#include<stdio.h>

#defineN4

voidfun(inta[][N],intb[])

{inti;

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

b[i]=a[i][i];

}

main()

{intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;

fun(x,y);

for(i=0;i<N;i++)printf("%d,",y[i]);

printf("\n");

}

程序的运行结果是

A.l,2,3,4,

B.1,0,7,0,

C.1,4,5,9,

D.3,4,8,10,

78.

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

A.数据所占的存储空间

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

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

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

80.

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:先将字符串s中的字符按顺序存放到t中,然后把S中的字符按正序连接到t的后面。例如,当s中的字符串为WXYZ时,则t中的字符串应为WXYZWXYZ。

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*s,char*t)

{

inti,s1;

s1=strlen(s);

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

//****found****

t[i]=s[s1];

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

t[s1+i]一s[i];

t[2*s1]=\O0;

}

voidmain

{

chars[100],t[100];

system("CLS");

print{("\nPleaseenterstrings:");

scanf("%s",s);

proc(s,t);

printf("Theresultis:%s\n",t);

}

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:将两个两位数的正整数num1,num2合并形成一个整数放在num中。合并的方式是:将num1数的十位和个位数依次放在num数的十位和千位上,num2数的十位和个位数依次放在c数的百位和个位上。

例如,当num1=64,num2=18时,调用到该函数后,num=4168。

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

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

试题程序:

参考答案

1.B函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回。通过for循环比较,s始终指向最大值的那个元素。取指针的值,使用*P,因此比较使用*P和*s,又因为找最大值,当*s<*p时,修改指针s的指向。故本题答案为B选项。

2.B解析:t=1是将t赋值为1,所以循环控制表达式的值为1。判断t是否等于1时,应用t==1,注意“=”与“==”的用法。

3.D解析:fgetc函数是指从指定的文件读入—个字符,该文件必须是以读或读写方式打开的。fgetc函数的调用形式为:ch=fgetc(fp);。

4.A

5.CC。R为n元关系,有P个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。

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

7.D在C语言中,当表达式成立时用l表示,不成立时用0表示,即x=(a&&b)&&(c<'B')=(14&&15)&&('A'<'B')=1&&1=1,故选择D选项。

8.C

9.C

10.B

11.B

12.D在编写程序时可以在程序中加入注释。在添加注释时,注释内容必须放在符号“/*”和“*/”之间,“/*”和“*/”必须成对出现,“/*”与“*/”之间不可以有空格,选项A正确;注释可以用英文,可以用中文,可以出现在程序中任意合适的地方,选项B正确;注释部分只适用于阅读,对程序的运行不起作用,选项C正确;使用“/*”和“*/”的注释之间不可再嵌套“/*”和“*/”,选项D错误。故本题答案为D选项。

13.B

14.C在fun函数中,while循环的功能是逐个取字符数组s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。

15.A通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。

16.A

17.D

18.D

19.Dfun函数的功能是对数组a[]的元素从大到小进行排序。

20.D

21.B66B66解析:字符B的ASCII码值为66,因此,按%c形式输出B,按%d形式输出66,输出结果为:B66。

22.44解析:一维数组元素的定义形式为:数组名[N],则该数组中元素的下限是0,上限是N-1。

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

24.5555解析:分析程序执行过程,第一次循环时,j=3,i=5,因为switch(3),所以执行case3,调用P(a[--i])=P(a[4])=P(5),输出5;第二次循环时,j=2,i=4,因为switch(2),所以执行case2,调用P(a[i++])=P(a[4])=P(5),输出5,之后i自加1等于5。

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

26.pcpb或pbpcpcpa或papcpbpa或papbpc,pb或pb,pc\r\npc,pa或pa,pc\r\npb,pa或pa,pb

27.1616解析:函数运算不改变数据类型,所以结果也是double型,fabs(x)是对x取绝对值,pow(y,fabs(x))是y的labs(x)次幂,即2.04。0=16.000000(注意;结果为double型)。

28.\0'++

29.m=fun(a4)+fun(b4)-fun(a+b3);m=fun(a,4)+fun(b,4)-fun(a+b,3);解析:函数fun(x,n)的作用是求xn,因此a4应该调用函数fun(a,4),b4应该调用函数fun(b,4),(a+b)3应该调用函数fun(a+b,3),所以题目中的数学表达式,写成C程序中的语句为m=fun(a,4)+fun(b,4)-fun(a+b,3)。

30.BB解析:因为c是字符类型变量,它只能接收一个字符,所以c=A,字符型变量在参与算术运算的时候是用其相应的ASCII码参与运算的,这样++c得到字母B的ASCII码,用putchar函数输出是输出其相应的字符,所以是B。

31.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。

32.8888解析:C语言规定,以0开头的整型常量为八进制。另外,在primf()函数中,%X表示以十六进制无符号形式输出一个整数,且十六进制中的ABCDEF为大写字母。本题的输出应该是八进制210的十六进制形式。将八进制转换为十六进制,可以先将其转换为二进制。因为1位八进制表示3位二进制,4位二进制表示1位十六进制。(210)8=(10001000)2=(88)16,故本题输出为880

33.元组元组解析:在关系型数据库中,用二维表来表示关系,二维表的表名即关系名,二维表的行称为关系的元组,二维表的列,称为关系的属性。

34.6060解析:程序中定义a是一个3行2列的二维数组,p是指向两个元素的一维数组指针,并让p指向二维数组a的首行。则代码*(*(p+2)+1)中的p+2指向二维数组a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。

35.操作系统操作系统解析:数据库管理系统是帮助用户创建和管理数据库的应用程序的集合。因此,数据库管理系统需要操作系统的支持,为用户提供服务。

36.HelloHello解析:字符串中,数值0或符号'/0'表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。

37.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。

38.数据存储数据存储

39.a=2b=3a=2,b=3解析:分析程序,程序从x=1语句开始执行,之后执行第一个switch语句,switch(x)=switch(1),所以执行case1,case1语句中包含一个复合switch语句:这时执行第二个switch语句,此时y=1,所以switch(y)=switch(1),因此执行case1,将b加1,得到b=2,遇到break语句,退出第二个switch语句,则整个case1的复合语句执行完毕,由于在这个case1的后面没有break语句使其退出第一个switch语句,所以接着执行下列的case2后面的语句,即将a,b各加1,得到a=2,b=3。

40.11231123解析:在主函数中第一次调用func子函数时,m=0,i=2,i=i+m+1=3,m=i+a+b=3+5+3=11。因为在子函数中将m和i定义成了static类型,所以在子函数中对m和i进行的改变,在下一次调用子函数时能进行保存,所以第二次调用子函数时,m=11,i==3,则i=i+m+1=15,m=i+a+b=15+5+3=23。

41.D解析:在格式输入中,要求给出的是编译的地址,而D)答案中给出的s[1]是一个值的表达式。

42.C

43.D解析:指针指向的是变量的地址而不是常量,所以选项A是错误的;选项B同样是将float类型变量的值赋给指针而不是地址,所以选项B也是错误的。定义指针变量前面必须有星号(*),如果省略了就变成了把p定义为实型变量,所以选项C不正确。

44.A解析:在16位编译系统下,一个int型变量是用16位来存储的,其占用两个字节,当执行p++之后,相当于p向高位移动了一个存储单元,也就是两个字节。因此,本题的答案为选项A)。

45.D解析:本题考查的是判断奇偶数。选项A、B和c中都是当k是奇数时表达式的值为1,否则为0。而选项D中因为逻辑非!运算符的优先级最高,所以当k为0的时候,k的值为1,整个表达式的值也就是1,而当k为非。的时候!k的值为0,整个表达式的值为0。所以本题应该选择D。

46.C解析:在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有N个属性的关系称为N元关系。注意:各种关系查询语言与过程性语言和非过程性语言的关系,过程性语言的特点。

47.B解析:本题考查的是指针函数。指针函数定义的基本格式:类型说明符(*函数名)()。其中,类型说明符表示返回的指针值指向的数据类型。

48.B解析:本题考核的知识点是算法的性质。算法是为解决某个特定问题而采取的确定的且有限的步骤,一个算法应当具有以下5个基本特性:1.有穷性,就是指一个算法应当包含有限个操作步骤。2.确定性,就是说算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。3.有零个或多个输入。4.可行性,就是说算法中指定的操作,都可以通过已经实现的基本运算执行有限次实现,5.有一个或多个输出。由此可知选项B不正确,所以,4个选项中选项B符合题意。

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

50.A解析:auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关键字'auto'可以省略,auto不写则隐含确定为'自动存储类别',属于动态存储方式。

51.B解析:若有以下定义:inta[3][4],i,j;且当0<=i<3,0<=j<4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。

52.B解析:采用结构化编程方法的好处主要在于:一是便于控制、降低程序的复杂性,因此便于编写程序。二是程序清晰易读,可理解性好。因此,结构化程序设计主要强调的是程序的易读性,而不是程序的规模、程序的执行效率和程序的可移植性。

53.B解析:在选项B)中,因为数组的第一维的数目不明确,所以理解会有歧义,可以理解为1行3列,或者2行3列等。所以选项B)错误。注意:数组中元素的引用。

54.C解析:当switch后面括弧内的表达式的值与某一个case后面的常量的表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。

55.C解析:本题考查“逻辑或”运算的特例。本题中执行语句k=(n=b>a)||(m=a<b)时,首先计算表达式(n=b>a)||(m=a<b)的值,因b=2,a=1,所以b>a成立,即得n=1,故表达式(n=b>a)||(m=a<b)的值为真,不再执行表达式m=a<b,故执行完表达式k=(n=b2>a)||(m=a<b)后,n=1、m=0、k=1。

56.CC。【解析】计算机算法是指解题方案的准确而完整的描述,它的基本特征分别是:可行性、确定性、有穷性和拥有足够的情报。

57.D解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。本题中定义变量a为双精度型变量,双精度变量的格式符为“1e”;变量的地址用取地址符“&”加变量名表示,如变量a的地址为“&a”。

58.D解析:本题中是一个含有两个结点的循环链表。

C语言中结构体的定义为:

struct结构题类型名

{

成员项表;

};

59.C解析:本题考查的是if...else语句的使用。x=2.0,符合第二个IF语句的条件x<10.0,所以执行y=1.0/x语句,即y=1.0/2.0=0.500000。

60.D解析:本题考查函数调用的变量作用域。全局变量不在任何函数体内定义,作用域为整个文件;局部变量在函数体内定义,作用域仅为本次函数;static类型是静态变量,为了方便其他编译单元的引用,不能随意改变。一个函数包含两部分:函数首和函数体,函数体包括花括号内的所有语句。

61.B

62.C本题考查结构体数组的相关操作,dt为结构体数组,那么指针P指向了结构体数组的一个元素,所以P一>x为1,P一>Y为2,结果为2,3。选项C正确。

63.C

\n根据赋值运算的类型转换规则,先将double型的常量l.2转换为int型,因为x的类型是int,则X的值为1;执行语句y=(K+3.8)/5.0时,即先将整型变量X的值1转换为double型1.0,然后3.8相加得4.8,进行除法运算4.8/5.0结果为0.即变量y的值为0,d*Y的值也为0,故选C选项。

\n

64.D

65.A

66.A

67.B

68.A循环找到末尾结点,然后赋值给第一个结点,所以选择A)。

69.B

\n函数voidf的功能是将字符指针数组*p[]中的每个字符串按照从小到大的顺序排序。在主函数main中,调用f(P,5)后,字符指针数组*p[5]中的字符串按照字典顺序从小到大排列为如下形式,即*p[5]={'aab-dfg','abbd','abc','cd','dcdbe'),因此P[1]='abdb',strlen(p[1])=4。

\n

70.B

71.C

72.B\n软件工程包括三个要素:方法、工具和过程。软件工程方法为软件开发提供了”如何做”的技术。工具支付软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。

\n

73.A首先打印b=a+b=1+0--1的值l,此时已给b赋值为l。然后打印a:2*b:2"1:2的值2。因此结果是1,2。

74.A本题考查C语言中对整数求余数运算。运算符“%”是两个数相除后取余数。分析本题的程序,main函数中的主体为一个do-while循环,该循环的终止条件为i==0。do-while循环内部起始为一个if语句,该语句包含一个if子语句,外层if语句的判断条件是i%3==1,表示i的取值范围为{1,4,7,11,…},内部if子语句的判断条件为i%5==2,表示i的取值范围为{2,7,12,…}。如果外层和内层的if语句的条件都满足,则执行语句printf('*%d',i);break;,该语句输出*i形式的结果并跳出do-while循环。如果两个if语句有一个条件不满足,则执行i++操作,继续执行do-while循环。i的初始值为5,只有满足两个if语句条件时才能够跳出do-while循环,即当i=7时,循环结束,输出结果为*7。

75.D解析:数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要的图形元素与说明如下:

加工(转换):输入数据经加工变换产生输出。

数据流:沿箭头方向传送数据的通道,一般在旁边标注数据流名。

存储文件(数据源):表示处理过程中存放各种数据的文件。

源,潭:表示系统和环境的接口,属系统之外的实体。

76.B本题的考查点是数组元素的引用。cp=c这个语句是将数组c的首行元素地址赋给了指针数组cp。选项A,cp+1是指将数组c的首行地址加l,即为第二行地址;选项B,*(cp+3)是地址,等于数组C的首地址加3的那个内存单元的内容,不是对数组元素的引用;选项C,*(cp+1)+3是地址,等于数组C的首地址加1的那个内存单元中存放的值加3,不是对数组元素的引用。

77.B本题考查二维数组的相关操作。程序主要包括两个部分:主函数部分和fun函数。主函数初始给出了一个4×4的二维矩阵,并对每一行赋初值,可以看出每一行都要有4个元素,而对于给出的初值个数不满足4个的,要先从第一列开始将各个值赋给各列,不足的部分用0补齐。函数fun的作用是将二维矩阵a中行号与列号相同的数据赋值给一维矩阵y,y的下标与该数据在a中的行号相同。题目所要求解的即通过printf函数将矩阵y中的元素按照顺序输出。本题中二维矩阵a初始化后为{{1,2,3,0},{4,0,0,0},{5,6,7,8},{9,10,0,0}}。将行号与列号相同的元素赋给y,则y矩阵的数据为{1,0,7,0},输出即可得到结果。

78.D

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

80.A

81.\n\t错误:t[i]=s[l];

\n正确:t[i]=s[i];

\n【解析】函数proc首先要实现将数组s中的元素顺序放在数组t中,即数组t中下标为i的元素在数组S中下标也为i,因此“t[i]=s[s1];”应改为“t[i]=s[i];”。\n

82.

【解析】要算出变量num的值,首先需要得到变量num1和hum2个位和十位上的数字。然后将在千位上的数字乘以1000,百位上的数字乘以100,十位上的数字乘以10,各位上的数字乘以1,就能得到要求的hum。

2021-2022年广东省深圳市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,但函数不完整:intfun(int*a,intn){int*p,*s;for(p=a,s=a;p-a<=""p="">if(________)s=p;return*s;}在if语句下划线处应填入的选项是()。

A.p>sB.*p>*sC.a[p]>a[s]D.p-a>p-s

2.已知intt=0;while(t=1){…}则以下叙述正确的是()。

A.循环控制表达式的值为0B.循环控制表达式的值为1C.循环控制表达式不合法D.以上说法都不对

3.fgetc函数的作用是从指定文件读入—个字符,该文件的打开方式必须是______。

A.只读B.追加C.读或读写D.以上均正确

4.

5.设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为()。A.6B.8C.9D.12

6.若有定义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==)

7.有如下程序段:

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B'):

执行该程序后,x的值为()。A.A.trueB.falseC.0D.1

8.向一个栈顶指针为HS的链式栈中插入一个s所指的结点时,则执行()。

A.HS->next=s

B.S->next=HS->nextHS->next=s

C.s->next=HSHS=s

D.S->next=HSHS=HS->next

9.对线性表进行折半查找时,必须要求线性表()。

A.顺序方式存储B.链式方式存储C.以顺序方式存储,且结点按关键字有序排列D.以链式方式存储,且结点按关键字有序排列

10.每次从无序表中挑选出一个最小或最大元素,把它交换到有序表的一端,此种排序方法叫做()排序。

A.插入B.堆C.快速D.归并排序

11.下列程序的输出结果是

#include"stdio.h"

#defineN3

#defineM3

voidfun(inta[M][N])

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

main()

{inta[M][N];

inti,j;

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

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

a[i][j]=i+j-(i-j);

fun(a);}A.A.3B.4C.5D.6

12.以下关于注释的叙述中错误的是()。

A.注释的边界符号“/”和“*”之间不允许加入空格

B.C语言允许注释出现在程序中任意合适的地方

C.注释的内容仅用于阅读,对程序的运行不起作用

D.注释的边界符号“/*”和“*/”必须成对出现且可以嵌套

13.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少()。

A.1和5B.2和4C.4和2D.5和1

14.有以下程序#include<stdio.h>intfun(chars[]){intn=0;while(*s<=9&&*s>=0){n=10*n+*s-o;s++;)return(n);}main{chars[10]={6,1,*,4,*,9,*,0,*);printf("%d",fun(s));}程序运行的结果是()。A.9B.61490C.61D.5

15.软件生命周期是指()。A.软件产品从提出、实现、使用维护到停止使用退役的过程

B.软件从需求分析、设计、实现到测试完成的过程

C.软件的开发过程

D.软件的运行维护过程

16.假设把整数关键码K散列到有N个槽的散列表,以下哪些散列函数是好的散列函数()

A.h(K)=KmodN

B.h(K)=1

C.h(K)=K/N

D.h(K)=(K+rand(N))modN,rand(N)返回一个0到N-1的整数

17.栈这种数据结构一般应用在()。

A.递归调用B.子程序调用C.表达式求值D.A,B,C

18.如果最常用的操作是取第i个结点及其前驱,最节省时间的存储方式是()。

A.单链表B.双向链表C.单循环链表D.顺序表

19.有以下程序#include<stdio.h>voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;i<n-1;j++)for(j=i+l;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main{intc[10]={1,2,3,4,5,6,7,8,9,0),i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序运行的结果是()。A.1,2,3,4,5,6,7,8,9,0,

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

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

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

20.设S为一个长度为n的字符串,其中的字符各不相同,则S中的互异的非平凡子串(非空且不同于S本身)的个数为()。

A.2n-1B.n2C.(n2/2)+(n/2)D.(n2/2)+(n/2)-1

二、2.填空题(20题)21.已知字符'A'的ASCII码值为65,以下语句的输出结果是【】。

charch='B';

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

22.若有定义doublea[5];,则a数组元素下标的上限为______。

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

main()

{

charc1,c2;

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

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

printf("\n");

}

24.下面程序的运行结果是()。#defineP(A)printf("%d",A)main(){intj,a[]={1,2,3,4,5,6,7},i=5;for(j=3;j>1;j--){switch(j){case1:case2:P(a[i++]);break;case3:P(a[--i]);}}}

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

intmystrlen(char*str)

{inti;

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

return(【】);

}

26.funl函数的调用语句为:fun1(&a,&b,&c);它将3个整数按由大到小的顺序调整后依次放入a、b、c这3个变量中,a中放最大数。

voidfun2(int*x,int*y)

{intt;

t=*x;*X=*y;*y=t;

}

voidfunl(int*pa,int*pb,int*pc)

{if(*pc>*pb)fun2(【】);

if(*pa<*pc)fun2(【】);

if(*pa<*pb)fun2(【】);

}

27.x和y都是double型变量,x的初值为4.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为______。

28.以下程序的功能是从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。请填空。

main()

{charstr[81],*sptr;

inti;

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

{str[i]=getchar();

if(str[i]=='\n')break;

}

str[i]=【】;

sptr=str1

while(*sptr)putchar(*sptr【】);

}

29.函数fun的功能是计算xn。

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函数中已正确定义m、a、b变量并赋值,并调用fun函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为【】。

30.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。

31.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

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

main()

{

intx=0210;

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

}

33.在关系模型中,二维表的行称为______。

34.设有以下定义和语句,则*(*(p+2)+1)的值为【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

35.数据库管理系统是位于用户与______之间的软件系统。

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

main()

{charb[]="Hello,you";

b[5]=0;

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

}

37.算法的复杂度主要包括空间复杂度和______复杂度。

38.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

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

#include<stdio.h>

main()

{intx=1,y=1,a=1,b=1;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:

a++;b++;break;

}

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

}

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

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main0

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

三、1.选择题(20题)41.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

42.以下程序的功能是:建立一个带有头结点的甲—向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请从与下划线处号码对应的一组选项中选择出正确的选项。

#include<stdlib.h>

structnode

{chardata;structnode*next:};

(1)CreatList(char*s)

{

structnode*h,*p,*q;

h=(structnode*)mallocsizeof(structnode));

p=q=h;

while(*s!='\0')

{

p=(structnode*)malloc(sizeof(structnode));

p->data=(2);

q->next=p;

q-(3);

S++;

}

p->next='\0';

returnh;

}

main()

{

charstr[]="linklist";

structnode*head;

head=CreatList(str);

}

(1)

A.char*B.structnodeC.structnode*D.char

43.设已有定义:floatx;则以下对指针变量p进行定义且赋初值的语句中正确的是A.float*p=1024;

B.int*p=(float)x;

C.floatp=&x;

D.float*P=&x;

44.在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是A.p向高地址移了一个字节B.p向高地址移了一个存储单元C.p向高地址移了两个字节D.p与a+1等价

45.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是______。A.k%2B.k%2==1C.(k%2)!=0D.!k%2==1

46.一个关系中属性个数为1时,称此关系为()。

A.对应关系B.单一关系C.一元关系D.二元关系

47.在下列语句中,其含义为“q为一个指针的函数,该指针指向整型数据”的定义语句是()。

A.int**q;B.int(*q)0;C.int*q;D.int*q();

48.一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()A.有零个或多个输入B.有零个或多个输出C.有穷性D.可行性

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

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

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

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

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

50.在c语言中,变量的隐含存储类别是()。

A.autoB.staticC.externD.无存储类别

51.下列程序的输出结果是

#include"stdio.h"

#defineN3

#defineM3

voidfun(inta[M][N])

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

main()

{inta[M][N];

inti,j;

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

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

a[i][j]=i+j-(i-j);

fun(a);}

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

52.结构化程序设计主要强调的是______。

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

53.下列二维数组初始化语句中,正确且与语句floata[][3]={0,3,8,0,9};等价的是

A.floata[2][]={{0,3,8},{0,9}};

B.floata[][3]={0,3,8,0,9,0};

C.floata[][3]={{0,3},{8,0},{9,0}};

D.floata[2][]={{0,3,8},{0,9,0}};

54.下面程序的输出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=8,v2=8,v3=8,v4=8

55.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序运行后的输出结果是

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

56.在计算机中,算法是指()。

A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法

57.若有"doublea;",则正确的输入语句是()。

A.scanf("%1f",a);

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

C.scanf("%1f",&a)

D.scanf("%1e",&a);

58.以下程序的输出结果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}

A.12B.23C.14D.32

59.有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序输出结果是______。

A.0B.0.25C.0.5D.1

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

A.变量的作用域取决于变量定义语句的位置

B.全局变量可以在函数以外的任何部位进行定义

C.局部变量的作用域可用于其他函数的调用

D.一个变量说明为static存储类型是为了限制其他编译单元的引用

四、选择题(20题)61.

62.有以下程序:

i

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

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

63.

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

main

{doubled=3.2;intx,Y;

x=1.2;v=(x+3.8)/5.0;

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

}

A.3B.3.2C.0D.3.07

64.

65.

66.

67.

68.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、P、q、均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。该程序段实现的功能是()。

A.首结点成为尾结点B.尾结点成为首结点C.删除首结点D.删除尾结点

69.

有以下程序,其中函数f的功能是将多个字符串按字典顺序排序()。

#include<string.h>

voidf(char*p[],intn)

{char*t;inti,j;

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

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

if(strcmp(p[i],p[j]>0){t=p[i];p[i]=p[j];p[j]

=t;}

}

main

{char*P[5]={"abe","aabdfg","abbd","dcd-

be","cd"};

f(p,5);

printf("%d\n",strlen(p[1]));

}

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

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

70.

71.计算机的内存储器比外存器()

A.价格便宜B.存储容量大C.读写速度快D.读写速度慢

72.下面不属于软件工程三要素的是()。

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

73.有以下程序程序运托舌的输出结果是()。

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

74.有以下程序

#include<stdio.h>

main()

{inti=5;

do

{if(i%3==1)

if(i%5==2)

{printf("*%d",i);break;}

i++;

}while(i!=0);

printf("\n");

}

程序的运行结果是

A.*7B.*3*5

C.*5D.*2*6

75.数据流图中带有箭头的线段表示的是()。

A.控制流B.事件驱动C.模块调用D.数据流

76.若有以下说明和语句,请选出哪个是对C数组元素的正确引用()。

A.cp+1B.*(cp+3)C.*(cp+1)+3D.*(*cp+2)

77.有以下程序

#include<stdio.h>

#defineN4

voidfun(inta[][N],intb[])

{inti;

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

b[i]=a[i][i];

}

main()

{intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;

fun(x,y);

for(i=0;i<N;i++)printf("%d,",y[i]);

printf("\n");

}

程序的运行结果是

A.l,2,3,4,

B.1,0,7,0,

C.1,4,5,9,

D.3,4,8,10,

78.

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

A.数据所占的存储空间

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

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

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

80.

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:先将字符串s中的字符按顺序存放到t中,然后把S中的字符按正序连接到t的后面。例如,当s中的字符串为WXYZ时,则t中的字符串应为WXYZWXYZ。

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

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

试题程序:

#

温馨提示

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

评论

0/150

提交评论