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

下载本文档

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

文档简介

2021-2022年四川省内江市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在下列几种排序方法中,要求内存量最大的是______。

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

2.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);)main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(“%d”,a[i]);}printf(“\n”);}程序运行后的输出结果是()。A.1313B.2234C.3234D.1234

3.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()。

A.intB.floatC.doubleD.不确定

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

A.在switch语句中,不一定使用break语句

B.break语句只能用于switch语句

C.break语句必须与switch语句中的case配对使用

D.在switch语句中必须使用default

5.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

6.有以下程序:

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

A.1,2,6,24,120,B.1,2,3,4,5,C.1,1,1,1,1,D.1,2,4,6,8,

7.下列程序的输出结果是()#include<stdio.h>main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}printf(“%d”,a);}A.19B.18C.6D.8

8.以下关于指针的说法错误的是()。

A.可以向指针中写入任意数据

B.可以向指针所指内存单元中写入数据

C.指针可以指向与其基类型相同的普通变量

D.可以通过加法运算,使指针指向下一个内存单元

9.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。

A.控制流B.加工C.数据存储D.源和潭

10.链表不具有的特点是()。

A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比

11.

12.若x和y都是int型变量,x=100,y=200,且有程序片段:printf("%d",(x,y));上面程序片段的输出结果()

A.200B.100C.100200D.输出格式符不够,输出不确定的值

13.设char型变量x中的值为10100111,则表达式(2+x)(-3)的值为______。

A.10101001B.10101000C.11111101D.1010101

14.按照“先进后出”原则组织数据的结构是()。

A.队列B.栈C.双向链表D.二叉树

15.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序输出为()。

A.编译有错B.0,0,0,3C.1,1,2,0D.0,1,2,0

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

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

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

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

D.以上3种说法都不对

17.设有函数说明语句:intfun(int,int);以及函数指针定义语句:int(*f)(int,int);若要使函数指针指向函数fun的入口地址,以下选项中正确的是()。

A.f=fun();B.*f=fun;C.f=fun;D.*f=fun();

18.

19.下列关于线性表、栈和队列的叙述,错误的是()。

A.线性表是给定的n(n必须大于零)个元素组成的序列

B.线性表允许在表的任何位置进行插入和删除操作

C.栈只允许在一端进行插入和删除操作

D.队列允许在一端进行插入在另一端进行删除

20.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

二、2.填空题(20题)21.设有定义:intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。

scanf(“%d”,______);

printf(“%d\n”,______);

22.输出指针数组各元素所指的整数值和它存放的地址值。

#include<stdio.h>

main()

{inti;

inta[5]={1,3,5,7,9};

int*num[5];

int【】;

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

num[i]=【】;

p=num+0;

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

{printf("%d%d\n",【】);

p++;

}

}

23.实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文件名在可执行命令的命令行中(相当于copy命令),假定文件在当前目录下。请补全程序。

#include<stdio.h>

voidmain(intargc,char*argv[])

{FILE*f1,*f2;

if(argc<【】)

{printf("parametererror!\n");exit(0);}

f1=fopen(argv[1],"r");

f2=fopen(argv[2],"w");

while(【】)fputc(fgetc(f1),f2);

fclose(f1);

fclose(f2);

}

24.有下面的程序:

#include<stdio,h>

main()

{enumteam{my,your=4,his,her=his+10};

prinff("%d%d%d%d\n",my,your,his,her);

此程序的输出结果是【】。

A)0123B)04010C)04515D)14515

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

#include<stdio.h>

main()

{inti,m=0,n=0,k=0;

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

switch(i/10)

{case0:m++;n++;break;

case10:n++;break;

default:k++;n++;

}

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

}

26.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

