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

下载本文档

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

文档简介

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

一、单选题(20题)1.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()

A.每个元素都有一个直接前件和直接后件

B.线性表中至少要有一个元素

C.表中诸元素的排列顺序必须是由小到大或由大到小

D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件

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

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

3.有下列程序:程序执行后的输出结果是()。A.11B.43C.57D.53

4.以下程序段运行后x的值为()。inti,j,x=0;for(i=3;i>=1;i--)for(j=1;j<=i;j++)x=x+2A.8B.14C.10D.12

5.在循环双链表的p所指的结点之前插入s所指结点的操作是()。A.p->prior->prior

B.p->prior->prior

C.s->prior->next=s

D.s->prior->prior=s

6.已知数据表A中每个元素距其最终位置不远,为节省时间,应该采用的算法是()

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

7.以下不能将s所指字符串正确复制到t所指存储空间的是()。A.while(*t=*s){t++;s++;}

B.for(i=0;t[i]=s[i];i++);

C.do{*t++:*s++;}while(*s);

D.for(i=0,j=0;t[i++]=s[j++];);

8.fscanf函数的正确调用形式是()

A.fscanf(fp,格式字符串,输出表列);

B.fscanf(格式字符串,输出表列,fp);

C.fscanf(格式字符串,文件指针,输出表列),

D.fscanf(文件指针,格式字符串,输入表列);

9.在嵌套使用if语句时,C语言规定else总是A.和之前与其具有相同缩进位置的if配对

B.和之前与其最近的if配对

C.和之前与其最近的且不带else的if配对

D.和之前的第一个if配对

10.有以下程序:#include<stdio.h>#include<stdio.h>main(){charc[6];inti=0;for(;j<6;c[i]=getchar(),i++);for(i=0;i<6;i++)putchar(c[i]);printf("\n");}如果从键盘上输入:ab<回车>c<回车>def<回车>则输出结果为______。

A.abcdefB.abcdC.abcdD.abcdef

11.

12.

13.设变量已正确定义,则以下能正确计算f=n!的程序是()。A.f=0:for(i=1;i<=n;i++)f*=i:

B.F=1:for(i=1;i<2n;i++)f*=i:

C.f=1:for(i=n;i>1;i++)f*=i:

D.f=1;for(i=n;i>=2;i--)f*=i:

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.假设把整数关键码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.有以下程序,其中函数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++)ifstrcmp(p[i],p[j])>0{t=p[i]p[i]=p[j];p[j]=t;}}main(){char*p[5]=("abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[1]));}程序运行后的输出结果是______。A.2B.3C.6D.4

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

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

19.

20.若串S=,software,其子串的数目是()。

A.8B.37C.36D.9

二、2.填空题(20题)21.下列程序执行后输出的结果是【】。

main()

{intarr[10],i,k=0;

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

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

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

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

main()

{inti=010,j=10;

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

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

#include<stdio.h>

main()

{intp=30;

printf("%d\n",(p/3>0?p/10:p%3));

}

24.对于长度为n的顺序存储的线性表,当随机插入和删除—个元素时,需平均移动元素的个数为【】。

25.数据元素之间______的整体称为逻辑结构。

26.已知字符A的ACSII码值为65,以下语句的输出结果是______。

charch='B';

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

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

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

p=a;

28.阅读下面程序,则执行后的输出结果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

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

30.以下程序的输出结果是()。#include<stdio.h>main(){inti=10,j=0;do{j=j+i;i--;}while(i>5);printf("%d\n",j);}

31.【】是数据库设计的核心。

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

intmystrlen(char*str)

{inti;

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

return(i);}

33.数据库理论中,数据的独立性一般可分为物理独立性和______。

34.已知a=1,b=2,则表达式(a&B)&b||b的结果为()。

35.与结构化需求分析方法相对应的是【】方法。

36.软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于______中的一个阶段。

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

fun(intx)

{staticinta=3;

a+=x;

return(a);

}

main()

{intk=2,m=1,n;

n=fun(k);

n=fun(m);

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

}

38.有以下程序:

voidf(inta[],inti,intj)

{intt;

if(i<j)

{t=a[i];a[i]=a[j];a[j]=t;

f(a,i+1,j-1);

}

}

main()

{inti,aa[5]={1,2,3,4,5};

f(aa,0,4);

for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");

}

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

39.#define命令出现在程序中函数的外面,宏名的有效范围为______。

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

三、1.选择题(20题)41.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()

A.每个元素都有一个直接前件和直接后件

B.线性表中至少要有一个元素

C.表中诸元素的排列顺序必须是由小到大或由大到小

D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件

42.下列程序的输出结果是()main(){charch[2][5]={"6934","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0'&&p[i][j]<='9';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}

A.6385B.69825C.63825D.693825

43.有以下程序,其中%u表示按无符号整数输出:

main

{

unsignedintx=0xFFFF;/*x的初值为十六进制数*/

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

}

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

A.-1B.65535C.32767D.0xFFFF

44.若有下列说明语句int(*p)();则标识符p代表的是()

A.一个用于指向函数的指针变量,函数返回值的类型为int型

B.一个带回值类型为整型的函数名

C.一个用于指向整型数据的指针变量

D.一个带回值类型为指针类型的函数名

45.有以下程序inta=2;intf(intn){staticinta=3;intt=0;if(n%2){staticinta=4;t+=a++;}else{staticinta=5;t+=a++;}returnt+a++;}main(){ints=a,i;for(i=0;i<3;i++)s+=f(i)printf("%d\n",s);}程序运行后的输出结果是

A.26B.28C.29D.24

46.若已包括头文件<stdio.h>和<string.h>,运行下面程序的输出结果是()。chars1[10]="12345",s2[10]="089",s3[]="67";strcat(strcpy(s1,s2),s3);puts(s1);

A.8967B.894567C.89567D.89567

47.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是______。main(){unsignedinta=31,b=66;pfintf("%c\n,a|b);}

A.66B.98C.bD.B

48.有如下程序:#include<stdio.h>main(){inta=2,b=-1,c=2;if(a<b)if(b<0)c=0;elsec++;printf("%d\n",c);}该程序的输出结果是

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

49.下列判断正确的是()。

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";

50.有以下程序:main(){inti;for(i=1,i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}执行后的输出结果是()。

A.5B.24C.32D.40

51.设intx=1,y=1;表达式(!x||y--)的值是()。

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

52.下列程序的输出结果是______。inti=010,j=10;printf("%d,%d\n",++i,j--);

A.11,10B.9,10C.010,9D.10,9

53.若要打开A盘上user了目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是

A.fopen("A:\user\abc.txt",","r")

B.fopen("A:\\user\\abc.txt","r+")

C.fopen("A:\user\abc.txt","rb")

D.fopen("A:\\user\\abc.txt","w")

54.设intx=1,y=1;表达式(!x‖--y)的值是()。

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

55.下列描述中,正确的是()

A.线性链表是线性表的链式存储结构B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构

56.程序中对fun()函数有如下说明void*fun();此说明的含义是______。

A.fun函数无返回值

B.fun函数的返回值可以是任意的数据类型

C.fun函数的返回值是无值型的指针类型

D.指针fun指向一个函数,该函数无返回值

57.以下叙述中正确的是

A.局部变量说明为static存储类,其生存期将得到延长

B.全局变量说明为stoic存储类,其作用域将被扩大

C.任何存储类的变量在未赋初值时,其值都是不确定的

D.形参可以使用的存储类说明符与局部变量完全相同

58.若执行下述程序时,从键盘输入的数据是3和6,则程序的输出结果是()。#include<stdio.h>voidmain(){intx,y,z;scanf("%d%d",&X,&y);z=y+x;if(x<y)z=y+x;printf("%d",z);}

A.9B.3C.0D.有语法错误

59.有以下程序:#include<stdio.h>main(){printf("%d\n",NULL);}程序运行后的输出结果是()。

A.0B.1C.-1D.NULL没定义,出错

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

A.C程序必须由一个或一个以上的函数组成

B.函数调用可以作为一个独立的语句存在

C.若函数有返回值,必须通过咖语句返回

D.函数形参的值也可以传回给对应的实参

四、选择题(20题)61.设有以下程序段:

要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。

A.seanf(”%s”Ptrtitle);

B.scanf(”%s”,rec.title);

C.scanf(’’%s”,(*pu).title);

D.scanf(”%s”,ptr->title);

62.

63.

64.(49)按条件f对关系R进行选择,其关系代数表达式为()

A.R|X|R

B.R|X|Rf

C.бf(R)

D.∏f(R)

65.

66.有以下程序:

main()

{inta[3][3],*p,i;

p=&a[1][1];

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

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

}

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

A)3B)6

C)9D)2

67.

68.有以下程序

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

70.语句int(*ptr)的含义是()。

A.ptr是一个返回值为int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

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

A.c语言是一种结构化程序设计语言

B.使用三种基本结构构成的程序只能解决简单问题

C.结构化程序设计提倡模块化的设计方法

D.结构化程序由顺序、分支、循环三种基本结构组成

72.以下选项中,与k=n++完全等价的表达式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1

73.

74.(40)将E-R图转换到关系模式时,实体与联系都可以表示成()

A.属性

B.关系

C.键

D.域

75.下列函数的功能是()

76.有如下程序段

int*p,a=10,b=1;

p=&a;a=*p+b;

执行该程序段后,a的值为

A.12B.10C.11D.编译出错

77.数据库管理系统是()。

A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统

78.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

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.

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

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

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

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。此程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(),该函数的功能是将数组下三角元素中的值全部置成0。如a数组中的值为注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>#defineN5voidfun(inta[][N]){}voidmain(){ inta[N][N],i,j; system(“CLS”); printf(“****Thearray****\n”); for(i=0;i<n;i++)<p=""></n;i++)<>/*产生一个随机的5×5矩阵*/ { for(j=0;j<=""p=""> { a[i][j]=rand()%10; printf(“%4d”,a[i][j]); } printf(“\n”); } fun(a); printf(“TheResult\n”); for(i=0;i<n;i++)<p=""></n;i++)<> { for(j=0;j<=""p=""> printf(“%4d”,a[i][j]); printf(“\n”); }}

参考答案

1.D解析:线性表可以为空表,排除选项B。第一个元素没有直接前件,最后一个元素没有直接后件,故排除选项A。线性表的定义中,元素的排列没有规定大小顺序,故选项C也有误,只有D项是正确的。

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

3.D函数f是一个递归函数。当x>=2时,递归调用自身,返回值为x*f(x-l)+(x-l)*f(x-2);3x<2时,返回值为1。main函数中,调用函数f传入4,所以y的值是f(4)。f(4)等价于4*f(3)+3*f(2);f(3)等价于3*f(2)+2*f(1);f(2)等价于2*f(1)+1*f(0);f(0)、f(1)等价于1。综上:f(2)等于3,f(3)等于11,f(4)等于53。本题答案为D选项。

4.D

5.D

6.D

7.C解析:C项复制时没有复制结束串“\0”。

8.D

9.C解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合,与书写格式无关。所以选项C)为正确答案。

10.C解析:1.getchar():此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。

2.putchar():此函数的作用是向终端输出一个字符,也可以输出控制字符。本题在输入字符时,ab和c后面的回车符分别赋给了c[2]和c[4],所以,正确答案为C。

11.C

12.B

13.D由i"11的数字定义可知n!=n*(n-1)*(n-2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以1,2,3,…,n,最后计算得到f=n!一0,所以选项A不正确。在选项B中,f的初值为1,在for循环语句中,f依次乘以1,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为1,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项c不正确。在选项D中,f的初值为l,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!,所以选项D正确。

14.D

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

16.A

17.D解析:字符串比较函数“strcmp(char*s1,char*s2)”的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到到"\\0"为止。如果全部相同,则认为相等:若出现不相同的字符,则以第一个不相同的字符的比较结果为准。当s1<s2,返回值<0;当s1=s2时,返回值二0:当s1>s2时,返回值>0。故本题经过排序后,得到第二个字符串是“abbd”,所以输出结果是4。

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

19.B

20.B

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

22.8108,10解析:以0开头的是八进制数,输出时将其转换成十进制数。

23.33解析:(p/3>0?p/10:p%3)是一个条件表达式。题中p=30,p/3>0为真,所以p/10的结果3作为整个表达式的值。

24.n/2n/2解析:删除—个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2:所以总体平均移动元素个数为n/2。

25.逻辑关系逻辑关系

26.B66B66解析:printf函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中,printf('%c%d\\n',ch,ch)表示以字符格式和十进制整数格式输出ch,B的ACSII码值为66,即在计算机中B的十进制整数格式是66。所以,输出为B66。

27.6060解析:*(*(p+2)+1)相当于访问的是a[2][1]的值。*(p[2]+1)、p[2][1]以及(*(p+2))[1]表达的含义都是a[2][1]的值。

28.33解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf('%d\\n',z);语句。

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

30.4040解析:分析程序,初始时i=10,j=0,这时do循环中的“i=j+i”

31.数据模型数据模型

32.*(str+i)或str[i]*(str+i)或str[i]解析:str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+i)来访问字符串中的第i个元素,判断是否是结束标志,如果不是,i=i+1,继续取下一个元素进行判断,直到*(str+i)的值为'\\0'为止,也可以用下标的方式引用字符,如*(str+i)相当于str[i]。

33.逻辑独立性逻辑独立性解析:数据的独立性一般可分为物理独立性和逻辑独立性。

34.1

35.结构化设计结构化设计解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。

36.软件开发软件开发解析:软件生命周期分为3个时期共8个阶段:软件定义期(问题定义、可行性研究和需求分析)、软件开发期(系统设计、详细设计、编码和测试)、软件维护期(即运行维护阶段)。

37.6

38.154321,5,4,3,2解析:第一次调用函数f后aa[0]=5、aa[4]=1;第二次调用函数f后aa[1]=4、aa[4]=2;第三次调用函数f后aa[3]=3。正确答案为1,5,4,3,2。

39.从定义到本源文件结束从定义到本源文件结束解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。

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

41.D解析:线性表可以为空表,排除选项B。第一个元素没有直接前件,最后一个元素没有直接后件,故排除选项A。线性表的定义中,元素的排列没有规定大小顺序,故选项C也有误,只有D项是正确的。

42.A

43.B解析:整型常量有十进制、八进制和十六进制3种表示:十进制整数以正号(+)或负号(-)开头,由首位非0的一串十进制数字组成,正负号也可省略,表示正整数;八进制整数以数字0开头,后面接着干个八进制数字(0~7):十六进制整数以数字。和字母x(大、小写均可)开头,后面接若干个十六进制数字(数字0~9和字母A~F,大、小写均可)。故本题是以无符号整数形式输出一个十六进制整数FFFF,将其转换为十进制就是65535,故本题应该选择B。

44.A

45.C解析:全局变量的生存期是整个程序的运行期间,作用域是从变量定义的位置开始,到整个源文件结束止。但是,若全局变量和某一函数或语句块中的局部变量同名,则在该函数或语句块中,此全局变量被屏蔽,即在该函数或语句块内,访问的是局部变量,与同名的全局变量不发生任何关系。静态局部变量的生存期与全局变量相同,作用域和局部变量一样都是整个函数成语旬块内有效。程序第一行定义了一个全局变量a,在f()函数开头也定义了一个静态局部变量a,而且在后面if语句的两个子句中都定义了静态局部变量a。这4个变量a虽然名字一样,但却是4个独立的变量,而且在整个程序运行期都存在。在主函数中,在定义变量s时将s初始化为全局变量a的值2,然后使用一个for循环分别调用了3次f(0)、f(1)、f(2),并将得到的值累加到变量s中。第1次调用n=0为偶数,执行else子句,此时t累加的是else子句中的变量a,所以执行后else子句中的a变为6,t变为5,然后return语句中的a是函数f()开头定义的a,执行后函数开头的a变为4,所以返回值是5+3=8。第2次调用n为1是奇数,执行if子句,所以t变为4,if子句中的a变为5,然后返回时函数开头的a变为5,返回值是4+4=8。第3次调用n为2是偶数,又执行else子句,else子句中的a现在还是上次执行后的值6,所以t=6,然后返回时加上函数开头的a的当前值5,最后返回11。所以s最终的值是2+8+8+11=29。故应该选择C。

46.A

47.C解析:位运算符“|”的作用是按位或,即两个二进制数的相应位中只要有—个为1,该位的结果值为1。最后以字符型输出,98对应的字符“b”。

48.C解析:if语句嵌套使用时,else总是与它上面最近的if配对。因此,本题中先判断(a<b),因为表达式的值为0,故不执行下面的if语句,直接跳到printf行,c值没有改变。

49.D解析:a='ABCD'书写错误,因为“;”左边不能出现常量;数组名s是代表s数组首地址的地址常量,而不是变量;字符串只有在定义时维数可以省略。

50.C解析:i=30时,条件表达式“i++%5==0”为真,i++后i=31,++i后i=32,即条件表达式“++i%8==0”为真。

51.B

52.B

53.B解析:由于“\\”是转义字符,所以在文件名中的“\”用“\\\\”来表示,因此选项A和选项C不正确。要打开文本文件进行读写,应使用读写模式“r+”,因此选项D不正确。所以,4个选项中B为所选。

54.A解析:当逻辑或运算符两边的运算对象至少有一个为1时,整个逻辑表达式的值是1;如果两边的运算对象都为0,则整个逻辑表达式的值为0。题中!x=0,--y=0,所以整个表达式的值是0。

55.AA)【解析】根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:①有且只有一个根结点;②每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二:叉树是非线性结构。

56.C解析:C语言中函数的定义分为有参函数的定义和无参函数的定义。无参函数的定义形式为:

类型标识符函数名()

{说明部分

语句

}

有参函数的定义有两种形式:

类型标识符函数名(形式参数列表)

形式参数说明

{说明部分

语句

}

类型标识符函数名(类型名形参1,类型名形参2,…)

{说明部分

语句

}

其中函数名为用户定义的C语言的合法标识符,其前面的类型标识符用来说明函数值的类型,可以是C允许的任何类型,如int、char、float、double和指针类型等。当函数值为整型时类型标识符可以省略,如果函数没有返回值,类型标识符可以是void型。当函数的形参多于一个时,各个形参之间用逗号分隔。

57.A解析:静态局部变量在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久性的存储单元。由此可知静态局部变量的生存期将一直延长到程序运行结束。故选项A正确;而全局变量的只有一种静态存储类别,故全局变量说明为stattc存储类,和没有说明为static存储类其生存期都是一直延长到程序运行结束,故选项B不正确;未赋初值的auto型变量的初值是随机的,未赋初值的static型变量的初值是0(故选项C和选项D不正确)。所以;4个选项中选项A符合题意。

58.B解析:变量x得到数据3,变量y得到数据6。z=6+3=9。x<y即3<6关系表达式的值为1,执行z=y-x=6-3=3。最后输出z的值为3。

59.A解析:在C语言中NULL的ASCII码值为0,而输出函数要求以整形格式输出,故最后的输出数为0。所以,4个选项中选项A符合愿意。

60.D解析:本题主要考查函数的概念。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。由此可知选项D不正确,故应该选择D。

61.A符号“_>”是指针特用的,符号“.”用于指定元素的成员。ptr是指针,只能用符号“一>”,因此选项A错误。+P是指定元素(Fee)可以使用“.”运算,因此选项D正确。选项B,Fee.title代表数组title,同理选项C正确。答案为A选项。

62.D

63.C

64.C

65.A

66.D

67.A

68.A第一次循环返回2,第二次循环返回4,所以输出4,答案选择A)。

69.C根据赋值运算的类型转换规则,先将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选项。

70.C本题考查的是指向函数的指针。函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。

71.BC语言是一种结构化程序设计语言。结构化程序设计是以模块化设计为中心的,有三种基本结构:顺序、选择和循环结构。各模块相互独立,因而可将原来较为复杂的问题化简为一系列简单模块并充分利用现有模块搭建新系统,提高程序的重用性和可维护性。

72.A解析:在本题中k=n++,为后缀运算。根据其运算规则,首先n先加一,但n++表达式的值依然n原来的值,即k的值没有改变。选项A中先给k赋值为n,然后n再加1,k值没有变化,所以这个表达式和本题中表达式等价:选项B中先n加1,然后将n加1后的值赋给k,k变化了比原来的值大1,所以这个表达式和本题中表达式不等价:选项C中先计算表达式左边的表达式++=N的值,执行++n后,左边的表达式的值为n的值加1,然后将n+1后的值赋给k,所以这个表达式和本题中的表达式不等价;选项D中表达式展开为k=k+(n+1),k的值发生了变化,所以这个表达式和本题中的表达式不等价。所以4个选项中A正确。

73.B

74.B

75.A将a数组里元素赋值给b数组,直到数组a的末尾,所以选择A)。

76.Cp=&a表达式的含义是将变量a的地址赋给指针变量p;a=*p+b表达式的含义是将指针变量p所存地址对应的值与b的和赋给a。

77.B数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是一种在操作系统支持下的系统软件,因此本题答案为B)。

