2022年河南省信阳市全国计算机等级考试C语言程序设计_第1页
2022年河南省信阳市全国计算机等级考试C语言程序设计_第2页
2022年河南省信阳市全国计算机等级考试C语言程序设计_第3页
2022年河南省信阳市全国计算机等级考试C语言程序设计_第4页
2022年河南省信阳市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

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

文档简介

2022年河南省信阳市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.递归式的先序遍历一个n节点,深度为d的二叉树,则需要栈空间的大小为()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

2.静态链表中指针表示的是()。

A.内存地址B.数组下标C.下一元素地址D.左、右孩子地址

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

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

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

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

D.以上3种说法都不对

4.对n个关键字的序列进行快速排序,平均情况下的空间复杂度为_______

A.O(1)B.O(logn)C.O(n)D.O(nlogn)

5.以下叙述中正确的是

A.语句inta[4][3]={{1,2},{4,5}};是错误的初始化形式

B.语句inta[4][3]={1,2,4,5};是错误的初始化形式

C.语句inta[][3]={1,2,4,5};是错误的初始化形式

D.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵

6.

7.在一个无向图中,所有顶点的度数之和等于所有边数的()倍。

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

8.A.A.75310246B.01234567C.76310462D.13570246

9.以下程序拟实现计算sum=1+1/2+1/3+…+1/50。#include<stdio.h>main(){inti;doublesum;sum=1.0;i=1;do{i++-;sum+=1/i;}while(i<50);printf(“sum=%lf\n”,sum);}程序运行后,不能得到正确结果,出现问题的语句是()。

A.sum+=1/i;B.while(i<50);C.sum=1.0D.i++;

10.以下程序的运行结果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}

A.Y=3B.存在语法错误C.Y=7D.Y=0

11.有以下程序(strcat函数用于连接两个字符串):#include<stdio.h>#include<string.h>main(){chara[20]=“ABCD\0EFG\0”,b[]=“UK”;strcat(a,b);printf(“%s\n”,a);}程序的运行结果是()。

A.UKB.ABCDE\0FG\0UKC.ABCDUKD.EFGUK

12.语句int(*ptr)的含义是()。A.A.ptr是一个返回值为int的函数

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

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

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

13.设无向图G中的边的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},则从顶点a出发进行深度优先遍历可以得到的一种顶点序列为()。

A.aedfcbB.acfebdC.aebcfdD.aedfbc

14.

15.

16.有以下函数:intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下关于aaa函数功能叙述正确的是()。

A.将串s复制到串tB.比较两个串的大小C.求字符串s的长度D.求字符串s所占字节数

17.下列叙述中错误的是()。A.程序可以由多个程序文件组成

B.一个C语言程序只能实现一种算法

C.程序可以由一个或多个函数组成

D.一个C函数可以单独作为一一个c程序文件存在

18.已有定义:chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是()。

A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.以述说法都不对

19.判断一个循环队列cq(最多元素为m)为满的条件是()。

A.cq->rear-cq-front=m;

B.(cq->rear+1)%m=cq->front;

C.cq->front=cq->rear;

D.cq->rear=m-1;

20.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)执行后的输出结果是()。A.5,5B.5,11C.11,11D.11,5

二、2.填空题(20题)21.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。

22.以下函数的功能是求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。请按题意,完成填空。

试题程序:

#include<conio.h>

#include<stdio.h>

voidfun(intx,intpp[],int*n)

{inti,j=0;

for(i=1;i<x;i+=2)

if(x%i==0)pp[j++]=i;

【】;

}

main()

{intx,aa[1000],n,i;

clrscr();

printf("\nPleasenteranintegernumber:\n");scanf("%d",&x);

fun(x,aa,&n);

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

printf("%d",aa[i]);

printf("\n");

}

23.软件结构是以【】为基础而组成的一种控制层次结构。

24.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

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

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

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

}

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

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

27.下列语句的输出结果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

28.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n-->1)

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

if(str[i]<str[i+l])

{temp=【】;

str[i]=str[i+l];

【】=temp;

}

printf(【】);

}

29.根据以下if语句写出与其功能相同的switch语句(x的值在0~100之间)。

if语句:

if(x<60)m=1;

elseif(x<70)m=2;

elseif(x<80)m=3;

elseif(x<90)m=4;

elseif(x<100)m=5;

switch语句:

switch(【】)

{

【】m=1;break;

case6:m=2;break;

case7:m=3;break;

case8:m=4;break;

【】m=5;

}

30.执行以下程序后sum的值是【】。

main()

{

inti,sum;

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

sum+=i;

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

}

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

32.数据库系统中实现各种数据管理功能的核心软件是______。

33.在进行软件结构设计时,应遵循的最主要原理是【】。