请填空。

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1][

27.以下程序中select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。

#defineN3

#defineM3

select{inta[N][M],int*n;

{inti,j,row=l,eolum=l;

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

forj=0;j<M;j++)

if(a[i][j]>a[row][colum]){row=i;colum=j:}

*n=______;

return______;

}

main()

{inta[N][M]={9,11,23.6,1,15,9,17,20},max,nj

max=select(a,&n);

printf("max=%d,line=%d\n",max.n;

}

28.关键字ASC和DESC分别表示【】的含义。

29.没有chara,b;,若要通过a&b运算屏蔽掉a中的其他位,只保留第2位和笫8位(右起为第1位),则b的二进制是【】。

30.设有下列宏定义:#defineA2

#defineBA+3

则执行赋值语句;t=B*2;t为int型变量后的值是______。

31.若有以下函数定义,函数返回值的类型是【】。

fun(doubleA)

{returna*a*a;}

32.下列程序中的函数stropy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新字符串。例如,若t所指字符串为:efgh,调用strcpy2后,s所指字符串为:efghefgh。请填空。

#include<stdio.h>

#include<string.h>

voidstrcpy2(char*s,char*t)

{char*p=t;

while(*s++=*t++);

s=【】;

while(【】=*p++);

}

main()

{charstr1[100]="abed",str2[]="efgh";

strcpy2(str1,str2);printf("%s\n",str1);

}

33.若x和a均是int型变量,则计算完x=(a=4,6*2)后的x值为______。

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

35.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度。请填空。

FILE*myf;longf1;

myf=【】("test.t","rb");

fseek(myf,0,SEEKEND);

f1=ftell(myf);

fclose(myf);

printf("%d\n",f1)

36.用指针法求出数组元素中最大者和最小者。

intmax,min;

voidmax_min_value(array,n)

intarray[],n;

{【】;

max=min=*array;

for(【】;p<array+n;p++)

if(*p>max)max=*p;

elseif(*p<min)min=*p;

}

main()

{inti,number[20],*p;

p=number;

printf("输入20个数据:\n");

for(i=0;i<20;i++,p++)scanf("%d",p);

【】;

max_min_value(p,10);

printf("max=%-10dmin=%d\n",max,rain);

}

37.以下程序中,for循环体执行的次数是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

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

{…}

}

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

main()

{chars[]=“abcdef”;

s[3]='\0';

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

}

39.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。

voidsstrcpy(char*s,char*t)

{while(*s++=______);}

main()

{charstr1[100],str2[]="abcdefgh";

sstrcpy(str1,str2);

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

}

40.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

三、1.选择题(20题)41.在下述程序中,判断i>j共执行的次数是()。main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d",s);break;}s+=i;}}

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

42.下列程序执行后的输出结果是______。main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}

A.456B.258C.369D.789

43.执行下列程序的输出结果是()。main(){union{intb;charc[2];}y;y.b=0x4142;printf("%c,%c",y.c[1],y.c[0]);}

A.65,66B.a,bC.B,AD.A,B

44.下列程序的运行结果是()。main(){inta=-5,b=1,c=1;intx=0,Y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y=x-y;}elseif(c>0)Y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}

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

45.应用数据库的主要目的是A.A.解决数据保密问题

B.解决数据完整性问题

C.解决数据共享问题

D.解决数据量大的问题

46.若有下面的说明和定义,则sizeof(structaa)的值是structaa{intrl;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;

A.30B.29C.24D.22

47.以下程序的输出结果是()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

48.以下程序的输出结果为()。inta,b,C;a=10;b=50;C=30;if(a<b)a=b;b=C;c=a;printf("a=%d,b=%d,c=%d",a,b,C);

A.a=50,b=30,c=30

B.a=10,b=30,c=10

C.a=50,b=30,c=10

D.a=50,b=30,c=50

49.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是A.字符AB.字符aC.字符eD.非法的常量

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

A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

51.在结构化方法中,用数据流图(DFD)作为描述工具的软件开发阶段是()。

A.可行性分析B.需求分析C.详细设计D.程序编码

52.为了提高软件模块的独立性,模块之间最好是()。

A.控制耦合B.公共耦合C.内容耦合D.数据耦合

53.有以下程序段:intn,t=1,s=0;scanf("%",&n);do{s=s+t;t=t-2;}while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是()。

A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数

54.软件生命周期中花费时间最多的阶段是()

A.详细设计B.软件编码C.软件测试D.软件维护

55.X、Y、Z被定义为int型变量,若从键盘给X、Y、Z输入数据,正确的输入语句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

56.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为______。A.EOFB.非0值C.0D.NULL

57.在软件测试设计中,软件测试的主要目的是

A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.尽可能多地发现软件中的错误

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

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

B.函数可以返回地址值

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

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

59.有以下程序:#include<stdio.h>#include<string.h>main(){charp[]={'a','b','c'],q[10]={'a','h','c'}prinff("%d%d\n",strlen(p),strlen(q));以下叙述中正确的是()。

A.在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3

B.由于P数组中没有字符串结束符,长度不能确定;q数组中字符串长度为3

C.由于q数组中没有字符串结束符,长度不能确定;p数组中字符长度为3

D.由于p和q数组中没有字符串结束符,故长度都不能确定

60.有以下程序main(){chars[]="159",*p;p=s;printf("%c",*p++);printf("%c",*p++);}程序运行后的输出结果是______。

A.15B.16C.12D.59

四、选择题(20题)61.

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

main

{charx=0xFFFF;printf("%d\n",x--);}

A.-32767B.FFFEC.1D.32768

62.有如下程序段

structabc

{inta,b,c,s;};

main()

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

t=s[0].a+s[1].b;

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

}

程序运行后输出的结果是

A.5B.6

C.7D.8

63.若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为()。

A.4B.16C.32D.52

64.已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是()。A.A.isupper(c)B.'A'<=c<='Z'

