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

下载本文档

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

文档简介

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

一、单选题(20题)1.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.执行算法所需要的存储空间

2.

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

4.数据处理的最小单位是()。

A.数据B.数据元素C.数据项D.数据结构

5.下面哪些使用的不是贪心算法()

A.单源最短路径中的Dijkstra算法

B.最小生成树的Prim算法

C.最小生成树的Kruskal算法

D.计算每对顶点最短路径的Floyd-Warshall算法

6.

7.

8.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值

9.有下列程序段:

intk=0,a=1,b=2,c=3;

k=a<b?b:a;k=k>C?C:k;

执行该程序段后,k的值是()。

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

10.有以下程序:#include<stdio.h>typedefstruct{intnum;charname[10];intscore;}PER;voidfun(PERx[]){intt;if(x[0].score>x[1].score){t=x[0].score;x[0].score=x[1].score;x[1].score=t;}}main(){PERs[2]={{1001,“zhang”,621},{1002,“wang”,585}};inti;fun(s);for(i=0;i<2;i++)printf(“%d,%s,%d,”,s[i].num,s[i].name,s[i].score);}程序的运行结果是()。A.1001,zhang,585,1002,wang,621,

B.1001,zhang,621,1002,wang,585,

C.1002,wang,585,1001,zhang,621,

D.1002,wang,621,1001,zhang,585,

11.在位运算中,操作数每左移两位,其结果相当于()。

A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4

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

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

13.已知各变量的类型说明如下则以下不符合C语言语法的表达式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

14.输入序列为ABC,输出为CBA时,经过的栈操作为()。

A.push,pop,push,pop,push,pop

B.push,push,push,pop,pop,pop

C.push,push,pop,pop,push,pop

D.push,pop,push,push,pop,pop

15.函数fread(buffer,size,count,fp)中buffer代表的是()。

A.—个存储区,存放要读的数据项

B.一个整数,代表要读入的数据项总数

C.一个文件指针,指向要读的文件

D.—个指针,指向读入数据要存放的地址

16.以下程序的输出结果是______。

A.54321

B.12345

C.12345

D.543210main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d"",k);}

17.以下程序的输出结果是()main(){union{chari[2];intk;}r;r.i[0]=2,r.i[1]=0;printf("%d\n",r,k);}

A.2B.1C.0D.不确定

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

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列中的队尾指针一定大于队头指针

D.循环队列中的队尾指针一定小于队头指针

19.若函数中有定义语句:inta;,则()。

A.系统将自动给a赋初值为0B.系统将自动给a赋初值一lC.这时a中的值无意义D.这时a中无任何值

20.排序的算法很多,若排序的稳定性和不稳定性分类,则()是不稳定排序。

A.冒泡排序B.归并排序C.直接插入排序D.希尔排序

二、2.填空题(20题)21.下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。

#include<stdio.h>

#include<ctype.h>

main()

{charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

printf("s=%d",s);

}

22.以下条件表达式可计算:1+|a|的值,请填空。a>=0?【】:【】

23.设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有【】个元素。

24.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。

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

charb[]="ABCD";

main()

{char*p=b;

for(;*p;p++)

printf("%s",p);

printf("\n");

}

26.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

27.若用0至9之间不同的三个数构成一个三位数,下面程序将统计出共有多少种方法。请填空。

#include<stdio.h>

main()

{inti,j,k,count=0;

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

for(j=0;i<=9;j++)

if(【】)continue;

elsefor(k=0;k<=9;k++)

if(【】)count++;

printf("%d",count);}

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

#include<stdlib.h>

main()

{char*s1,*s2,m;

s1=s2=(char*)malloc(sizeof(char));

*s1=15;*s2=20;m=*s1+*s2;

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

}

29.性结构中,队列的操作顺序是先进先出,而栈的操作顺序是______。

30.当数据的物理结构(存储结构)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。

31.下面程序

main()

{inti,j,m,n;

i=5;

j=10;

m=++i;

n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

}

运行后,i,j,m,n的值分别是_______。

32.有以下程序:

#definef(x)x*x

main()

{inti;

i=f(4+4)/f(2+2);

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

}

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

33.C语言用于结构化程序设计的3种基本结构是______、选择结构和循环结构。

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

intn='c';

switch(n++)

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

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

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

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

}

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

inti=9;

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

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

main()

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

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

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

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

}

37.数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。

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

inti=9;

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

39.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。

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

三、1.选择题(20题)41.假定所有变量均已正确说明,下列程序段运行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

42.设有以下定义:inta=0;doubleb=1.25;charc='A';#defined2则下面语句中错误的是()。

A.a++;B.b++;C.c++;D.d++;