34.注释说明了程序的功能,它分为【】注释和功能性注释。

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

36.软件工程的出现是由于【】。

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

38.数据库的逻辑模型设计阶段的任务是将______转换成关系模式。

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

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

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

三、1.选择题(20题)41.有以下程序:#include<stdio.h>main(){eharstr[][10]={"China","Beijing"},*p=str[o];printf("%s\n",p+10);}程序运行后的输出结果是()。

A.ChinaB.BeijingC.ngD.ing

42.下列程序的输出结果是#include"stdio.h"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}

A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5

43.下面叙述正确的是______。A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上三种描述都不对

44.下面宏定义正确的是()

A.#defineSa*b

B.#definePI3.14;

C.#definemax(a,b)((a)>(b)?(a);(b))

D.#defines(x)(x)*(x);

45.设有语句:charstr1[]="string",str2[8],*ste3,*str4="string";,则下列不是对库函数strcpy的正确调用的是______。

A.strcpy(str1,"HELLOI");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLOY");

D.strcpy(str4,"HELLO4");

46.若x是整型变量,pb是基本类型为整型的指针变量,则正确的赋值语句是()

A.pb=&x;B.pb=x;C.*pb=&x;D.*pb=*x;

47.已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出比中的值为大写字母的表达式是

A.kk>='A'&&kk<='Z'

B.!(kk>='A'||kk<='Z')

C.(kk+32)>='a'&&(kk+32)<='z'

D.isalpha(kk)&&(kk<91)

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

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

49.有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(j=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序运行后的输出结果是

A.12B.123C.234D.345

50.设有以下程序段:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0'),*p;p=&a[0];下面选项中,其值为6的表达式为______。

A.P++->nB.p->n++C.(*p).n++D.++p->n

51.若有以下的说明,对初值中整数2的正确引用方式是

staticstruct

{charch;

inti;

doublex;

}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};

A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i

52.若有定义语句:inta[2][3],*p[3],则以下语句中正确的是A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;

53.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第1列开始)123<CR>45678<CR>则输出结果是()。

A.1267B.1256C.1278D.1245