C.'A'<=c&&c<='Z'

D.c<=('z'-32)&&('a'-32)<=c

65.

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

A.简单c语句必须以分号结束

B.C程序中的每—行只能写—条i{}句

C.c语言程序中的注释必须与语句写在同一行

D.C语句必须在一行内写完

67.数据库设计包含四个阶段,它们是需求分析、()、逻辑设计和物理设计。

A.编码设计B.测试阶段C.运行阶段D.概念设计

68.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。

A.提高耦合性降低内聚性有利于提高模块的独立性

B.降低耦合性提高内聚性有利于提高模块的独立性

C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D.内聚性是指模块间互相连接的紧密程度

69.设x为int型变量,则执行以下语句后,x的值为()。x=10;x=x-=x-x;

A.10B.20C.40D.30

70.设以下变量均为int类型,则值不等于7的表达式是()。

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

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

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

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

71.有以下程序函数fun只对下标为偶数的元素进行操作.:

程序运行后的输出结果是()。A.A.7,2,5,4,3,6,1,

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

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

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

72.下面属于黑盒测试方法的是()。

A.边界值分析B.路径覆盖C.语句覆盖D.逻辑覆盖

73.层次型、网状型和关系型数据库的划分原则是()

A.数据之间的联系方式B.记录长度C.联系的复杂程度D.文件的大小

74.

75.

76.有以下程序

main()

{inti;

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

switch(i)

{case1:printf("%d",i);

case2:printf("%d",i);

default:printf("%d",i);

}

}

程序执行后的输出结果是

A.011122B.012

C.012020D.120

77.有以下程序:

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

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

78.下列数据模型中,具有坚实理论基础的是()。A.层次模型B.网状模型C.关系模型D.以上三个都是

79.下列有关数据库的描述,正确的是A.数据处理是将信息转化为数据的过程

B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变

C.关系中的每一列称为元组,一个元组就是一个字段

D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字

80.

五、程序改错题(1题)81.下列给定程序中,fun()函数的功能是:从整数1~50中,选出能被3整除且有一位上的数是5的数,并把这些数放b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1放个位数,a2放十位数。

请修改函数中的错误,得出正确的结果。

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

试题程序:

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。例如,若字符串中的内容为****a*bc*def*g。***,删除后,字符串中的内容则应当是****a*bc*def*g。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:

参考答案

1.D解析:快速排序的基本思想是,通过一趟排序将排序记录分割成独立的两部

分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继

续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依

次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整

个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩

下的于表采用同样的方法,直到表空为止;归并:排序是将两个或两个以上的有序表组合

成一个新的有序表。

注意:各种排序方法实现过程及实现机制。

2.C本题考查了宏定义与局部变量的区别,宏定义的作用范围为整个程序,而变量的作用范围只在定义它的函数体的部分,因此,主函数中定义的i与fun中的i互不相干。

3.C

4.Aswitch语句中不一定使用break语句,选项A正确;break语句除了用于switch语句,还可以用于循环语句中,选项B、C错误;switch语句不一定需要使用default语句,选项D错误。本题答案为A选项。

5.A解析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。

6.Astatic静态变量只在声明时初始化一次。mul()累乘,第一次init=1,init}=val,第二次init=1,val=2,第三次init=2,val=3,第四次init=6,val=4,第五层init=24,val=5,因此结果为l,2,6,24,120。故答案为A选项。

7.A本题考查switch语句。当i=1时,执行case1,因为没有遇到break语句,所以依次往下运行,a=a+2=2,a=a+3=5;当i=2时,执行case2,因为没有遇到break语句,所以依次往下运行,a=a+2=7,a=a+3=10;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a=a+2=13,a=a+3=16;当i=4时,执行default,a=a+3=19,结束循环。

8.A指针变量必须区分基类型,可以向指针所指内存单元写入与基类型相同的数据,而不能写入任意数据,选项A错误,选项B正确;指针可以指向与其基类型相同的普通变量,选项C正确;指针是一个内存地址,它是一个整数,可以通过加法运算,使指针指向下一个内存单元,选项D正确。故本题答案为A选项。

9.A解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。

10.BB选项的特点是顺序存储结构的特点,即数组的特点。

11.A

12.A

13.D解析:异或运算符(^)的运算规则是:参加运算的两个相应位同号,则结果为0(假);异号则为1(真)。取反运算符(-)的运算规则是:对一个二进制数按位取反,即将0变为1,1变为0。本题(-3)是对3(二进制形式为00000011)按位取反即11111100。表达式(2+x)(-3)的值就等价于(00000010+10100111)^11111100,结果为01010101。

14.B栈是线性表的一种,其插入和删除运算都只在表的一端进行。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除的元素,是按先进后出的原则组织数据的。