43.阅读下面程序,则执行后的结果是#include"stdio.h"main(){charstr[]="tomeetme",*p;for(p=str;p<str+7;p+=2)putchar(*p);printf("\n");}.

A.tomeetmeB.tmemC.oeteD.tome

44.已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,134),当用二分法查找值为90的元素时,查找成功的比较次数为()。

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

45.下列数据结构中,能用二分法进行查找的是()。

A.顺序存储的有序线性表B.结性链表C.二叉链表D.有序线性链表

46.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。

A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2

47.数据存储和数据流都是______,仅仅是所处的状态不同。

A.分析结果B.事件C.动作D.数据

48.下列不正确的转义字符是______。

A.'\\',B.'\'C.'074'D.'\0'

49.以下选项中合法的实型常数是

A.5E2.0B.E-3C.2.00E+00D.1.3E

50.在E-R图中,用()来表示实体之间联系。

A.矩形B.菱形C.椭圆形D.正方形

51.下列数据结构中,能用二分法进行查找的是()。

A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表

52.下面程序的运行结果是______。main(){charch[7]={"65ab21"};inti,s=0;for(i=0;ch[i]>='0'&&ch[i]<='9';i+-2)s=10*s+ch[i]-'0';printf("%d\n",s)'}

A.12ba56B.652C.6D.62

53.若有“doublea;”,则正确的输入语句是()。

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

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

C.scanf("%1f",&A);

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

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

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

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

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

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

55.设有如下程序#include<atdio.h>main(){int**k,*j,i=100;j=&i,k=&j;printf("%d\n",**k);}上述程序的输出结果是______。

A.运行错误B.100C.i的地址D.i的地址

56.若有如下说明,且int类型占两个字节,则正确的叙述为()。structst{inta;intb[2];}a;

A.结构体变量a与结构体成员a同名,定义是合法的

B.程序只在执行到该结构体时才为结构体st分配存储单元

C.程序运行时为结构体st分配8字节存储单元

D.类型名structst可以通过extern关键字提前引用

57.下列程序的输出结果是()。#include<stdio.h>#defineF(x)2.84+x#definew(y)printf("%d",(int)(y))#defineP(y)w(y)putchar('\n')main(){intx=2;P(F(5)*x);}

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

58.数据结构中,与所使用的计算机无关的是数据的()。A.存储结构B.物理结构C.逻辑结构D.物理和存储结构

59.程序中若有如下说明和定义语句:charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;┆}以下选项中对函数fun的正确调用语句是()。

A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s)

60.有以下程序:voidsum(int*A){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=1;i>0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}程序运行后的输出结果是______。

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

四、选择题(20题)61.

有下列程序:

main

{intk=5:

while(--k)printf("%d",k=1);

printf("\n");

}

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

A.1B.2C.4D.死循环

62.

有下列程序:

fun(intX,inty){return(x+y);}

main

{inta=1,b=2,c=3,sum;

sum=fun((a++,b++,a+b),c++);

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

}

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

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

63.执行以下程序时输人1234567<CR>,则输出结果是()。

#include<stdio.h>

main

{

inta=1,b;

scanf("%3d%2d",&a,&b);

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

}

A.12367B.12346C.12312D.12345

64.有以下程序:

#include<stdio.h>

#include<strin9.h>

main()

{printf{"%d\n",strlen("%d\n",strlen("ATS\n012\|"));}

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

A.3B.8C.4D.9

65.下列程序的运行结果是()。#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

66.不能实现函数之间数据传递的是()。

A.全局变量B.局部变量C.函数接口D.函数返回值

67.在数据结构中,从逻辑上可以把数据结构分为()。A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构

68.下列关于算法复杂度描述正确的是()。

A.算法的时间复杂度是指算法执行的时间

B.算法的空间复杂度是指执行这个算法所需的内存空间

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

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

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

inta[5]={2,4,6,8,10},*P,**k;

p=a;k=&p;

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

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

A.44B.22C.24D.46

70.有以下程序

#include<stdio.h>

voidfun(char**p)

{p=p+2;

printf("%s\n",*p);

}

main()

{char*a[]={"Morning","Afternoon","Evening","Night"};

fun(a);

}

程序的运行结果是

A.rning

B.afternoon

C.ternoon

D.Evening

71.

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

A.a是实型变量,C允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值

B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为3

73.若有以下程序

#include<stdio.h>

inta[]={2,4,6,8};

main()

{inti;

int*p=a;

for(i=0;i<4;i++)a[i]=*p;

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

}

上面程序的输出结果是

A.6B.8

C.4D.2

74.

75.

76.在ASP.NET中采用CodeBehind代码隐藏技术分离HTML显示代码和业务逻辑代码,在PHP中采用的技术是()。

A.模板技术B.静态缓存技术C.PHP引擎技术D.后台编译技术

77.

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

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

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

79.若变量a,b已正确定义,且b已正确赋值,则合法的语句是()。

A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);