54.有以下程序main(){inta[3][2]={0},(*ptr)[2],i,i;for(i=0;i<2;i++){ptr=a+i;scanf("%d",ptr);ptr+++;}for(i=0;i<3;i++){foil(j=0;j<2;j++)printf("%2d",a[i][j]);printf("\n");}若运行时输入:123<回车>,则输出结果为

A.产生错误信息B.102000C.123000D.102030

55.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A.函数调用可以作为独立的语句存在

B.函数调用可以作为一个函数的实参

C.函数调用可以出现在表达式中

D.函数调用可以作为一个函数的形参

56.在执行下述程序时,若从键盘输入6和8,则结果为

main()

{inta,b,s;

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

S=a

if(a<b)

s=b;

S*=s;

printf("%d",s);}

A.36B.64C.48D.以上都不对

57.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

58.当执行下面的程序时,如果输入ABC,则输出的结果是()。#include<Stdlib.h>main(){charss[]="1,2,3,4,5";gets(ss);strcat(ss,"6789");printf("%s\n",ss);}

A.ABC6789B.ABDC67C.123ABC678D.ABC456789

59.请读程序段:charstr[]="ABCD",*p=str;printf("%d\n",*(p+4));程序段的输出结果是______。

A.68B.0C.字符'D'的地址D.不确定的值

60.有以下程序:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序执行后输出结果是()。

A.x=4B.x=8C.x=6D.x=12

四、选择题(20题)61.若有定义:“int*P,x=0,*p,p=&x;”,则语句“printf("%d\n",*p);”的输出结果是()。

A.随机值B.0C.x的地址D.P的地址

62.

设有定义的语句:“charc1=92,c2=92;”,则以下表达式中的值为零的是()。

A.c1^c2B.c1&c2C.~c2D.c1E.c2

63.

64.

65.下列关于线性链表的叙述中,正确的是()。

A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

C.进行插入与删除时,不需要移动表中的元素

D.以上说法均不正确

66.有以下程序

67.

68.有下列程序:

main()

{inti,j,x=0;

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

{x++;

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

{if(j%2)continue;

x++:

}

x++:

}

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

}

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

A.x=4B.x=8C.x=6D.x=12

69.

有以下程序:

#include<strintg.h>

main

{charp[20]={a,b,c,d),q[]="abc",r[]="

abcde";

strcpy(p+strlen(q),r);strcat(p,q);

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

}

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

A.209B.99C.2011D.1111

70.数字字符0的ASCIl值为48,若有以下程序:

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

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

71.

72.以下关于指针概念不正确的是()。

A.指针变量可以用整数赋值,但不可以用浮点数赋值

B.一个变量的地址称为该变量的指针,一个指针变量只能指向同一类型的变量

C.只有同一类型的变量地址才能放到指向该类型变量的指针变量之中

D.只能将地址赋给指针变量

73.

74.有以下程序程序运行后的输出结果是()。A.24B.28C.32D.36

75.

76.下列4个关于C语言的结论中错误的是()。

A.可以用do—while语句实现的循环一定可以用while语句实现

B.可以用for语句实现的循环一定可以用while语句实现

C.可以用while语句实现的循环一定可以用for语句实现

D.do-while语句与while语句的区别仅是关键字“while”出现的位置不同

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

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

B.实型变量中允许存放整型数

C.若a和b类型相同,在执行赋值a=b后,b中的值将放入a中,但b中的值不变

D.在C程序中,求余算符“%”两边的类型相同时才能进行运算

78.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。

A.学生成绩管理系统B.C语言编译程序C.UNIX操作系统D.数据库管理系统

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

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

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

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

D.细循环语句固定执行8次

80.下列关于指针变量赋空值的说法错误的是

A.当赋空值的时候,变量指向地址为0的存储单元B.赋值语句可以表达为变量名=’\0’;

C.赋值语句可以表达为变量名=0;D.一个指针变量可以被赋空值

五、程序改错题(1题)81.下列给定程序的功能是:读入一个整数n(2<=n<=5000),打印它的所有为素数的因子。例如,若输入整数1234,则应输出:2,617。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

//****found****

Prime(intm);

{

intj,P;

p=1;

//****found****

for(j=2;j<m;j++)

if!(m%j)

{

p=0;

break;

}

return(p);inti,n;

printf("\npleaseenteranintegernumberbetween2

and5000:");

scanf("%d",&n);

printf("\n\nTheprimefactor(s)of%dis(are):",n):

for(i=2;i<n;i4+)

if((!(n%i))&&(Prime(i)))

printf("%4d,",i);

printf("\n");

}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,规定输入的字符串中只包含字母和*号。请编写函数fun(),其功能是使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做任何操作,字符串中间和前面的*号不删除。例如,字符串中的内容为“****A*BC*DEF*G*******”,若n的值为4,删除后,字符串中的内容应为“****A*BC*DEF*G****”;若n的值为7,则字符串中的内容仍为“****A*BC*DEF*G*******”。n的值在主函数中输入。编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>voidfun(char*a,intn){}main(){ chars[81];intn; printf("Enterastring:\n”); gets(s); printf(“Entern:”); scanf(“%d”,&n); fun(s,n); printf(“Thestringafterdeleted:\n”); puts(s);}

参考答案

1.D

2.C

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

4.D

5.D二维数组在初始化时,可以省第1维,但是不可以省第2维。可以为部分数组元素初始化。A选项、B选项和C选项内的初始化都没有错误。因此D选项正确。

6.B

7.A

8.A本题的考点是C语言的数组及其排序。本题的程序中分为2个循环体,第一个循环体将数组中1,3,5,7,2,4,6,0的前4个元素从大到小排序,这个循环体结束后数组中的值为7,5,3,1,2,4,6,0。第二个循环体将数组中7,5,3,1,2,4,6,0从第5个开始的4个元素从小到大排序,这个循环体结束后数组中的值为7,5,3,1,0,2,4,6。所以正确答案是选项A。

9.A选项A中,“sum+=1/i;”中的i为整型,因此“1/i”是整型类型,当“1/i”有小数时。会被截断。因此“1/i”结果始终为0,导致结果出错。应该改为“sum+=1.0/i”。故本题答案为A选项。

10.C解析:宏替换不像函数调用要进行参数值的计算、传递等,而只是简单按照原格式进行字符串的替换。注意:宏定义的命令格式。

11.C字符数组a中包含两个‘\\0’。遇到第1个‘\\0’时就表示字符串a结束。字符串处理函数strcat(字符数组a,字符数组b),功能是连接两个字符串,把字符串b连接到字符串a的后面,结果放在字符数组a中。连接时将字符串a后的‘\\0’取消,只在新串最后保留一个‘\\0’。本题相当于将“ABCD”和“IJK”连接。故本题答案为C选项。

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

13.B

14.B

15.C

16.Caaa函数中,首先定义了一个字符指针t指向形参s,然后通过一个while循环让指针t不断递增,直到t指向字符串结束标识处。当t指向结束标识处时,由于后缀“运算符,它还会被再递增1,因此“t--”语句让它回到结束标识处。最后返回t-s,s还是指向字符串第1个字符处,而t指向了字符串结尾,故返回值为字符串的长度。故本题答案为C选项。

17.B[解析]在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B)错误。

18.C解析:对字符型一维数组在定义时初始化,既可以使用初始化列表,也可以使用字符串常量。不过由于字符串常量会自动在结尾添加\'\\0\',字符做结束标志,所以用字符串常量的初始化列表项个数是字符串的长度加1。因此题目中的chara[]='xyz';等价于chara[]={\'x\',\'y\',\'z\',\'\\0\');,所以a数组长度大于b数组长度,应该选C。

19.B

20.B子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第l次调用主函数后,局部静态变量m和i的值为5和3,第l次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。

21.循环链表循环链表解析:在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。

22.*n=j*n=j解析:本题题干信息是能整除x且不是偶数的所有整数之和。循环语句中i从1开始且每次增2,所以i始终是奇数,*n=j;语句是记录能够符合题意的各个整数的各数。

23.模块模块

24.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下—个字符,则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+1]。最终打印输出得到的字符串str,所以第三空应填:'%s',str。

25.8181解析:将S(i+j)展开来有:S(i+j)=S(6+8)=4×6+8×6+8+1=81。

26.无定值无定值解析:for(i=1;i<7;i++)决定了循环次数为6次,每次执行的操作是sum+=i,但由于sum没有初始化,并不知道sum的初值是多少,所以结果无定值。

27.aaaaAAAAAaaaaAAAAA解析:函数strcat(sp,'AAAAA')的作用是将字符中“AAAAA”连接到字符串sp的末尾,并自动覆盖字符数组sp末尾的\'\\0\'。

28.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实过程是将相邻两个字符进行比较,如果当前字符小于下一个字符,则通过中间变量temp将字符两两交换,所以第—空应填:str[i],第二空应填str[i+1]最终打印输出得到的字符串str,所以第三空应填'%s',str。

29.x/10case0:case1:case2:case3:case4:case5:case9:x/10\r\ncase0:case1:case2:case3:case4:case5:\r\ncase9:

30.1515解析:程序的功能是求1、2、3、4、5的和即15。

31.252137252137解析:本题中先定义了整型变量a、b和c,然后分别给赋值a为25,b为八进制的025,c为十六进制0x25。然后调用pruntf()函数将a、b和c分别用十进制输出,且中间用空格隔开,八进制025转换为十进制的值为21,十六进制的0x25转换为十进制的值为37,故最后的输出结果为252137。

32.数据库管理系统数据库管理系统解析:数据库管理系统是数据库的管理机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。

33.模块独立原理模块独立原理

34.序言性序言性解析:注释一般分为序言性注释和功能性注释。

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

36.软件危机的出现软件危机的出现

37.1212解析:本题考查逗号表达式的运算规则。逗号表达式的基本格式为:“表达式1,表达式2,…”,其整个表达式的结果取最后一个子表达式的值。本题中首先计算逗号表达式中的第1个表达式a=2*3=6,然后计算第2个表达式a*2,这时整个表达式的值为12,但要注意,因为第2个表达式并没有给a赋值,因此a的值不变;接下来执行最后一个表达式a+6=12,所以整个表达式最后的值为12。

38.E-R图E-R图解析:数据库逻辑设计的任务是将概念模型进一步转化成相应的数据模型。而E-R图是主要的概念模型,因此数据库的逻辑设计的主要工作是将E-R图转换成关系模式。

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

40.99解析:本题要输出的结果是字符串'IBM\\n012\\1\\\\'的长度,'IBM'是3个字符,\'\\n\'是1个字符,'012'又是3个字符,最后的\'\\1\'和\'\\\\\'都是1个字符。所以最终字符串的长度应该是3+1+3+1+1=9。故本题应该填9。

41.BC语言中二维数组是按行存放的,即在内存中先顺序存放第一行的元素,再存放第二行的元素。此题二维数组str[][10]第1行的前5个元素为'C','h','i','n','a',第6个元素为'\\0',后4个元素为空字符。紧接着内存单元存放数组第2行的元素,即从str[1][0]到str[1][9]分别为'B','e','i','j','i','n','g',第8个元素为'\\0',后两个元素为空字符。执行*p=str[0]后,指针p就指向了二维数组str的首地址,p+10指向从首地址依次向后的第11个存储单元即字符,B,的地址,所以输出Beijing,故答案为B。

42.B解析:continue语句的作用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。当能被2整除时,a就会增1,之后执行continue语句,直接执行到for循环体的结尾,进行i++,判断循环条件。

43.C解析:算法的执行效率与数据的逻辑结构和存储结构都有很紧密的关系。算法的空间复杂度是指执行该算法需要的内存空间,并非算法程序中指令的条数。算法一般应该具有以下4个特征:可行性、确定性、有穷性和拥有足够情报。其中,有穷性是指算法必须能在执行有限个步骤之后终止,否则可能失去实际意义。

44.C

45.C

46.A

47.B解析:C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在't',和'z'之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。

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

49.D解析:本题考查二维数组和指针,首先使指针p指向二维数组的首地址,通过第一个for循环对一维数组p赋值,其实也就是给二维数组a赋值,a[0][0]~a[2][2]分别赋以0~8,所以a[1][0],a[1][1],a[1][2]分别为3,4,5。

50.D

51.B解析:考查结构体数组对结构体成员的引用。结构体数组中对结构体成员的引用要先引用到数组元素,然后像对待普通的结构体变量一样来对待结构体数组元素。

52.C解析:选项A中,p为数组名,其值是不能被改变的,故非法;选项B中,p[0]的类型是int*,而a是二维数组名(类型为int[][3]),两者无法赋值,故非法:选项C中,p[0]为int型指针,&a[1][2]是int型变量的地址,可以合法赋值;选项D中,p[1]是int型指针,而&a是二维数组的地址(类型为int(*)[2][3]),两者无法赋值,故非法。所以本题应该选择C。

53.D解析:当用scanf函数从键盘输入数据时,每行数据的末尾按下回车键(Enter键)之前,可以任意修改。但按下回车键putchar(c1)(Enter键)之后,seanf函数即接受了这一行数据,不能再回去修改。所以本题中,当输入123<CR>时,变量c1、c2、c3的值分别为1、2、3,当输入45678<CR>时,变量c5、c6的值4和5。所以用输出函数putchar(c1)输出1,putchar(c2)输出2,printf('%c%c\\n',c5,c6)输出45。所以选项D)为正确答案。

54.D解析:本题主要考查的是scanf()函数的输入原理。scanf()函数执行时,先从键盘缓冲区中读取用户输入的数据,若缓冲区为空或输入数据少于所需数据,则暂停程序等待用户的输入,直到用户敲入回车,scanf()将继续到键盘缓冲区中读取输入,如此反复直到满足scanf()函数所需数据,程序才继续执行下面的语句,而scanf()没有取完的数据仍然会保存在键盘缓冲区内,到程序结束时还没取完就会被释放掉,不会影响其他的程序运行。另外,scanf()函数将取到的数据匹配给第2个及其后面的指针参数所指的内存地址中去,而不检查该参数的类型是否匹配。所以在本题中考生不要被指针ptr的定义所迷惑,它所做的只不过是临时保存一下a+i的值,然后送到scanf()函数中去。题目首先定义了一个二维数组a[3][2]并用{0}初始化之,因为当所赋初值少于所定义数组的元素个数时,将自动给后面的元素朴以初值0,所以数组a[3][2]中所有的元素都被初始化为0了。在主程序的第一个for循环体中有三条语句,该循环体会被执行两次,每次执行时i的值分别为0和1。第1条语句让ptr的值分别为a+0(即元素a[0])[0])的地址)和a+1(即元素a[1][0]的地址);第2条语句是一条输入语句,它每次接受一个十进制整数存入到ptr所指的内存地址中,题目要求输入的数据为“123<回车>”,所以两次scanf()函数的调用使a[0][0]和a[1][0]分别被赋为1和2。笫3条语句让ptr自增1在这里没有起到任何作用,因为每次进入循环体ptr都会被重新赋值。最后,程序用一个两重循环按行列输出二维数组a中的所有元素。所以,选项B符合题意。