15.AC语言中规定else总是和之前与其最近的且不带else的if配对。题目中,“if(a=1)b=1;c=2;”默认省略了else,导致下一句else没有匹配语句。故本题答案为A选项。

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

17.CC语言中,函数名也是一个指针,是函数的人口地址。使函数指针f指向函数fun的入口地址,直接将函数名fun赋给指针f即可。故本题答案为C选项。

18.C

19.A解析:线性表的插入和删除允许在任何位置进行,所以B选项的说法是正确的;栈的操作只允许在栈顶进行,因此,栈称为先进后出表(FILO,FirstInLastOut),或“后进先出”表(LIFO,LastInFirstOut),所以C选项说法也是正确的;队列(queue)是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear),因此队列亦称作先进先出(FIFO,FirstInFirstOut)的线性表,或后进后出(LILO,LastInLastOut)的线性表。所以D选项说法也是正确的。

20.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

21.k*kk*k解析:本题考查的知识点是scarf()函数和printf()函数的用法。scanf()函数有两个参数,第一个参数是格式控制部分(格式控制部分是字符串,主要由“%”号和格式字符组成)第二个参数是一地址列表(地址列表是由多个地址组成,可以是变量的地址,也可以是字符串的首地址)。而第一个空格处位于scanf()函数的第二个参数处,所以,第一个空应该填地址k。printf()函数有两个参数,第一个参数是输出格式字符串(输出格式字符串是由控制输出格式的字符和非格式字符组成的,通常是字符常量。非格式字符作为输出数据的间隔,输出时原样输出)第二个参数为一输出表达式表(输出表达式表是由若干个需要计算和输出的表达式组成的,表达式之间用逗号分隔开)。而第;个空位于printf()函数的第二个参数处,所以应该填*K。

22.**pa+I**p*p

23.3!feof(f1)3\r\n!feof(f1)解析:要实现文件复制,需要指定源文件及目的文件,因此在命令行下执行程序时至少要指定两个参数,加上程序名本身,故argc的值至少为3,因此第一空应填3。while循环中语句fputc(fgetc(f1),f2);的目的是将f1中的字符依次读出并写入到f2对应的文件中去,直至文件f1结束为止,因此第二空为!feof(f1)。

24.CC解析:枚举的语法规定,当枚举元素没有赋值时,如果前面没有其他枚举元素,其值为0;如果前面有其他枚举元素,其值为前一个元素的值加1,所以his的值为5,her的值为15。

25.132132解析:在程序中,i从9开始循环,当i=9时,执行case0后的语句m++;n++;此时m=1,n=1,然后执行break,跳出循环;当i=10时,执行detault后的语句k++;n++;此时k=1,n=2;当i=11时,再执行default后的语句,k=2,n=3。此时,m=1,n=3,k=2。输出结果为132。

26.本题程序的流程是:让i;j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是a[j-1]!=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以s[i]要留到新数组中。注本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目中。\r\n\r\n

27.rowa[row][colum]row\r\na[row][colum]解析:通过对题意的分析,在select()函数中,变量row的作用是用来记录最大元素的行下标,column的作用是用来记录最大元素的列下标。程序中通过一个循环求得数组元素中最大值的行列下标,分别存放在变量row和colmnn中,根据题意,应该把行下标赋值给形参指针变量n指向的变量,把最大值a[row][columa]作为函数值返回。

28.升序排列和降序排列升序排列和降序排列解析:ASC表示升序排列,DESC表示降序排列,多用在索引定义和SELECT语句中的ORDER子句中。

29.1000001010000010解析:运算“&”的规则是只有当两个相应的二进制位都为1时,该位的结果才为1。要保留第2、8位,只要将其与二进制数10000010相与。

30.88解析:本题考查带参数的宏定义及相关运算.运算过程为:t=B*2=A+3*2=2+3*2=8。

31.int类型int类型

32.s-1或--s或s--*s++s-1或--s或s--\r\n*s++解析:在函数。strcpy2()中,首先将指针t保存到指针p中,然后进入第1个while()循环,其循环条件为*s++=*t++,其中“*”和“++”运算符的优先级相同,但他们的结合性为从右至左,而“=”运算符优先级比较低,所以原表达式等价于(*s++)=(*(t++)),即将t当前所指内容复制到s当前所指地址中,然后让s和t同时往后移动一位,整个表达式返回的是复制给s的值。所以,当t所指内容是字符串结束符'\\0',时,while循环结束,原先t所指的整个字符串也就复制到s所指的地址中去了。但是,while循环最后一次判断也会让s和t往后移动一位,即此时s指向了字符串结束符'\\0'的后一位。所以第2次复制字符串之前,应先将s指针往回移动一位,故前一空应该填入s-1或其他等价形式。接下来的while循环实现第二次复制,照抄第1次的while循环就行,故后一空应填入*s++。