80.以下选项中,不合法的C语言用户标识符是()。A.a-一bB.AaBeC.a_bD.一1

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(但Z转化为A,z转化为a),其他字符不变。

请修改函数proc()中的错误,使它能得出正确的结果。

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

试题程序:

六、程序设计题(1题)82.请编一个函数fun(ohlr*str),该函数的功能是把字符串中的内容逆置。

例如,字符串中原有的字符串为asdf9,则调用该函数后,串中的内容为9fdsa。

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

试题程序:

#include<string.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidfun(char*str)

{

}

voidmain

{

chara[N];

FILE*out:

printf("Enterastring:");

gets(a);

printf("Theorigiralstringis:");

puts(a);

fun(a):

printf("Thestringaftermodified:");

puts(a);

strcpy(a,"Welcome!");

fun(a);

ut=fopen("outfile.dat","w");

fprintf(out,"%s".a);

fclose(out);

}

参考答案

1.D解析:算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。

2.D

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

4.C解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。

5.D

6.B

7.B

8.D

9.B解析:因为a<b成立,所以条件表达式a<b?b:a的值等于b的值等于2,因此变量k的值等于2。又因为k=2>c=3不成立,所以条件表达式k>c?c:k的值等于k的值等于2。把条件表达式k>c?c:k的值赋给变量k,因而变量k的值等于2。因此,选项B)为正确答案。

10.A程序首先使用typedef定义一种新的类型名PER,它包含3种数据成员:整数num,字符数组name,整数score。main函数使用PER定义结构体数组s,s包含两个PER类型的元素。然后调用函数fun将数组s传入。fun函数的功能是比较形参数组x的两个元素的score值的大小。若第1个元素的score值大于第2个元素的score值,就使用临时变量t将两个元素的score值交换。由于621大于585且x等价于实参s的指针,因此实参s的两个元素的score也会进行交换,执行完fun函数之后,for循环将两个元素输出。故本题答案为A选项。

11.D解析:本题主要考查左移、右移对数据值的影响,左移n位相当于乘以2的n次幂,右移n位相当于除以2的n次幂。

12.D

13.A

14.B

15.Dfread函数用来读二进制文件,其中buffer是数据块的指针,它是内存块的首地址,输入的数据存入此内存中;size表示每个数据块的字节数;count用来指定每读一次读入的数据块个数;fp是文件指针,指向要读的文件。选项A、B、C错误。本题答案为D选项。

16.B

17.A解析:根据共用体的定义可知:共用体r的成员k和成员i[2]是共用同—段内存空间,所以,当程序给r.i[0]赋值后,实际上,共用体成员k的值也确定了,为2。所以打印输出的结果应当为2。

18.B在实际应用中,队列的顺序存储结构一般采用循环队列的形式。当循环队列为满或者为空时,队尾指针=队头指针。本题答案为B选项。

19.C用int方法定义变量时,编译器仅为变量开辟存储单元,并没有在存储单元中放任何值,此时变量中的值是无确定的,称变量值”无意义”。因此,本题正确答案为c。

20.D

21.(c=getchar())!='\n'(c=getchar())!='\\n'解析:分析题目可知,程序中运用函数c=getchar()从标准输入设备读取下一个字符,而且是一行的字符(即没有换行),所以条件为(c=getchar())!='\\n'。

22.1+a1-a1+a,1-a解析:考查条件运算符的使用。因为题目中求的是1+|a|的值,即1和a的绝对值之和,所以根据数学中求绝对值的规则;当a>=0时,绝对值取本身,当a<0时,绝对值取相反数,再结合条件运算符的计算规则,可得到本题的答案为a>=0。

23.2424解析:在循环队列中因为头指针指向的是队头元素的前一个位置,所以是从第6个位置开始有数据元素,所以队列中的数据元素的个数为29-5=24。

24.x<z‖y<zx<z‖y<z解析:本题考查逻辑运算符和逻辑表达式。x或y中至少有一个小于z,即x<z或y<z,是“或”的关系。

25.ABCDBCDCDD

26.静态分析静态分析解析:程序测试分为静态分析和动态测试。其中,静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

27.i==jk!i&&k!ji==j\r\nk!i&&k!j解析:本题用双重for循环写了一段0~9之间不同的3个数构成一个三位数的程序,因为要求三位数各个位数的数不能相同,所以第一个空if语句的条件应为i==j,即当两个位数上的数相同的时候,不再执行下面的操作,转去执行for循环的下一次循环。第二个空,需要判断第三位上的数不能与其他两位的数相同。