55.D解析:本题考查函数的调用。在有参函数调用中,是将主调函数的实参值传给被调函数的形参。按函数在程序中出现的位置来分,有以下三种函数调用形式:

①函数调用作为一条语句。例如:fun();这时不要求函数带回值,只要求函数完成一定的操作。故选项A)正确。

②函数出现在表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如:c=5*max(a,b);函数max是表达式的一部分,将其值乘以5后赋给c。故选项C)正确。

③函数调用作为一个函数的实参,例如:m=max(a,max(b,c));其中max(b,c)是一次函数调用,它的值作为max另一次调用的实参。故选项B)正确。

函数调用不可作为一个函数的形参,因为函数调用参数的数据传递是单向传递,即实参传给形参,不能由形参传给实参。故选项D)错误。

56.B解析:本题中a的值为6,b的值为8,最后s的值为8,s*=s等价于s=s*s。

57.B解析:关系数据库逻辑设计的主要工作是将\ue008E-R\ue009图转换成指定RDBMS中的关系模式。首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。

58.A解析:本题程序一开始定义了一个字符数组ss,并用一个字符串常量初始化之。然后使用gets()函数从键盘缓冲区读入一个字符串'ABC',此时gets()将改变数组的前4个元素为{\'A\',\'B\',\'C\',\'\\0\'}。接下来的strcat()函数将一个字符串连接到字符串ss之后,因为ss[3]被gets()设置为\'\\0\'(字符串结束标志),故strcat()从ss[3]开始将'6789'依次写入ss[3]、ss[4]、ss[5]、ss[6],并将一个\'\\0\'写入ss[7]。所以输出结果是ABC6789,故应该选择A。

59.B解析:在对字符数组赋字符串值时,系统会自动在字符串的末尾加上一个字符串结束标志“\\0”,故指向字符数组的指针p的*(p+4)的值为“\\0”。由于“\\0”的编码值就是0,所以本题输出为0。

60.B解析:外循环的循环变量i从0递增到1会循环2次,内循环的循环变量j从0递增到3会循环4次。但是内循环中有一条if语句,每当j%2为真,即j为奇数时会跳过下面的x++;语句,所以4次内循环只有2次执行到x++;语句,再加上外循环中包含的2条x++语句,所以每次外循环会使x自增4次,2次外循环下来x的值为8。故应该选择B。

61.A*P的意思是取其指向地址的内容,P是指向x地址的指针,因此输出*p也就是输出x的内容,即0,故选择B选项。

62.A

\n当值相同时按位异或,则为0,按位或与按位与时仍不变,负数也为非0。

\n

63.B

64.C

65.CC【解析】一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需改变结点的指针域即可。

66.A第一个嵌套的for循环把二维数组按列从小到大排序,最后输出对角线上的元素,答案选择A)。