33.1212解析:x=(表达式1,表达式2,…)的形式,结果为最后一个表达式的值:x=(a=4,6*2)=2*6=12。

34.物理独立性物理独立性

35.fopenfopen解析:函数fopen的原型为FILE*fopen(char*filename,char*mode),功能为以mode指定的方式打开名为filename的文件;函数fseek的原型为intfseek(FILE*fp,longoffset,intbase),功能为将fp所指向的文件的位置指针移到以base所指出的位置为基准,offset为位移量的位置;函数ftell的原型为longftell(FILE*fp),功能为返回fp所指向的文件中当前的读写位置;函数fclose的原型为intfclose(FILE*fp),功能为关闭fp所指的文件,释放文件缓冲区。

36.int*pp=array+1p=numberint*p\r\np=array+1\r\np=number解析:函数max_min_value()中用到了指针变量p,显然应在第一个空格处填int*p。函数max_min_value()中的for循环逐一把数组中的元素与max和min的当前值进行比较。max和rain的初值是数组的第1个元素值,第1次比较应与第2个元素比较,即array+1。第二个空格处应填p=array+1。主函数main()中的指针变量p首先指向数组number的第1个元素,当第1个for循环结束时,它指向数组的最后一个元素。若这时将p作为实参传给被调用函数,形参array[]数组的首址将是number口数组的最后元素的地址,而number[]数组的前n-1个元素不能参加比较,这将引起计算出错。因此,在调用max_min_value()函数之前,应将指针p指向number[]数组首址,即在第三个空格应填写p=umber。

37.44解析:将程序中所有的宏替换掉可得:M=2+1,K=2+1*2+1/2=4,所以for循环共循环了K-1+1次,即4-1+1共4次。

38.abcabc解析:字符串的结束标记'\\0',当输出一个存放在字符数组中的字符串时,只需输出到'\\0'为止,而不管其后有什么数据。本题给字符数组s的元素s[3]赋值为'\\0',故只能输出3个字符“abc”。

39.*t++或*(t++)*t++或*(t++)解析:主函数中定义了两个字符型数组st1l和str2,并且给str2赋初值“abcdefgh”,接着调用函数sstrcpy(str1,str2),将字符串str2的值赋给str1.在函数sstrcpy(*s,*t)中,用了一个while循环,每循环一次将形参指针t所指的字符赋给形参指针s所指向的存储空间,然后指针s和指针t都下移到下一个元素。所以空格处应该填*t++或*(t++)。

40.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。

41.D

42.C解析:根据二维数组的定义得出:m[0][0]=1,m[0][1]=4,m[0][2]=7,m[1][0]=2,m[1][1]=5,m[1][2]=8,m[2][0]=3,m[2][1]=6,m[2][2]=9,所以本题的输出是第3行的值m[2][0],m[2][1],m[2][2],即369。

43.D解析:共用体中的成员是共享同一内存区域的,另外,整数在内存中的表示是低字节在前高字节在后,所以给y.b赋值0x4142,等价于给y.c[0]赋值0x42(字符B),y.c[1]赋值Ox41(字符A)。所以本题输出的结果是A,B。故应该选择D。

44.A解析:本题考查ifelse语句的使用。先判断第1个if语句,因为c=1>0,所以x=x+y=0+2=2。第1个if语句,因为a=-5<0,所以进入下列的复合语句。经判断发现,复合语句中第2个if语句的条件均不满足,不执行任何语句退出,在这个过程中y和z的值没有发生变化。

45.C数据库是对数据进行操作和管理的,可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。数据库可以被直观地理解为存放数据的仓库,数据库可以对大量数据进行管理和应用。一个应用数据库的主要目的就是要实现数据的共享,能使应用数据库的数据被大量用户使用。

46.D解析:结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有自己的内存单元;共用体变量所占的内存长度等于最长的成员的长度。结构体变量aa中,成员r1占2个字节,r2占8个字节,r3占4个字节,共用体ua占8个字节,所以共占用2+8+4+8=22个字节。

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

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

struct结构题类型名

{

成员项表;

};

48.D解析:a的初值为10,b的初值为50,a<b为真,执行a=b,则a的值为50。继续执行b=c;和c=a;,则b=30,c=50。所以选项D正确。

49.A本题考查的知识点是转义字符。题目中的关键是八进制101的十进制是多少.八进制的101转换为十进制为65,也就是字符A的ASCII。

50.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。

51.B解析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。

52.D解析:耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。

53.D解析:要使程序段不陷入死循环,必须存在终止循环的条件“t=n”,由于t的初始值为1,且每执行一次循环都会使t的值减2,故执行本程序后t有可能的最大值为-1,然后,每循环一次就减2,所以键盘输入的n的值必须是t的值之一,即为任意负奇数。