78.D解析:文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在3个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。注意:文件系统和数据库系统各自的特点,人工管理阶段及数据库系统三代的特点。

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.B

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

正确:while(*str)或while(*str!=ˊ\0ˊ)或while(*str!=0)

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

正确:str++

【解析】首先判断字母是否为小写字母,如果是小写字母则进行转换。

第一个标识下“while(*str!=ˊ@ˊ)”语句原意是str不指向字符串尾就进入下面的循环,所以对于指针判断不为结束符的语句应该是循环为真,所以应为“while(*str)”或“while(*str!=ˊ\Oˊ)”或“while(*str!=0)”。

第二个标识下“(*str)++;”是对字符内容加1,而原题是对字符位置加1,所以将其改为“str++;”。

82.voidfun(inta[][n]){ inti,j; for(i=0;i<=""p=""> for(j=0;j<=i;j++) a[i][j]=0; /*将数组下三角元素中的值全部置成0*/}对于N×N二维数组,表示其下三角元素,可以通过以下语句实现。for(i=0;i<n;i++)<p=""></n;i++)<>\tfor(j=0;j<=i;j++)外层循环用来控制矩阵的行下标,内层循环用来控制矩阵的列下标。注意列下标的取值范围,因为要表示下三角元素,所以j的范围是0~i。2021-2022年四川省遂宁市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()