28.4040解析:本题中指针s1和s2都指向同一个内存中的地址。因此语句“*s2=20;”执行后,*\u3000s1=*s2=20。所以m最后的值为40。

29.先进后出先进后出解析:队列和栈都是线性结构,但是不同之处在于队列的操作顺序是先进先出,而栈的操作顺序是先进后出。

30.物理独立性数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。

31.611610。6,11,6,10。解析:本题考查自加的前置和后置的区别。

32.2828解析:i=f(4+4)/f(2+2)=4+4×4+4/2+2×2+2=4+16+2+4+2=28。

33.顺序结构顺序结构解析:结构化程序有3种摹本结构,即顺序结构、选择结构(包括if语句和switch语句)和循环结构(包括for语句、while语句、do…while语句)。

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

35.1111解析:格式字符。是以八进制无符号形式输出整数(不输出前导符0),因为整数9的八进制为11,所以输出结果为11。

36.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。

37.概念设计阶段(数据库概念设计阶段)概念设计阶段(数据库概念设计阶段)

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

39.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。

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

41.B

42.D解析:本题考核的知识点是在自加运算符的运算对象。自加运算对象可以是整型变量也可以是实型变量,但不能是表达式和常量。本题中,#defined2定义了d为常数2,不能在对d进行自加运算.故选项D是个不正确的语句,所以,4个选项中选项D符合题意。

43.B解析:存放字符串的字符数组的名字就是这个字符串的首地址。本题的功能是对于字符串“tomeetme”进行选择式输出,从第一个字母开始,每输出一个字符即跳过一个。

44.BB。【解析】根据二分法查找法需要两次:(1)首先将90与表中间的元素50进行比较,由于90大于50,所以性表的后半部分查找。(2)第二次比较的元素是后半部分的中间元素,即90,这时两者相等,即查找成功。

45.A\nA。【解析】二分法查找只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表,都只能采用顺序查找。

\n

46.DD。【解析】本题主要考查对排序算法的理解。冒泡排序法首先将第一个记录的关键字与第二个记录的关键字进行比较,若逆序则交换,然后比较第二个与第三个,以此类推,直至第n-1个与第n个记录的关键字进行比较。第一趟冒泡排序使最大的关键字元素放到最后。以此类推,进行第2~n次冒泡排序。如果在排序过程中不存在逆序,则排序结束。在最坏情况下,冒泡排序中,若初始序列为“逆序”序列,则需要比较n(D-1)/2次。快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字比另一部分记录的关键字小,然后分别对这两部分记录继续进行排序,最终达到整个记录有序。对于快速排序,当初始记录序列按关键字有序或基本有序时,快速排序退化为冒泡排序,最坏情况下比较次数为n(n-1)/2。

47.D解析:数据流图有4种成分:源点或终点、处理、数据存储和哦数据流。数据存储是处于静止状态的数据,数据流是处于运动中的数据。

48.C

49.C解析:在C语言中,实数有两种表示形式:十进制数形式与指数形式。

1)一般形式的实数:小数形式的实数由整数部分、小数点和小数部分组成(必须要有小数点)。

2)指数形式的小数:指数形式的实数由尾数部分、e(E)和指数部分组成(字母e或E的前后必须要有数字,且其后面的指数必须为整数)。选项A中,5E2.0中E后面的2.0不是整数;选项B中,E前面没有数字;选项D中,E后面没有数字。

50.B\nB)【解析】在E.R图中用矩形表示实体集,在矩形内写上该实体集的名字,用椭圆形表示属性,在椭圆形内写上该属性的名称,用菱形表示联系,菱形内写上联系名。

\n

51.A\r\n二分法又叫折半(对分)查找法,只适合于顺序存储的有序表(是指线性表中的元素按值非递减排列)。二分法的基本思想是:设有序线性表的长度为n,被查元素为X,则二分查找的方法如下:

将X与线性表的中间项进行比较:若中间项的值等于x,则说明找到,查找结束;若x小于中间项的值,则在线性表的前半部分(即中间项以前的部分)以相同的方法进行查找;若X大于中间项的值,则在线性表的后半部分(即中间项以后的部分)以相同的方法进行查找、这个过程-直进行到查找成功或于表长度为0,(说明线性表中没有这个元素为止)顺序存储的线性袁在计算机中-般用一个-维数组来表示,在数组中我们可以通过数组名和下标来对数组中的任意一个元素进行访问,而在链表(不管是有序还是无序)中,要对元素进行访问必须从表头结点开始,顺着链条一个一个结点进行搜索,因此选项A正确

52.C

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

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

55.B解析:j=&i,j的值就是i的地址,8j=100,将j的地址赋给k,这时*k=j,那么,**k=*j,而*j=100,所以**k=100,最后的打印结果应当为100。