54.D解析:软件生命周期分为软件定义、软件开发及软件运行维护3个所段。本题中,详细设计、软什编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性.降低维护的代价。

55.B解析:scanf()函数要求将输入的数据存入变量所在的地址。选项A不是C语言中的输入语句,故选项A不正确;选项C中输入的是变量字符串而不是地址字符串,不满足scanf()函数要求将输入的数据存入变量所在的地址,故选项C不正确;选项D不是C语言中的输入语句,故选项D不正确:所以,4个选项中选项B符合题意。

56.B(27)B)解析:函数feof的功能是:测试fp所指的文件的位置是否已达到文件尾,如果达到文件尾,则函数返回非0值,否则返回0,表示文件尚未结束。

57.D解析:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。

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

59.B解析:strlen函数用于计算以,'\\0'结束的字符串的长度,函数值为字符串的实际长度,长度中不包括,'\\0'。q数组定义的数组大小为10,而初始化时字符串只占用了前3个存储单元,其余存储单元系统自动加'\\0',故数组q的长度为3;而p数组定义时没有指定大小,其大小根据初始化所赋值确定为3,没有字符串结束符,故字符串的长度不能确定。

60.A解析:自增运算符“++”放在变量之前表示在使用变量之前,先使变量的值加1;放在变量之后表示在使用变量之后,再使变量的值加1。语句p=s;使指针p指向字符串s的首地址,第一次输出语句先输出字符'1',指针p再往后移一位,指向字符'5'的地址,第二个输出语句,同样先输出字符'5',指针p再往后移一位,指向字符'9'的地址。

61.C

\n因为x=0xFFFF=11111111,因此当以整型形式输出时对应的数为一1。

\n

62.B本题中,程序首先定义一个结构体,该结构体定义了四个整型变量。在主函数中,首先定义了一个该结构体的大小为2的结构体数组,并给该数组进行了初始化,从初始化语句我们可以看出,初始化时缺少了一个结构体成员的值,在这种情况下,系统会自动为缺省的成员补0,本题中就是给结构体成员变量b赋初值为0。

然后定义了一个整型变量t,接着运行t=s[0].a+s[1].b;语句,即t=1+5=6。因此,程序的最后输出结果为6,本题正确答案选B。

63.C本题主要考查逗号表达式。逗号是一个特殊的运算符,它具有所有运算符中最低的优先级。在C语言中,用它可以将两个表达式连接起来,逗号表达式的一般表现形式为:

表达式1,表达式2,…,表达式n

逗号表达式的求解过程是:先求解表达式1,再求解表达式2,依次往后计算,整个逗号表达式的值是最后一个表达式的值,如“3+5,5+6”的值是11。

在本题中,逗号表达式为i=4,j=16,k=32,根据上面的分析,计算逗号表达式得到的结果为k=32,最后将逗号表达式的结果赋值给变量x,那么变量x的值为32。因此,本题的正确答案选C。

64.B选项B先计算关系表达式“'A'<=c”的值是0还是l,再比较该值与字符'z'之间的大小关系,不能实现题目所要求的功能。

65.C

66.A语句必须以分号结束,所以A)正确,c语言中书写格式自由,所以B)、C)、D)错误

67.D数据库设计目前一般采用生命周期法,即将整个数据库应用系统的开发分解成目标独立的若干阶段。它们是需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段和进一步修改阶段。数据库设计中采用前四个阶段,并重点以数据结构与模型为设计主线。

68.B模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A错误,B正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以C与D错误。故答案为B选项。

69.A执行x=x-=x-x语句可写成x=x-(x-x),可看出结果为10,故八选项正确。

70.C逗号表达式,其值为最后一个表达式的值。如A,值为x+1,x=6,所以结果为7,而C,x+y,x=6,y=6,x+y=12.

71.A由函数fun(int*a,intn)中语句if(a[j]>a[k])k=j;可知当前k是记录数组中较大数据值所在位置的下标变量,所以该函数的作用是对数组a中的下标为偶数位置的数据进行从大到小的排序,即对a[0],a[2],a[4],a[6]中的数据1,3,5,7进行从大到小的排序,其他位置的数据不变,所以答案为A)。

72.A黑盒测试方法主要有等价类划分、边界值分析、因果图、错误推测等。白盒测试的主要方法有逻辑驱动、路径测试等,主要用于软件验证。

73.A\n数据库按数据模型分为层次型数据库、网状型数据库、关系型数据库,数据模型即数据之间的联系方式,因此正确选项为A)。

\n

74.B

75.D

76.A在本题中,程序首先定义了一个循环变量i,然后执行for循环,从循环变量的初始值及循环的结束条件可以判断出循环执行3次。

第一次循环时,i=0,然后执行switch语句,由于i=0,无法找到匹配的case结构,执行default结构,此时输出变量i的值0。本次循环结束。