A.每个元素都有一个直接前件和直接后件

B.线性表中至少要有一个元素

C.表中诸元素的排列顺序必须是由小到大或由大到小

D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件

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

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

3.有下列程序:程序执行后的输出结果是()。A.11B.43C.57D.53

4.以下程序段运行后x的值为()。inti,j,x=0;for(i=3;i>=1;i--)for(j=1;j<=i;j++)x=x+2A.8B.14C.10D.12

5.在循环双链表的p所指的结点之前插入s所指结点的操作是()。A.p->prior->prior

B.p->prior->prior

C.s->prior->next=s

D.s->prior->prior=s

6.已知数据表A中每个元素距其最终位置不远,为节省时间,应该采用的算法是()

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

7.以下不能将s所指字符串正确复制到t所指存储空间的是()。A.while(*t=*s){t++;s++;}

B.for(i=0;t[i]=s[i];i++);

C.do{*t++:*s++;}while(*s);

D.for(i=0,j=0;t[i++]=s[j++];);

8.fscanf函数的正确调用形式是()

A.fscanf(fp,格式字符串,输出表列);

B.fscanf(格式字符串,输出表列,fp);

C.fscanf(格式字符串,文件指针,输出表列),

D.fscanf(文件指针,格式字符串,输入表列);

9.在嵌套使用if语句时,C语言规定else总是A.和之前与其具有相同缩进位置的if配对