56.A

57.A解析:本题考查带参数的宏的定义及相关运算。P(P(5)*x)=P(2.84+5*2)=P(12.84),调用w(12.84),输出(int)(12.84)=12。

58.C数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构(物理结构)及数据上的运算集合。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,即数据元素之间的前后件关系,而不管它在计算机中的存储表示形式。

59.A解析:程序中定义的n是一个指向函数fun的指针变量,即将函数fun的人口地址赋给指针变量f1,这时f1和fun都指向函数的开头,调用*f1就是调用函数fun。注意,此时用函数指针变量调用函数时,只需用(*f1)代替函数名fun即可,再在(*f1)后的括号中根据需要写上实参,所以(%f1)(a);相当于fun(a);故选项A)是正确的。

60.D解析:C语言规定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。本题要求输出aa[0]的值,结果应为1。

61.A

\n在程序语句中,k的初始值为5,进行第l次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。

\n

62.C解析:函数fun(intx,inty)的功能是返回两个整型数据的和。在主函数中,变量a,b,c的初始值分别为1,2,3。因此逗号表达式“a++,b++,a+b”的值等于5,表达式c++的值为3,调用子函数的表达式为“fun(5,3);”,其返回值等8。所以变量sum的值等于8。

63.Dscanf函数中的格式控制说明为”%3d%2d”,分别选中输人中的三位和两位,因此a=123,b=45。因此正确答案为D)选项。

64.B\n本题考查strlen函数和转移字符,strlen函数的功能是求字符串的长度,在本题中有“\”,C语言中“\”是转义字符,在计算长度时会将转义符以及后面的第一个字符作为1个长度进行计算,所以答

\n

65.B本题考查带参数的宏的定义:“#defineADD(x)x+x”中X代表m+n,故s写成s=m+n+m+n*k=1+2+1+2*3=10。

66.B局部变量的作用域仅局限于函数体内。不能在函数之间进行数据传递。

67.C数据结构与算法:数据结构的基本概念[评析]逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。线性结构和非线性结构是根据数据元素之间关系的不同特性加以分类的,即是从逻辑上加以分类的。

68.B算法的时间复杂度是指执行算法所需的计算工作量。算法的空间复杂度是指执行这个算法所需的内存空间。在一个算法的空间复杂度大的情况下,其时间复杂度可能会很大,具体视情况而定;反之亦然。

69.C

70.D本题主要考查指向指针的指针。在程序中,首先定义了一个fun函数,函数无返回类型,函数的形参是一个指向指针的指针变量p,在该函数体中,首先将变量p的值加2,并保存在p中,根据指针变量的特性,这个加2是使指针变量往后移两个单位,如果开始指向第一个元素,现在则指向第三个元素(注意:这里并不是指移动两个字节)。然后输出*p,由于p是一个指向指针的变量,那么*p输出的也不是单个数组,而是一个首地址对应的字符串或数组,在本题中输出的是字符串。

在主函数中,定义一个指针数组a,并赋初值,然后调用函数fun,实参为a,输出的应该是指针数组中第3个指针对应的字符串,即Evening。\r\n\r\n\r\n

71.B

72.AC语言中语法上规定实型变量是不能存放整型类型的数据的,整型数据也不能存放实型数据。是为了避免类型转换之间可能会发生的错误。

73.D本题中,程序开始定义了一个全局数组a,并对这个数组进行赋初值。在主函数中,定义一个整型变量i和一个整型指针变量p,并使指针变量p指向全局数组a的首地址。然后执行for循环,循环变量i的初值为0,循环结束条件为变量i的值大于等于4,循环变量i的值每循环一次自加1,通过这些分析我们知道,循环执行了4次结束。

第一次循环时,由于*p表示数组的第一个元素值2,那么执行a[i]=*p;语句,即将数组的第一个元素变为2;第二次循环时,由于i为1,即将数组的第二个元素变为2,同理,第三次与第四次循环分别将数组的第三和第四个元素值变为2。

循环结束,程序执行输出语句,这时数组中所有元素的值都为2。因此,程序最后的输出结果是2。

74.C

75.B

76.A

77.B

78.C本题主要考查scanf输入语句及其格式。在本题中的四个选项中,分别用不同的格式试图从键盘输入数据。

在选项A中,给出的输入格式是“%2d,%2d,%2d”,表示输入的数据中间用逗号隔开,而且其输入的宽度为2,即可以输入一个两位数,如果输入的位数小于2,则左边补空格。在其输出列表中,表示方式也不对,其他三项是正确的。

在选项B中,给出的输入格式是“%d%d%d”,仅表示输入的数据中间用空格隔开。