67.A

68.B\n在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量J的值为奇数时,变量X的值才自加1,所以在内层for循环执行过程中,变量X的值自加l两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。

\n

69.C

\n在主函数中,首先定义一个包含20个元素的字符数组P,执行语句“strcpy(P+strlen(q),r);”,数组P的内容变为{a,b,C,a,b,c,d,e,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0),执行语句“strcat(P,q);”,数组P的内容变为,a,b,c,a,b,C,d,P,a,b,c,\0,\0,\0,\0,\0,\0,\0,\0),函数sizeof(P)是求数组P的大小,返回20,而函数strlen(p)是计算以P所指起始地址的字符串的长度,这一长度不包括串尾的结束标志0,所以函数返回11。

\n

70.C

先返回后自增,所以执行完该语句后,输出结果是2,变量b的

71.A

72.A指针是用来指示一个内存地址的变量,因此只能将地址赋给指针变量,而不能是整数或浮点数。

73.C

74.A第一次循环返回l2,第二次循环返回l2,累加结果为24。

75.C

76.D本题考查对各个循环语句的理解。①do-while语句、for语句、while语句所实现的循环可以相互替代;②do-while语句至少执行一次,而while是符合条件执行,不符合不执行。

77.D选项A,在赋值表达式中,赋值号的左边只能是变量或者是代表某个存储单元的表达式,不能是任意表达式,右边也不得出现表达式;选项8中,整型变量中只能存放整型数,但实型变量中能存放实型数,也能存放整型数;选项C,表达式a=b的意思是把变量b的值赋给变量a,从而覆盖a中原来值;选项D,要求取余运算符"%"两边的类型均为整型。