第二次循环时,i=1,然后执行switch语句,由于i=1,首先执行case1结构,输出1,由于没有break,程序接着执行case1结构,又输出1,接着又执行default结构,又输出一个1。在本次循环中,总共输出3个1。

第三次循环时,i=2,然后执行switch语句,由于i=2,首先执行case2结构,输出2,由于没有break,程序接着执行default结构,又输出一个2。在本次循环中,总共输出2个2。三次循环后循环结束,主函数结束。

从上面对程序的分析我们可以知道,程序最后的输出结果是011122。因此本题的正确答案选A。

77.D该题目中首先区别++n和n++,第一次调用f函数时,将++n(n自增l后再参与运算)作为参数进行传递,此时变量m的值为1,执行n+=m;后,n=1,将l返回主函数,并输出。第二次调用f函数时,将n++(n参与运算后再自增1)作为参数进行传递,此时变量m的值为1,执行语句n+=m;,由于n是静态存储变量,因此n=2,将2返回主函数并输出。因此D选项正确。

78.C解析:在层次模型和网状模型的系统研究和数据库设计中,其性能和质量主要决定于设计者的经验和技术水平,而缺乏一定的理论指导。因此,系统的研制和数据库的设计都比较盲目,即使是同一个数据库管理系统,相同的应用,不同设计者设计出来的系统其性能可以差别很大。关系模型是以数学理论为基础,从而避免了层次模型和网状模型系统中存在的问题。本题的正确答案是C。

79.D数据处理是指将数据转换成信息的过程,故选项A叙述错误。数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B叙述错误。关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C叙述错误。所以本题选D。

80.B

81.

【解析】(1)根据题目中要求,第一个标识下fun()函数的定义为“intfun(int*b);”。在C语言中规定,函数的定义格式,不应以分号结束,所以应把末尾分号去掉。

(2)题干中要求在1~50之间选出符合条件的整数,循环条件表达式的起始应当是j=1,而不是j=10,所以第二个标识下应改为“for(j=1;j<=50;j++)”。

(3)变量i是标识数组b的下标,也就是数组的个数。题目“returnj”返回的是循环条件表达式中的变量,所以这里应改为“returni”。

82.

【解析】要删除字符串尾部的所有*,只要将尾部所有*中的第一个改为字符串结束符即可。首先,将字符串指针移动到字符串最后一个位置,检查最后一个字符,是*则将指针前移,否则将指针后移一个位置赋值作为结束符。

2021-2022年四川省内江市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在下列几种排序方法中,要求内存量最大的是______。

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

2.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);)main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(“%d”,a[i]);}printf(“\n”);}程序运行后的输出结果是()。A.1313B.2234C.3234D.1234

3.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()。

A.intB.floatC.doubleD.不确定

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

A.在switch语句中,不一定使用break语句

B.break语句只能用于switch语句

C.break语句必须与switch语句中的case配对使用

D.在switch语句中必须使用default

5.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

6.有以下程序:

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

A.1,2,6,24,120,B.1,2,3,4,5,C.1,1,1,1,1,D.1,2,4,6,8,

7.下列程序的输出结果是()#include<stdio.h>main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}printf(“%d”,a);}A.19B.18C.6D.8

8.以下关于指针的说法错误的是()。

A.可以向指针中写入任意数据

B.可以向指针所指内存单元中写入数据

C.指针可以指向与其基类型相同的普通变量

D.可以通过加法运算,使指针指向下一个内存单元

9.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。

A.控制流B.加工C.数据存储D.源和潭

10.链表不具有的特点是()。

A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比

11.

12.若x和y都是int型变量,x=100,y=200,且有程序片段:printf("%d",(x,y));上面程序片段的输出结果()

A.200B.100C.100200D.输出格式符不够,输出不确定的值

13.设char型变量x中的值为10100111,则表达式(2+x)(-3)的值为______。

A.10101001B.10101000C.11111101D.1010101

14.按照“先进后出”原则组织数据的结构是()。

A.队列B.栈C.双向链表D.二叉树

15.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序输出为()。

A.编译有错B.0,0,0,3C.1,1,2,0D.0,1,2,0

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

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

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

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

D.以上3种说法都不对

17.设有函数说明语句:intfun(int,int);以及函数指针定义语句:int(*f)(int,int);若要使函数指针指向函数fun的入口地址,以下选项中正确的是()。

A.f=fun();B.*f=fun;C.f=fun;D.*f=fun();

18.

19.下列关于线性表、栈和队列的叙述,错误的是()。

A.线性表是给定的n(n必须大于零)个元素组成的序列

B.线性表允许在表的任何位置进行插入和删除操作

C.栈只允许在一端进行插入和删除操作

D.队列允许在一端进行插入在另一端进行删除

20.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

二、2.填空题(20题)21.设有定义:intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。