在选项C中,给出的输入格式是“%d,%d,%d”,仅表示输入的数据中间用逗号隔开,与题目给出的要求一致,为正确答案。

在选项D中,给出的输入格式是“i=%d,j=%d,k=%d”,表示输入的数据中间不仅用逗号隔开,还需要如“i=”的说明符。

79.B在C语名中规定进行强制类型转换的格式是:(类型名)变量名;并且给表达式赋值。

80.A用户标识符命名规则为:由数字、字母或下划线组成,且首字母不能是数字.不能和关键字重复,所以A)错误.

81.(1)错误:while(*str!="@")

正确:while(*str)

(2)错误:(*str)++;

正确:str++;

82.\n\tcharch;

\ninti,m,n;

\ni=0:

\nm=n=strlen(str)-1;//求字符串str长度

\nwhile(i<(n+1)/2)//循环逆置交换

\n{

\nch=str[i];

\nstr[i]=str[m];

\nstr[m]=ch:

\ni++;

\nm--;

\n}

\n【解析】在fun函数中,首先求行字符串的长度,然后通过循环进行字符交换。要注意的是,如果字符串长度是奇数,则最中间的元素在逆置前后的位置是没有改变的。\n2021年山东省东营市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.执行算法所需要的存储空间

2.

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

4.数据处理的最小单位是()。

A.数据B.数据元素C.数据项D.数据结构

5.下面哪些使用的不是贪心算法()

A.单源最短路径中的Dijkstra算法

B.最小生成树的Prim算法

C.最小生成树的Kruskal算法

D.计算每对顶点最短路径的Floyd-Warshall算法

6.

7.

8.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值

9.有下列程序段:

intk=0,a=1,b=2,c=3;

k=a<b?b:a;k=k>C?C:k;

执行该程序段后,k的值是()。

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

10.有以下程序:#include<stdio.h>typedefstruct{intnum;charname[10];intscore;}PER;voidfun(PERx[]){intt;if(x[0].score>x[1].score){t=x[0].score;x[0].score=x[1].score;x[1].score=t;}}main(){PERs[2]={{1001,“zhang”,621},{1002,“wang”,585}};inti;fun(s);for(i=0;i<2;i++)printf(“%d,%s,%d,”,s[i].num,s[i].name,s[i].score);}程序的运行结果是()。A.1001,zhang,585,1002,wang,621,

B.1001,zhang,621,1002,wang,585,

C.1002,wang,585,1001,zhang,621,

D.1002,wang,621,1001,zhang,585,

11.在位运算中,操作数每左移两位,其结果相当于()。

A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4

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

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

13.已知各变量的类型说明如下则以下不符合C语言语法的表达式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

14.输入序列为ABC,输出为CBA时,经过的栈操作为()。

A.push,pop,push,pop,push,pop

B.push,push,push,pop,pop,pop

C.push,push,pop,pop,push,pop

D.push,pop,push,push,pop,pop

15.函数fread(buffer,size,count,fp)中buffer代表的是()。

A.—个存储区,存放要读的数据项

B.一个整数,代表要读入的数据项总数

C.一个文件指针,指向要读的文件

D.—个指针,指向读入数据要存放的地址

16.以下程序的输出结果是______。

A.54321

B.12345

C.12345

D.543210main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d"",k);}

17.以下程序的输出结果是()main(){union{chari[2];intk;}r;r.i[0]=2,r.i[1]=0;printf("%d\n",r,k);}

A.2B.1C.0D.不确定

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

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列中的队尾指针一定大于队头指针

D.循环队列中的队尾指针一定小于队头指针

19.若函数中有定义语句:inta;,则()。

A.系统将自动给a赋初值为0B.系统将自动给a赋初值一lC.这时a中的值无意义D.这时a中无任何值

20.排序的算法很多,若排序的稳定性和不稳定性分类,则()是不稳定排序。

A.冒泡排序B.归并排序C.直接插入排序D.希尔排序

二、2.填空题(20题)21.下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。

#include<stdio.h>

#include<ctype.h>

main()

{charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

printf("s=%d",s);

}

22.以下条件表达式可计算:1+|a|的值,请填空。a>=0?【】:【】

23.设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有【】个元素。

24.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。

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

charb[]="ABCD";

main()

{char*p=b;

for(;*p;p++)

printf("%s",p);

printf("\n");

}

26.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

27.若用0至9之间不同的三个数构成一个三位数,下面程序将统计出共有多少种方法。请填空。

#include<stdio.h>

main()

{inti,j,k,count=0;

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

for(j=0;i<=9;j++)

if(【】)continue;

elsefor(k=0;k<=9;k++)

if(【】)count++;

printf("%d",count);}

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