78.A

79.Acase常量表达式只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从该case子句执行下去,不再进行判断,直到碰到bleak或函数结束为止。简单地说,break是结束整个循环体,而continue是结束单次循环。B)选项中当产生的随机数n为4时要执行打印操作。C)选项中当产生的随机数为1和2时分别执行case3与case4后面语句的内容。由于存在break语句,因此for循环不是固定执行8次,执行次数与产生的随机数n有关系。故本题答案为A)。

80.A本题考查的是对指针变量赋空值。在C语言中用NULL给指针赋空值,如p=NULL。当指针值为NULL时,指针不指向任何有效数据。由于NULL与整数0相对应,所以有下面三条语句等价:

p=NULL;p=0;p=’\\0’。

81.\n\t(1)错误:Prime(intm);

\n正确:Prime(intm)

\n(2)错误:if(!(m%j)

\n正确:if(!(m%j))

\n【解析】(1)第一个标识下面的“Prime(intm);”在程序中显然是一个函数,因此应将后面的分号去掉。

\n(2)第二个标识下面的for语句最简单的应用形式为:for(循环变量赋初值;循环条件;循环变量增值)语句。显然if语句后面缺少括号,因此,“if!(m%j)”改为“if(!(m%i))”。

\n本题主要考查标点符号、运算符、基本定义。\n

82.voidfun(char*a,intn){ inti=0,k=0; char*p,*t; p=t=a;/*将指针移动到字符串末尾*/ while(*t) t++; t--;/*从后往前如果是*则使k自增1,找到最后一个*所在的位置,并记录*的个数*/ while(*t==‘*’)/*指针t指向前一个,同时标量k自增1*/ {k++;t--;}/*如果最后*的个数大于允许的个数*/ if(k>n)/*循环次数不大于前面的字符与最大允许*的个数之和*/ { while(*p&&p<t+n+1)<p=""></t+n+1)<>/*把字符保存到数组a中*/ {a[i]=*p; i++;p++; } a[i]=‘\0’; }}字符串中尾部*号不能多于n个,多余的要删除。首先需要通过while循环统计字符串尾部*号,然后通过if条件语句完成尾部*号数和n的比较,若尾部*号数多于n个,则需要把n个*号和其余字符重新保存。2022年河南省信阳市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.递归式的先序遍历一个n节点,深度为d的二叉树,则需要栈空间的大小为()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