B.和之前与其最近的if配对

C.和之前与其最近的且不带else的if配对

D.和之前的第一个if配对

10.有以下程序:#include<stdio.h>#include<stdio.h>main(){charc[6];inti=0;for(;j<6;c[i]=getchar(),i++);for(i=0;i<6;i++)putchar(c[i]);printf("\n");}如果从键盘上输入:ab<回车>c<回车>def<回车>则输出结果为______。

A.abcdefB.abcdC.abcdD.abcdef

11.

12.

13.设变量已正确定义,则以下能正确计算f=n!的程序是()。A.f=0:for(i=1;i<=n;i++)f*=i:

B.F=1:for(i=1;i<2n;i++)f*=i:

C.f=1:for(i=n;i>1;i++)f*=i:

D.f=1;for(i=n;i>=2;i--)f*=i:

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.假设把整数关键码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.有以下程序,其中函数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++)ifstrcmp(p[i],p[j])>0{t=p[i]p[i]=p[j];p[j]=t;}}main(){char*p[5]=("abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[1]));}程序运行后的输出结果是______。A.2B.3C.6D.4

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

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

19.

20.若串S=,software,其子串的数目是()。

A.8B.37C.36D.9

二、2.填空题(20题)21.下列程序执行后输出的结果是【】。

main()

{intarr[10],i,k=0;

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

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

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

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

main()

{inti=010,j=10;

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

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

#include<stdio.h>

main()

{intp=30;

printf("%d\n",(p/3>0?p/10:p%3));

}

24.对于长度为n的顺序存储的线性表,当随机插入和删除—个元素时,需平均移动元素的个数为【】。

25.数据元素之间______的整体称为逻辑结构。

26.已知字符A的ACSII码值为65,以下语句的输出结果是______。

charch='B';

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

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

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

p=a;

28.阅读下面程序,则执行后的输出结果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

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

30.以下程序的输出结果是()。#include<stdio.h>main(){inti=10,j=0;do{j=j+i;i--;}while(i>5);printf("%d\n",j);}

31.【】是数据库设计的核心。

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

intmystrlen(char*str)

{inti;

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

return(i);}

33.数据库理论中,数据的独立性一般可分为物理独立性和______。

34.已知a=1,b=2,则表达式(a&B)&b||b的结果为()。

35.与结构化需求分析方法相对应的是【】方法。

36.软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于______中的一个阶段。

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

fun(intx)

{staticinta=3;

a+=x;

return(a);

}

main()

{intk=2,m=1,n;

n=fun(k);

n=fun(m);

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

}

38.有以下程序:

voidf(inta[],inti,intj)

{intt;

if(i<j)

{t=a[i];a[i]=a[j];a[j]=t;

f(a,i+1,j-1);

}

}

main()

{inti,aa[5]={1,2,3,4,5};

f(aa,0,4);

for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");

}

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

39.#define命令出现在程序中函数的外面,宏名的有效范围为______。

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

三、1.选择题(20题)41.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()

A.每个元素都有一个直接前件和直接后件

B.线性表中至少要有一个元素

C.表中诸元素的排列顺序必须是由小到大或由大到小

D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件

42.下列程序的输出结果是()main(){charch[2][5]={"6934","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0'&&p[i][j]<='9';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}

A.6385B.69825C.63825D.693825

43.有以下程序,其中%u表示按无符号整数输出:

main

{

unsignedintx=0xFFFF;/*x的初值为十六进制数*/

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

}

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

A.-1B.65535C.32767D.0xFFFF

44.若有下列说明语句int(*p)();则标识符p代表的是()

A.一个用于指向函数的指针变量,函数返回值的类型为int型

B.一个带回值类型为整型的函数名

C.一个用于指向整型数据的指针变量

D.一个带回值类型为指针类型的函数名

45.有以下程序inta=2;intf(intn){staticinta=3;intt=0;if(n%2){staticinta=4;t+=a++;}else{staticinta=5;t+=a++;}returnt+a++;}main(){ints=a,i;for(i=0;i<3;i++)s+=f(i)printf("%d\n",s);}程序运行后的输出结果是

A.26B.28C.29D.24

46.若已包括头文件<stdio.h>和<string.h>,运行下面程序的输出结果是()。chars1[10]="12345",s2[10]="089",s3[]="67";strcat(strcpy(s1,s2),s3);puts(s1);

A.8967B.894567C.89567D.89567

47.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是______。main(){unsignedinta=31,b=66;pfintf("%c\n,a|b);}

A.66B.98C.bD.B

48.有如下程序:#include<stdio.h>main(){inta=2,b=-1,c=2;if(a<b)if(b<0)c=0;elsec++;printf("%d\n",c);}该程序的输出结果是

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

49.下列判断正确的是()。

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";

50.有以下程序:main(){inti;for(i=1,i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}执行后的输出结果是()。

A.5B.24C.32D.40

51.设intx=1,y=1;表达式(!x||y--)的值是()。

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

52.下列程序的输出结果是______。inti=010,j=10;printf("%d,%d\n",++i,j--);

A.11,10B.9,10C.010,9D.10,9

53.若要打开A盘上user了目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是

A.fopen("A:\user\abc.txt",","r")

B.fopen("A:\\user\\abc.txt","r+")

C.fopen("A:\user\abc.txt","rb")

D.fopen("A:\\user\\abc.txt","w")

54.设intx=1,y=1;表达式(!x‖--y)的值是()。

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

55.下列描述中,正确的是()

A.线性链表是线性表的链式存储结构B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构

56.程序中对fun()函数有如下说明void*fun();此说明的含义是______。

A.fun函数无返回值

B.fun函数的返回值可以是任意的数据类型

C.fun函数的返回值是无值型的指针类型

D.指针fun指向一个函数,该函数无返回值

57.以下叙述中正确的是

A.局部变量说明为static存储类,其生存期将得到延长

B.全局变量说明为stoic存储类,其作用域将被扩大

C.任何存储类的变量在未赋初值时,其值都是不确定的

D.形参可以使用的存储类说明符与局部变量完全相同

58.若执行下述程序时,从键盘输入的数据是3和6,则程序的输出结果是()。#include<stdio.h>voidmain(){intx,y,z;scanf("%d%d",&X,&y);z=y+x;if(x<y)z=y+x;printf("%d",z);}

A.9B.3C.0D.有语法错误

59.有以下程序:#include<stdio.h>main(){printf("%d\n",NULL);}程序运行后的输出结果是()。

A.0B.1C.-1D.NULL没定义,出错

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

A.C程序必须由一个或一个以上的函数组成

B.函数调用可以作为一个独立的语句存在

C.若函数有返回值,必须通过咖语句返回

D.函数形参的值也可以传回给对应的实参

四、选择题(20题)61.设有以下程序段:

要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。

A.seanf(”%s”Ptrtitle);

B.scanf(”%s”,rec.title);

C.scanf(’’%s”,(*pu).title);

D.scanf(”%s”,ptr->title);

62.

63.

64.(49)按条件f对关系R进行选择,其关系代数表达式为()

A.R|X|R

B.R|X|Rf

C.бf(R)

D.∏f(R)

65.

66.有以下程序:

main()

{inta[3][3],*p,i;

p=&a[1][1];

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

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

}

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

A)3B)6

C)9D)2

67.

68.有以下程序

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

70.语句int(*ptr)的含义是()。

A.ptr是一个返回值为int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

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

A.c语言是一种结构化程序设计语言

B.使用三种基本结构构成的程序只能解决简单问题

C.结构化程序设计提倡模块化的设计方法

D.结构化程序由顺序、分支、循环三种基本结构组成

72.以下选项中,与k=n++完全等价的表达式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1

73.

74.(40)将E-R图转换到关系模式时,实体与联系都可以表示成()

A.属性

B.关系

C.键

D.域

75.下列函数的功能是()

76.有如下程序段

int*p,a=10,b=1;

p=&a;a=*p+b;

执行该程序段后,a的值为

A.12B.10C.11D.编译出错

77.数据库管理系统是()。

A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统

78.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

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.

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

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

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

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。此程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(),该函数的功能是将数组下三角元素中的值全部置成0。如a数组中的值为注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>#defineN5voidfun(inta[][N]){}voidmain(){ inta[N][N],i,j; system(“CLS”); printf(“****Thearray****\n”); for(i=0;i<n;i++)<p=""></n;i++)<>/*产生一个随机的5×5矩阵*/ { for(j=0;j<=""p=""> { a[i][j]=rand()%10; printf(“%4d”,a[i][j]); } printf(“\n”); } fun(a); printf(“TheResult\n”); for(i=0;i<n;i++)<p=""></n;i++)<> { for(j=0;j<=""p=""> printf(“%4d”,a[i][j]); printf(“\n”); }}

参考答案

1.D解析:线性表可以为空表,排除选项B。第一个元素没有直接前件,最后一个元素没有直接后件,故排除选项A。线性表的定义中,元素的排列没有规定大小顺序,故选项C也有误,只有D项是正确的。

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

3.D函数f是一个递归函数。当x>=2时,递归调用自身,返回值为x*f(x-l)+(x-l)*f(x-2);3x<2时,返回值为1。main函数中,调用函数f传入4,所以y的值是f(4)。f(4)等价于4*f(3)+3*f(2);f(3)等价于3*f(2)+2*f(1);f(2)等价于2*f(1)+1*f(0);f(0)、f(1)等价于1。综上:f(2)等于3,f(3)等于11,f(4)等于53。本题答案为D选项。

4.D

5.D

6.D

7.C解析:C项复制时没有复制结束串“\0”。

8.D

9.C解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合,与书写格式无关。所以选项C)为正确答案。

10.C解析:1.getchar():此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。

2.putchar():此函数的作用是向终端输出一个字符,也可以输出控制字符。本题在输入字符时,ab和c后面的回车符分别赋给了c[2]和c[4],所以,正确答案为C。

11.C

12.B

13.D由i"11的数字定义可知n!=n*(n-1)*(n-2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以1,2,3,…,n,最后计算得到f=n!一0,所以选项A不正确。在选项B中,f的初值为1,在for循环语句中,f依次乘以1,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为1,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项c不正确。在选项D中,f的初值为l,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!,所以选项D正确。

14.D

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

16.A

17.D解析:字符串比较函数“strcmp(char*s1,char*s2)”的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到到"\\0"为止。如果全部相同,则认为相等:若出现不相同的字符,则以第一个不相同的字符的比较结果为准。当s1<s2,返回值<0;当s1=s2时,返回值二0:当s1>s2时,返回值>0。故本题经过排序后,得到第二个字符串是“abbd”,所以输出结果是4。

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

19.B

20.B

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

22.8108,10解析:以0开头的是八进制数,输出时将其转换成十进制数。

23.33解析:(p/3>0?p/10:p%3)是一个条件表达式。题中p=30,p/3>0为真,所以p/10的结果3作为整个表达式的值。

24.n/2n/2解析:删除—个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2:所以总体平均移动元素个数为n/2。

25.逻辑关系逻辑关系

26.B66B66解析:printf函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中,printf('%c%d\\n',ch,ch)表示以字符格式和十进制整数格式输出ch,B的ACSII码值为66,即在计算机中B的十进制整数格式是66。所以,输出为B66。

27.6060解析:*(*(p+2)+1)相当于访问的是a[2][1]的值。*(p[2]+1)、p[2][1]以及(*(p+2))[1]表达的含义都是a[2][1]的值。

28.33解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf('%d\\n',z);语句。

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

30.4040解析:分析程序,初始时i=10,j=0,这时do循环中的“i=j+i”

31.数据模型数据模型

32.*(str+i)或str[i]*(str+i)或str[i]解析:str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+i)来访问字符串中的第i个元素,判断是否是结束标志,如果不是,i=i+1,继续取下一个元素进行判断,直到*(str+i)的值为'\\0'为止,也可以用下标的方式引用字符,如*(str+i)相当于str[i]。

33.

温馨提示

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

评论

0/150

提交评论