#include<stdlib.h>

main()

{char*s1,*s2,m;

s1=s2=(char*)malloc(sizeof(char));

*s1=15;*s2=20;m=*s1+*s2;

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

}

29.性结构中,队列的操作顺序是先进先出,而栈的操作顺序是______。

30.当数据的物理结构(存储结构)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。

31.下面程序

main()

{inti,j,m,n;

i=5;

j=10;

m=++i;

n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

}

运行后,i,j,m,n的值分别是_______。

32.有以下程序:

#definef(x)x*x

main()

{inti;

i=f(4+4)/f(2+2);

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

}

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

33.C语言用于结构化程序设计的3种基本结构是______、选择结构和循环结构。

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

intn='c';

switch(n++)

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

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

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

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

}

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

inti=9;

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

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

main()

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

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

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

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

}

37.数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。

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

inti=9;

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

39.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。

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

三、1.选择题(20题)41.假定所有变量均已正确说明,下列程序段运行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

42.设有以下定义:inta=0;doubleb=1.25;charc='A';#defined2则下面语句中错误的是()。

A.a++;B.b++;C.c++;D.d++;

43.阅读下面程序,则执行后的结果是#include"stdio.h"main(){charstr[]="tomeetme",*p;for(p=str;p<str+7;p+=2)putchar(*p);printf("\n");}.

A.tomeetmeB.tmemC.oeteD.tome

44.已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,134),当用二分法查找值为90的元素时,查找成功的比较次数为()。

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

45.下列数据结构中,能用二分法进行查找的是()。

A.顺序存储的有序线性表B.结性链表C.二叉链表D.有序线性链表

46.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。

A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2

47.数据存储和数据流都是______,仅仅是所处的状态不同。

A.分析结果B.事件C.动作D.数据

48.下列不正确的转义字符是______。

A.'\\',B.'\'C.'074'D.'\0'

49.以下选项中合法的实型常数是

A.5E2.0B.E-3C.2.00E+00D.1.3E

50.在E-R图中,用()来表示实体之间联系。

A.矩形B.菱形C.椭圆形D.正方形

51.下列数据结构中,能用二分法进行查找的是()。

A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表

52.下面程序的运行结果是______。main(){charch[7]={"65ab21"};inti,s=0;for(i=0;ch[i]>='0'&&ch[i]<='9';i+-2)s=10*s+ch[i]-'0';printf("%d\n",s)'}

A.12ba56B.652C.6D.62

53.若有“doublea;”,则正确的输入语句是()。

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

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

C.scanf("%1f",&A);

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

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

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

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

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

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

55.设有如下程序#include<atdio.h>main(){int**k,*j,i=100;j=&i,k=&j;printf("%d\n",**k);}上述程序的输出结果是______。

A.运行错误B.100C.i的地址D.i的地址

56.若有如下说明,且int类型占两个字节,则正确的叙述为()。structst{inta;intb[2];}a;

A.结构体变量a与结构体成员a同名,定义是合法的

B.程序只在执行到该结构体时才为结构体st分配存储单元

C.程序运行时为结构体st分配8字节存储单元

D.类型名structst可以通过extern关键字提前引用

57.下列程序的输出结果是()。#include<stdio.h>#defineF(x)2.84+x#definew(y)printf("%d",(int)(y))#defineP(y)w(y)putchar('\n')main(){intx=2;P(F(5)*x);}

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

58.数据结构中,与所使用的计算机无关的是数据的()。A.存储结构B.物理结构C.逻辑结构D.物理和存储结构

59.程序中若有如下说明和定义语句:charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;┆}以下选项中对函数fun的正确调用语句是()。

A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s)

60.有以下程序:voidsum(int*A){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=1;i>0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}程序运行后的输出结果是______。

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

四、选择题(20题)61.

有下列程序:

main

{intk=5:

while(--k)printf("%d",k=1);

printf("\n");

}

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

A.1B.2C.4D.死循环

62.

有下列程序:

fun(intX,inty){return(x+y);}

main

{inta=1,b=2,c=3,sum;

sum=fun((a++,b++,a+b),c++);

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

}

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

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

63.执行以下程序时输人1234567<CR>,则输出结果是()。

#include<stdio.h>

main

{

inta=1,b;

scanf("%3d%2d",&a,&b);

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

}

A.12367B.12346C.12312D.12345

64.有以下程序:

#include<stdio.h>

#include<strin9.h>

main()