2.静态链表中指针表示的是()。

A.内存地址B.数组下标C.下一元素地址D.左、右孩子地址

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

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

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

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

D.以上3种说法都不对

4.对n个关键字的序列进行快速排序,平均情况下的空间复杂度为_______

A.O(1)B.O(logn)C.O(n)D.O(nlogn)

5.以下叙述中正确的是

A.语句inta[4][3]={{1,2},{4,5}};是错误的初始化形式

B.语句inta[4][3]={1,2,4,5};是错误的初始化形式

C.语句inta[][3]={1,2,4,5};是错误的初始化形式

D.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵

6.

7.在一个无向图中,所有顶点的度数之和等于所有边数的()倍。

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

8.A.A.75310246B.01234567C.76310462D.13570246

9.以下程序拟实现计算sum=1+1/2+1/3+…+1/50。#include<stdio.h>main(){inti;doublesum;sum=1.0;i=1;do{i++-;sum+=1/i;}while(i<50);printf(“sum=%lf\n”,sum);}程序运行后,不能得到正确结果,出现问题的语句是()。

A.sum+=1/i;B.while(i<50);C.sum=1.0D.i++;

10.以下程序的运行结果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}

A.Y=3B.存在语法错误C.Y=7D.Y=0

11.有以下程序(strcat函数用于连接两个字符串):#include<stdio.h>#include<string.h>main(){chara[20]=“ABCD\0EFG\0”,b[]=“UK”;strcat(a,b);printf(“%s\n”,a);}程序的运行结果是()。

A.UKB.ABCDE\0FG\0UKC.ABCDUKD.EFGUK

12.语句int(*ptr)的含义是()。A.A.ptr是一个返回值为int的函数

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

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

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

13.设无向图G中的边的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},则从顶点a出发进行深度优先遍历可以得到的一种顶点序列为()。

A.aedfcbB.acfebdC.aebcfdD.aedfbc

14.

15.

16.有以下函数:intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下关于aaa函数功能叙述正确的是()。

A.将串s复制到串tB.比较两个串的大小C.求字符串s的长度D.求字符串s所占字节数

17.下列叙述中错误的是()。A.程序可以由多个程序文件组成

B.一个C语言程序只能实现一种算法

C.程序可以由一个或多个函数组成

D.一个C函数可以单独作为一一个c程序文件存在

18.已有定义:chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是()。

A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.以述说法都不对

19.判断一个循环队列cq(最多元素为m)为满的条件是()。

A.cq->rear-cq-front=m;

B.(cq->rear+1)%m=cq->front;

C.cq->front=cq->rear;

D.cq->rear=m-1;

20.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)执行后的输出结果是()。A.5,5B.5,11C.11,11D.11,5

二、2.填空题(20题)21.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。

22.以下函数的功能是求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。请按题意,完成填空。

试题程序:

#include<conio.h>

#include<stdio.h>

voidfun(intx,intpp[],int*n)

{inti,j=0;

for(i=1;i<x;i+=2)

if(x%i==0)pp[j++]=i;

【】;

}

main()

{intx,aa[1000],n,i;

clrscr();

printf("\nPleasenteranintegernumber:\n");scanf("%d",&x);

fun(x,aa,&n);

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

printf("%d",aa[i]);

printf("\n");

}

23.软件结构是以【】为基础而组成的一种控制层次结构。

24.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

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

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

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

}

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

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

27.下列语句的输出结果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

28.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n-->1)

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

if(str[i]<str[i+l])

{temp=【】;

str[i]=str[i+l];

【】=temp;

}

printf(【】);

}

29.根据以下if语句写出与其功能相同的switch语句(x的值在0~100之间)。

if语句:

if(x<60)m=1;

elseif(x<70)m=2;

elseif(x<80)m=3;

elseif(x<90)m=4;

elseif(x<100)m=5;

switch语句:

switch(【】)

{

【】m=1;break;

case6:m=2;break;

case7:m=3;break;

case8:m=4;break;

【】m=5;

}

30.执行以下程序后sum的值是【】。

main()