scanf(“%d”,______);

printf(“%d\n”,______);

22.输出指针数组各元素所指的整数值和它存放的地址值。

#include<stdio.h>

main()

{inti;

inta[5]={1,3,5,7,9};

int*num[5];

int【】;

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

num[i]=【】;

p=num+0;

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

{printf("%d%d\n",【】);

p++;

}

}

23.实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文件名在可执行命令的命令行中(相当于copy命令),假定文件在当前目录下。请补全程序。

#include<stdio.h>

voidmain(intargc,char*argv[])

{FILE*f1,*f2;

if(argc<【】)

{printf("parametererror!\n");exit(0);}

f1=fopen(argv[1],"r");

f2=fopen(argv[2],"w");

while(【】)fputc(fgetc(f1),f2);

fclose(f1);

fclose(f2);

}

24.有下面的程序:

#include<stdio,h>

main()

{enumteam{my,your=4,his,her=his+10};

prinff("%d%d%d%d\n",my,your,his,her);

此程序的输出结果是【】。

A)0123B)04010C)04515D)14515

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

#include<stdio.h>

main()

{inti,m=0,n=0,k=0;

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

switch(i/10)

{case0:m++;n++;break;

case10:n++;break;

default:k++;n++;

}

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

}

26.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

请填空。

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1][

27.以下程序中select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。

#defineN3

#defineM3

select{inta[N][M],int*n;

{inti,j,row=l,eolum=l;

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

forj=0;j<M;j++)

if(a[i][j]>a[row][colum]){row=i;colum=j:}

*n=______;

return______;

}

main()

{inta[N][M]={9,11,23.6,1,15,9,17,20},max,nj

max=select(a,&n);

printf("max=%d,line=%d\n",max.n;

}

28.关键字ASC和DESC分别表示【】的含义。

29.没有chara,b;,若要通过a&b运算屏蔽掉a中的其他位,只保留第2位和笫8位(右起为第1位),则b的二进制是【】。

30.设有下列宏定义:#defineA2

#defineBA+3

则执行赋值语句;t=B*2;t为int型变量后的值是______。

31.若有以下函数定义,函数返回值的类型是【】。

fun(doubleA)

{returna*a*a;}

32.下列程序中的函数stropy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新字符串。例如,若t所指字符串为:efgh,调用strcpy2后,s所指字符串为:efghefgh。请填空。

#include<stdio.h>

#include<string.h>

voidstrcpy2(char*s,char*t)

{char*p=t;

while(*s++=*t++);

s=【】;

while(【】=*p++);

}

main()

{charstr1[100]="abed",str2[]="efgh";

strcpy2(str1,str2);printf("%s\n",str1);

}

33.若x和a均是int型变量,则计算完x=(a=4,6*2)后的x值为______。

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

35.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度。请填空。

FILE*myf;longf1;

myf=【】("test.t","rb");

fseek(myf,0,SEEKEND);

f1=ftell(myf);

fclose(myf);

printf("%d\n",f1)

36.用指针法求出数组元素中最大者和最小者。

intmax,min;

voidmax_min_value(array,n)

intarray[],n;

{【】;

max=min=*array;

for(【】;p<array+n;p++)

if(*p>max)max=*p;

elseif(*p<min)min=*p;

}

main()

{inti,number[20],*p;

p=number;

printf("输入20个数据:\n");

for(i=0;i<20;i++,p++)scanf("%d",p);

【】;

max_min_value(p,10);

printf("max=%-10dmin=%d\n",max,rain);

}

37.以下程序中,for循环体执行的次数是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

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

{…}

}

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

main()

{chars[]=“abcdef”;

s[3]='\0';

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

}

39.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。

voidsstrcpy(char*s,char*t)

{while(*s++=______);}

main()

{charstr1[100],str2[]="abcdefgh";

sstrcpy(str1,str2);

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

}

40.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

三、1.选择题(20题)41.在下述程序中,判断i>j共执行的次数是()。main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d",s);break;}s+=i;}}

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

42.下列程序执行后的输出结果是______。main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}

A.456B.258C.369D.789

43.执行下列程序的输出结果是()。main(){union{intb;charc[2];}y;y.b=0x4142;printf("%c,%c",y.c[1],y.c[0]);}

A.65,66B.a,bC.B,AD.A,B

44.下列程序的运行结果是()。main(){inta=-5,b=1,c=1;intx=0,Y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y=x-y;}elseif(c>0)Y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}

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

45.应用数据库的主要目的是A.A.解决数据保密问题

B.解决数据完整性问题

C.解决数据共享问题

D.解决数据量大的问题

46.若有下面的说明和定义,则sizeof(structaa)的值是structaa{intrl;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;

A.30B.29C.24D.22

47.以下程序的输出结果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=

温馨提示

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

评论

0/150

提交评论