{printf{"%d\n",strlen("%d\n",strlen("ATS\n012\|"));}

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

A.3B.8C.4D.9

65.下列程序的运行结果是()。#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

66.不能实现函数之间数据传递的是()。

A.全局变量B.局部变量C.函数接口D.函数返回值

67.在数据结构中,从逻辑上可以把数据结构分为()。A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构

68.下列关于算法复杂度描述正确的是()。

A.算法的时间复杂度是指算法执行的时间

B.算法的空间复杂度是指执行这个算法所需的内存空间

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

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

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

inta[5]={2,4,6,8,10},*P,**k;

p=a;k=&p;

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

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

A.44B.22C.24D.46

70.有以下程序

#include<stdio.h>

voidfun(char**p)

{p=p+2;

printf("%s\n",*p);

}

main()

{char*a[]={"Morning","Afternoon","Evening","Night"};

fun(a);

}

程序的运行结果是

A.rning

B.afternoon

C.ternoon

D.Evening

71.

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

A.a是实型变量,C允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值

B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为3

73.若有以下程序

#include<stdio.h>

inta[]={2,4,6,8};

main()

{inti;

int*p=a;

for(i=0;i<4;i++)a[i]=*p;

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

}

上面程序的输出结果是

A.6B.8

C.4D.2

74.

75.

76.在ASP.NET中采用CodeBehind代码隐藏技术分离HTML显示代码和业务逻辑代码,在PHP中采用的技术是()。

A.模板技术B.静态缓存技术C.PHP引擎技术D.后台编译技术

77.

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

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

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

79.若变量a,b已正确定义,且b已正确赋值,则合法的语句是()。

A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);

80.以下选项中,不合法的C语言用户标识符是()。A.a-一bB.AaBeC.a_bD.一1

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(但Z转化为A,z转化为a),其他字符不变。

请修改函数proc()中的错误,使它能得出正确的结果。

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

试题程序:

六、程序设计题(1题)82.请编一个函数fun(ohlr*str),该函数的功能是把字符串中的内容逆置。

例如,字符串中原有的字符串为asdf9,则调用该函数后,串中的内容为9fdsa。

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

试题程序:

#include<string.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidfun(char*str)

{

}

voidmain

{

chara[N];

FILE*out:

printf("Enterastring:");

gets(a);

printf("Theorigiralstringis:");

puts(a);

fun(a):

printf("Thestringaftermodified:");

puts(a);

strcpy(a,"Welcome!");

fun(a);

ut=fopen("outfile.dat","w");

fprintf(out,"%s".a);

fclose(out);

}

参考答案

1.D解析:算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。

2.D

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

4.C解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。

5.D

6.B

7.B

8.D

9.B解析:因为a<b成立,所以条件表达式a<b?b:a的值等于b的值等于2,因此变量k的值等于2。又因为k=2>c=3不成立,所以条件表达式k>c?c:k的值等于k的值等于2。把条件表达式k>c?c:k的值赋给变量k,因而变量k的值等于2。因此,选项B)为正确答案。

10.A程序首先使用typedef定义一种新的类型名PER,它包含3种数据成员:整数num,字符数组name,整数score。main函数使用PER定义结构体数组s,s包含两个PER类型的元素。然后调用函数fun将数组s传入。fun函数的功能是比较形参数组x的两个元素的score值的大小。若第1个元素的score值大于第2个元素的score值,就使用临时变量t将两个元素的score值交换。由于621大于585且x等价于实参s的指针,因此实参s的两个元素的score也会进行交换,执行完fun函数之后,for循环将两个元素输出。故本题答案为A选项。

11.D解析:本题主要考查左移、右移对数据值的影响,左移n位相当于乘以2的n次幂,右移n位相当于除以2的n次幂。

12.D

13.A

14.B

15.Dfread函数用来读二进制文件,其中buffer是数据块的指针,它是内存块的首地址,输入的数据存入此内存中;size表示每个数据块的字节数;count用来指定每读一次读入的数据块个数;fp是文件指针,指向要读的文件。选项A、B、C错误。本题答案为D选项。

16.B

17.A解析:根据共用体的定义可知:共用体r的成员k和成员i[2]是共用同—段内存空间,所以,当程序给r.i[0]赋值后,实际上,共用体成员k的值也确定了,为2。所以打印输出的结果应当为2。

18.B在实际应用中,队列的顺序存储结构一般采用循环队列的形式。当循环队列为满或者为空时,队尾指针=队头指针。本题答案为B选项。

19.C用int方法定义变量时,编译器仅为变量开辟存储单元,并没有在存储单元中放任何值,此时变量中的值是无确定的,称变量值”无意义”。因此,本题正确答案为c。

20.D

21.(c=getchar())!='\n'(c=getchar())!='\\n'解析:分析题目可知,程序中运用函数c=getchar()从标准输入设备读取下一个字符,而且是一行的字符(即没有换行),所以条件为(c=getch

温馨提示

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

评论

0/150

提交评论