{

inti,sum;

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

sum+=i;

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

}

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

32.数据库系统中实现各种数据管理功能的核心软件是______。

33.在进行软件结构设计时,应遵循的最主要原理是【】。

34.注释说明了程序的功能,它分为【】注释和功能性注释。

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

36.软件工程的出现是由于【】。

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

38.数据库的逻辑模型设计阶段的任务是将______转换成关系模式。

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

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

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

三、1.选择题(20题)41.有以下程序:#include<stdio.h>main(){eharstr[][10]={"China","Beijing"},*p=str[o];printf("%s\n",p+10);}程序运行后的输出结果是()。

A.ChinaB.BeijingC.ngD.ing

42.下列程序的输出结果是#include"stdio.h"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}

A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5

43.下面叙述正确的是______。A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上三种描述都不对

44.下面宏定义正确的是()

A.#defineSa*b

B.#definePI3.14;

C.#definemax(a,b)((a)>(b)?(a);(b))

D.#defines(x)(x)*(x);

45.设有语句:charstr1[]="string",str2[8],*ste3,*str4="string";,则下列不是对库函数strcpy的正确调用的是______。

A.strcpy(str1,"HELLOI");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLOY");

D.strcpy(str4,"HELLO4");

46.若x是整型变量,pb是基本类型为整型的指针变量,则正确的赋值语句是()

A.pb=&x;B.pb=x;C.*pb=&x;D.*pb=*x;

47.已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出比中的值为大写字母的表达式是

A.kk>='A'&&kk<='Z'

B.!(kk>='A'||kk<='Z')

C.(kk+32)>='a'&&(kk+32)<='z'

D.isalpha(kk)&&(kk<91)

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

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

49.有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(j=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序运行后的输出结果是

A.12B.123C.234D.345

50.设有以下程序段:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0'),*p;p=&a[0];下面选项中,其值为6的表达式为______。

A.P++->nB.p->n++C.(*p).n++D.++p->n

51.若有以下的说明,对初值中整数2的正确引用方式是

staticstruct

{charch;

inti;

doublex;

}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};

A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i

52.若有定义语句:inta[2][3],*p[3],则以下语句中正确的是A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;

53.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第1列开始)123<CR>45678<CR>则输出结果是()。

A.1267B.1256C.1278D.1245

54.有以下程序main(){inta[3][2]={0},(*ptr)[2],i,i;for(i=0;i<2;i++){ptr=a+i;scanf("%d",ptr);ptr+++;}for(i=0;i<3;i++){foil(j=0;j<2;j++)printf("%2d",a[i][j]);printf("\n");}若运行时输入:123<回车>,则输出结果为

A.产生错误信息B.102000C.123000D.102030

55.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A.函数调用可以作为独立的语句存在

B.函数调用可以作为一个函数的实参

C.函数调用可以出现在表达式中

D.函数调用可以作为一个函数的形参

56.在执行下述程序时,若从键盘输入6和8,则结果为

main()

{inta,b,s;

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

S=a

if(a<b)

s=b;

S*=s;

printf("%d",s);}

A.36B.64C.48D.以上都不对

57.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

58.当执行下面的程序时,如果输入ABC,则输出的结果是()。#include<Stdlib.h>main(){charss[]="1,2,3,4,5";gets(ss);strcat(ss,"6789");printf("%s\n",ss);}

A.ABC6789B.ABDC67C.123ABC678D.ABC456789

59.请读程序段:charstr[]="ABCD",*p=str;printf("%d\n",*(p+4));程序段的输出结果是______。

A.68B.0C.字符'D'的地址D.不确定的值

60.有以下程序:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序执行后输出结果是()。

A.x=4B.x=8C.x=6D.x=12

四、选择题(20题)61.若有定义:“int*P,x=0,*p,p=&x;”,则语句“printf("%d\n",*p);”的输出结果是()。

A.随机值B.0C.x的地址D.P的地址

62.

设有定义的语句:“charc1=92,c2=92;”,则以下表达式中的值为零的是()。

A.c1^c2B.c1&c2C.~c2D.c1E.c2

63.

64.

65.下列关于线性链表的叙述中,正确的是()。

A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

C.进行插入与删除时,不需要移动表中的元素

D.以上说法均不正确

66.有以下程序

67.

68.有下列程序:

main()

{inti,j,x=0;

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

{x++;

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

{if(j%2)continue;

x++:

}

x++:

}

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

}

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

A.x=4B.x=8C.x=6D.x=12

69.

有以下程序:

#include<strintg.h>

main

{charp[20]={a,b,c,d),q[]="abc",r[]="

abcde";

strcpy(p+strlen(q),r);strcat(p,q);

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

}

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

温馨提示

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

评论

0/150

提交评论