2021年四川省雅安市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2021年四川省雅安市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2021年四川省雅安市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2021年四川省雅安市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2021年四川省雅安市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2021年四川省雅安市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列叙述中错误的是()。

A.C语言程序对预处理命令行的处理是在程序执行过程中进行的

B.预处理命令行的最后不能以分号表示结束

C.“#defmeMAX”是合法的宏定义命令行

D.在程序中,凡是以“#”开始的语句行都是预处理命令行

2.在C语言中,退格符是

A.\nB.\tC.\fD.\b

3.以下()不是队列的基本运算

A.从队尾插入一个新元素B.从队列中删除第i个元素C.判断一个队列是否为空D.读取队头元素的值

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

A.0,-1,-1,-1

B.0,-1,-1,0

C.0,-1,-1,0,-1,0

D.0,-1,-1,-1,-1,-1

5.若有说明语句:double*p,a;则通过scanf语句正确给输入项读人数据的程序段是()。

A.*p=&a;scanf("%1f”,p);

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

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);

6.下列程序的执行结果是()。#include<stdioh>main{inta,b,c;a=b=2,c=I;c=(a++)-1;printf("%d,0Ad",a,c);c+=-a+++(++b);printf("%d,%d",a,c);)A.3,14,1B.3,14,2C.2,04,1D.2,14,1

7.设a和b均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是A.6.5B.6C.5.5D.6

8.有以下程序#include<stdio.h>main(){inta=5,b=l;t=(a<<2)|b;printf("%d\n",t);}程序运行后的输出结果是______。A.21B.11C.6D.1

9.若已定义:“inta[9],*p=a;”,并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是______。

A.p+1B.a+1C.a++D.++p

10.数据在计算机存储器内表示时,如果元素在存储器中的相对位置能反映数据元素之间的逻辑关系,则称这种存储结构为()。

A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构

11.当接受用户输入的含有空格的字符串时,应使用()函数。

A.gets()B.getchar()C.scanf()D.printf()

12.顺序结构的本质特点是()。

A.数据元素存储在地址连续的内存空间

B.数据元素紧邻

C.数据元素在内存中的相对位置表示数据之间的逻辑关系

D.不使用指针

13.下列方法中,属于白盒法设计测试用例的方法的是()。

A.错误推测B.因果图C.基本路径测试D.边界值分析

14.以下关于C语言的叙述中正确的是()。

A.C语言的数值常量中夹带空格不影响常量值的正确表示

B.C语言中的变量可以在使用之前的任何位置进行定义

C.在C语言算术表达式的书写中,运算符两侧的运算数据类型必须一致

D.C语言中的注释不可以夹在变量名或关键字的中间

15.有如下程序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

16.现有1GB数据进行排序,计算资源只有1GB内存可用,下列排序方法中最可能出现性能问题的是()

A.堆排序B.插入排序C.归并排序D.快速排序E.选择排序F.冒泡排序

17.在下面的一维数组定义中,哪一个有语法错误()。A.inta[]={1,2,3};B.inta[10]={0};C.inta[];D.inta[5];

18.有以下程序:#includedstdi0.h>#definef(x)X*x*xmain(){inta=3,S,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",S,t);}程序运行后的输出结果是()。A.10,64B.10,10C.64,10D.64,64

19.设有以下说明语句structnum{inta;floatb;}numl;则下面的叙述不正确的是______。

A.struct是结构体类型的关键字

B.structnum是用户定义的结构体类型

C.numl是用户定义的结构体类型名

D.a和b都是结构体成员名

20.设某文件内排序后得到100个初始归并段(初始顺串),若使用多路归并排序算法,且要求三趟归并完成排序,问归并路数最少为()

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

二、2.填空题(20题)21.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

22.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

24.语句"int(*ptr)();"的含义是______是指向函数的指针,该函数返回一个int型数据。

25.软件测试分为白箱(盒)测试和黑箱(盒)测试。基本路径测试方法属于()测试。

26.以下程序的输出结果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

27.实现算法所需的存储单元多少和算法的工作量大小分别称为为算法的【】。

28.若按功能划分,软件测试的方法通常分为白盒测试方法和【】测试方法。

29.已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元______。

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

main()

{

intp[7]=(11,13,14,15,16,17,18};

inti=0,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

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

}

31.设有以下定义和语句:

inta[3][2]={1,2,3,4,5},*p[3];

p[0]=a[1];

则*(p[0]+1)所代表的数组元素是【】。

32.按"先进后出"原则组织数据的数据结构是【】。

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

voidfun2(int*x,int*y)

{intt;

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

}

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

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

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

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

}

34.Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向______的设计方法。

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

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=4,b=3,c=5,d=6;

t(a,b,c,d);

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

}

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

mazn()

{inta=5,b=4,c=3,d;

d=(a>b>C);

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

}

37.当执行以下程序时,输入1234567890<回车>,则其中while循环体将执行()次。

#include<stdio.h>

main()

{charch;

while((ch=getchar())=='0')printf("#");

}

38.以下程序运行结果是【】。

#include<stdio.h>

main()

{intfun();fun();}

fun()

{staticinta[3]={0,1,2};

inti;

for(i=0;i<3;i++)a[i]+=a[i];

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

printf("\n");}

39.以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。

main()

{intx[10],a[9],i;

for(i=0;i<10;i++)scanf("%d",&x[i]);

for([11];i<10;i++)

a[i-1]=x[i]+[12];

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

printf("");

}

40.以下函数的功能是计算s=1+1/21+1/3!+…+1/n!,请填空。

doublefun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k;

s=s+fac;

}

}

三、1.选择题(20题)41.在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A.63B.64C.6D.7

42.下面程序的输出是______。main(){intx=3,y=6,a=0;while(x++!=(y-=1)){a+=1if(y<x)break;}printf("x=%d,y=%d,=%d\n",x,y,a);}

A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=4,a=1

43.已定义以下函数fun(char*p2,char*p1){while((*p2=*pl)!='\0'){p1++;p2++;}}函数的功能是

A.将p1所指字符串复制到p2所指内存空间

B.将p1所指字符串的地址赋给指针p2

C.对p1和p2两个指针所指字符串进行比较

D.检查p1和p2两个指针所指字符串中是否有'\0'

44.下列说法中,正确的是______。

A.指针是一个变量B.指针中存放的可以是任何类型的值C.指针变量是变量地址D.指针变量占用存储空间

45.规范化理论中,分解______主要是消除其中多余的数据相关性。

A.关系运算B.内模式C.外模式D.视图

46.运行下面程序时,从键盘输入字母A,则输出结果是()。#include<stdio.h>main(){charch;ch=getchar();switch(ch){case'A':printf("AAAA\n");case'B':printf("BBBB\n");default:printf("CCCC\n");}}

A.AAAAB.AAAABBBBC.AAAABBBBCCCCD.AAAACCCC

47.线性结构中的一个结点代表一个数据元素,通常要求同一线性结构的所有结点所代表的数据元素具有相同的特点,这意味着______。

A.每个结点所代表的数据元素都一样

B.每个结点所代表的数据元素包含的数据项的个数要相等

C.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致

D.结点所代表的数据元素有同一特点

48.数字字符0的ASCII值为48,若有以下程序main(){chara='1',b='2';printf("%c,",b++);printf("%d\n",b-A);}程序运行后的输出结果是

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

49.以下程序的输出结果是

#include<stdio.h>

intfun(intn,int*s)

{intf1,f2;

if(n==0||n==1)

*s=1;

else

{fun(n-1,&f1);

fun(n-2,&f2);

*s=f1+f2;

}}

voidmain()

{intx;

fun(6,&x);

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

A.7B.13C.9D.10

50.有以下程序

#include<stdlib.h>

structNODE

{intnum;structNODE*next;}

main()

{structNODE*P,*q,*r;

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

q=(structNODE*)malloc(sizeof(struetNODE));

r=(structNODE*)malloc(sizeof(structNODE)):

p->num=10;q->num=20;r->num=30;

p->next=q;q->next=r;

printf("%d\n",p->num+q->next->num):

}

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

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

51.若x是int型变量,且有下面的程序片段:for(x=3;x<6;x++)printf(x%2)?("**%d"):(”##%d\n”),x);上面程序片段的输出结果是()

A.**3##4**5

B.##3**4##5

C.##3**4##5

D.**3##4**5

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

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

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

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

53.设变量均已正确定义,若要通过scanf("%d%c%d%c”,&a1,&e1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。下列所示的输入形式中正确的是(注:口代表空格字符)()。

A.10□X□20□Y<CR>

B.10□X20□Y<CR>

C.10□X<CR>20Y<CR>

D.10X<CR>20□Y<CR>

54.在E-R图中,用来表示实体的图形是

A.矩形B.椭圆形C.菱形D.三角形

55.若a=1,b=2,则a|b的值是______。

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

56.以下程序的输出结果是______。#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n"++*x,++*y,*(z++));}inta=10,b=40,c=20main(){prt(&a,&b&C);prt(&a,&b,&C)

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,41

D.11,41,2112,42,22

57.下述程序向文件输出的结果是______。#include<stdio.h>voidmain(){FILE*fp=fopen("TEST","wb");fprintf(fp,"%d%5.0f%c%d",58,76273.0,'_',2278);fclose(fp);}

A.5876273-2278

B.5876273.000000-2278

C.5876273-2278

D.因文件为二进制文件而不可读

58.有以下程序#defineN20fun(inta[],intn,:Intm){inti,i;for(i=m;i>n;i--)a[i+1);a[i];}main(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};fuu(a,2,9);for(i=0;i<5;i++)printf("%d",a[i]);}程序运行后的输出结果是

A.10234B.12344C.12334D.12234

59.以下叙述中正确的是______。

A.C语言比其他语言高级

B.C语言可以不用编译就能被计算机识别执行

C.C语言以接近英国国家的自然语言和数学语言作为语言的表达形式

D.C语言出现得最晚,具有其他语言的一切优点

60.下列关于字符串的说法中错误的是

A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志

B.′\0′作为标志占用存储空间,计入串的实际长度

C.在表示字符串常量的时候不需要人为在其末尾加入′\0′

D.在C语言中,字符串常量隐含处理成以′\0′结尾

四、选择题(20题)61.以下选项中,能表示逻辑值“假”的是()

A.1B.0.000001C.0D.100.0

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

A.在C语言程序中,main函数必须放在其他函数的最前面

B.每个后缀为C的C语言源程序都可以单独进行编译

C.在C语言程序中,只有main函数才可单独进行编译

D.每个后缀为.C的C语言源程序都应该包含一个main函数

63.

64.以下选项中不能作为c语言合法常量的是()。.

A.0.1e+6B.’cd’.C.”、a”D.’\011

65.

66.若有定义语句:doublea,*p=&a;,以下叙述中错误的是()。

A.定义语句中的*号是一个间址运算符

B.定义语句中的*号只是一个说明符

C.定义语句中的P只能存放double类型变量的地址

D.定义语句中,*p=&n把变量a的地址作为初值赋给指针变量P

67.有以下程序

A.357B.753C.369D.751

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

A.s=67B.s=61C.S=63D.S=56

69.

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

A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上3种说法都不对

71.有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向此链表中的3个连续结点。structnode{

int

data;structnode

*next;

}*p,*q,*r;现要将这个链表构成一个环,以下(

)操作是正确的。A.p->next=q->nextB.r->next=pC.p->next=rD.r->next=q->next->next

72.

73.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是()。A.

B.

C.

D.

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

A.15,16B.16,15C.15,15D.16,16

75.若程序中有以下说明和定义。

structabc

{

intx;chary;

}

structabcs1,s2;

则会发生的情况是

A.编译时出错B.程序将顺序编译、连接、执行

C.能顺序通过编译、连接,但不能执行D.能顺序通过编译,但连接出错

76.

77.下面对C语言的描述中,正确的是

A.函数一定有返回值,否则无法使用函数

B.C语言函数既可以嵌套定义又可以递归调用

C.在C语言中,调用函数时,只能将实参的值传递给形参

D.C语言程序中有调用关系的所有函数都必须放在同一源程序文件中

78.设变量x为float型且已赋值,则以下语句能将x中的数值保留到小数点后两位,并将第3位四舍五入的是()。

A.

B.

C.

D.

79.

80.设有如下程序段

五、程序改错题(1题)81.由N个有序整数组成的数列已放在一维数组中,下列给定程序函数fun()的功能是:利用折半查找法查找整数m在数组中的位置。若找到,返回其下标值;否则,返回-1。折半查找的基本算法是:每次查找前先确定数组中待查的范围low和high(10w%high)。然后用m与中间位置(mid)上元素的值进行比较。如果m的值大于中间位置元素的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中,直到low>;high,查找结束。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编写一个函数intproc(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。例如,输入如下整数:876675896101999401980431451777则输出结果为4,999。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.A预处理是在程序编译之前进行的,所以A选项错误。故本题答案为A选项。

2.D解析:在C++语言中退格符表示为\\b退格。注意:其他转义字符的意义:\\n表示回车换行,\\t表示横向跳到下一制表位置,\\v表示竖向跳格,\\r表示回车,\\f表示走纸换页,\\\\表示反斜线符,\\a表示鸣铃,\\ddd1~3位表示八进制数所代表的字符,\\xhh1~2位表示十六进制数所代表的字符。

3.B

4.A程序定义整型变量a和b,初值分别是1,-2。for语句中循环条件式为“a--&&b++”,因为--和++的优先级高于逻辑与运算符&&,所以循环条件式等价于“(a--)&&(b++)”,自左向右运算。第1轮循环,a、b的值为1,-2,首先执行a--,a--的值为1,执行完后a的值为0;继续执行b++,b++的值为-2,执行完后b的值为-1。整个表达式“a--&&b++”的值为真,程序输出0,-1。第2轮循环,a、b的值分别为0,-1,首先执行a--,a--的值为0,执行完后a的值为-1,由于a--的值为0,根据逻辑与运算的短路原则,表达式“a--&&b++”的值一定为假,表达式b++不再执行,循环结束,执行循环体外的printf语句,输出a、b的值分别为:-1,-1。所以本题输出结果为:0,-1,-1,-1。本题答案为A选项。

5.Ddouble*p,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量p;scanf("%If",p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,scanf函数要求在输入double型数据,格式控制符必须用%1f。否则,数据不能正确输入。所以选项D正确。

6.A本题主要考查自加减运算符(++,--)的使用。①如果作为前缀变量“++a,--a”,在使用a之前,先使a的值加1或者减1,再使用表达式的值参与运算;②后缀变量“a++,a--”,先使用表达式的值参与运算,在使用a之后,再使i的值加1或者减1。在本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此句后l3-的值是3;表达式c+=-a+++(++b)也可写成C=c+(一a++)+(++b),c=1+(一3)+3=1,此时a=4,b=3。

7.D解析:本题考查的知识点是运算符的优先级。在这个表达式中,优先级最高的是(int)a,也就是对5.5取整,结果是5,其次是b/b,即2.5/2.5,结果是1.000000,最后相加结果为6.000000(表达式的最终结果为实型),所以4个选项中D正确。

8.A解析:本题主要考查了C语言的逻辑运算符,先将变量a,b的值转换为2进制数,a=00000101,b=00000001,a先左移2位结果为00010100,再与b按位或运算,结果为00010101,转换为十进制数为21,因此,选项A是正确的。

9.C

10.C

11.A

12.C

13.CC)【解析】白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测试、基本路径测试等。

14.DC语言的数值常量中不能夹带空格,所以A选项错误。C语言中的变量都必须先定义再使用,变量的定义通常放在函数体的前部,也可以放在函数外部或复合语句的开头,不能随便放置,所以B选项错误。在C语言中,运算符两侧的运算数据类型可以不一致,且结果与精度较高的数据类型保持一致,所以C选项错误。故本题答案为D选项。

15.D

16.C

17.C

18.A本题考查带参数的宏定义。第一次函数调用求S的值,x=a+1,所以X*X*X应写成a+1*a+1*a+1,没有括号优先级,结果为l0,第二次函数调用x*X*X可写成(a+1)*(a+1)*(a+1),所以结果为43=64。

19.C

20.A

21.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n/2]+1个叶子结点以及[n/2]个度为2的结点,没有度为1的结点。本题中,完全二叉树共有700个结点,700是偶数,所以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有1个是度为1的结点。所以,本题的正确答案为350。

22.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。

23.30253025解析:本题考核的知识点是变量的存储属性和算术运算的应用。本题涉及了自动变量、静态变量和外部变量。外部变量是定义在所有函数之外的变量,本题中inta=5定义了一个外部变量a,它是一个全局变量,即作用域是从定义的位置开始到本文件的结束;静态变量的存储空间在程序的整个运行期间是固定的(static),本题函数fun()中staticinta=10定义个一个静态变量a,此静态变量a是个静态的局部变量,即它的值只能在本函数中使用;自动变量是C程序中使用最多的一种变量,它的建立和撤消都是由系统在程序执行过程中自动进行的,auto是自动变量的存储类别标识符,如果省略auto,系统隐含认为此变量为auto,本题中main()中intc=20定义了一个自动变量c,此自动变量c是个静态的局部变量.算术运算中a+=b++相当于a=a+b,b=b+1.所以,在第一个ptine('%d',a)中a=a+b=10+20=30,第二个printf('%d',a)中a=a+c=5+20=25,即输出3025。

24.ptrptr解析:本题考查函数指针的概念。函数指针的定义格式是:类型标识符(*旨针变量名)()。注:“类型标识符”为函数返回值的类型。

25.自盒自盒解析:自盒测试法即结构测试,它与程序内部结构相关,要利用程序结构的实现细节设计测试实例。白盒测试法主要有逻辑覆盖、基本路径测试等。

26.JD

27.空间复杂度和时间复杂度空间复杂度和时间复杂度解析:算法的复杂性是指对—个在有限步骤内终止算法和所需存储空间大小的估计。算法所需存储空间大小是算法的空间复杂性,算法的计算量是算法的时间复杂性。

28.黑盒软件测试的方法有三种:动态测试、静态测试和正确性证明。设计测试实例的方法一般有两类:黑盒测试法和白盒测试法。在使用黑盒法设计测试实例时,测试人员将程序看成一个“黑盒”,即不关心程序内部是如何实现的,只是检查程序是否符合它的“功能说明”,所以使用黑盒法设计的测试用例完全是根据程序的功能说明来设计的。

29.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函数只有一个参数,该参数指定了需要分配多少字节的内存。然后将分配好的内存块的首地址作为void*(未知类型指针)返回.故标准的调用形式应该写成:

p(double*)malloc(sizeof(double));

30.2424解析:本题程序定义了一维数组p,有七个数组元素,整型变量i,j初值分别为0,当while的条件表达式(i<7&&p[i]%2=1)的值为真时,执行语句j+=p[i++];,如:当i=0时,i<7为真,p[i]%2=11%2=1,表达式(p[i]%2=1)的值为真,所以接个表达式(i<7&&p[i]%2=1的值为真,执行j=j+p[i++]=0+11=11,i=1;,依此类推可以得出答案24。

31.a[1][1]a[1][1]解析:p是一个指针数组,p[0]指向数组a[1][0]。*(p[0]+1)代表数组a[1][1]。

32.栈栈解析:考查考生对栈和队列概念的掌握。按'先进后出'原则组织数据的数据结构是栈;按'先进先出'原则组织数据的数据结构是队列。

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

34.数据结构数据结构

35.5656解析:本题中a,b,c,d足实参,x,y,cp,dp是形参。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。因此,程序的输出结果是56。

36.00解析:关系运算符“>”的结合方式是从左向右的,所以在本题中的表达式a>b>c;从左向右开始计算,a>b的结果为“1”,接着1和c比较假,该空格处应该填0。

37.00解析:“ch=getchat()”的功能是从终端读入一个字符赋给变量ch,由于getchar()只能接收一个字符,所以输入的字符1被赋给ch,即“'1'!='0'”,循环体不执行,直接退出while循环,所以循环体执行的次数为0。

38.0240480,2,4\r\n0,4,8解析:本题主要考查了for循环语句的使用以及静态局部变量的特点。

39.i=1x[i-1]i=1\r\nx[i-1]解析:对于10个数,相邻的两个数相加取和,总共要进行9次加法运算,所以空11处应填入i=1。相邻的两个数相加取和,放在数组a中,x[0]与x[1]的和存放在a[0]中,所以空12处应填入x[i-1]。

40.k=k*ik=k*i解析:本题中遗过for循环求s表达式中每一项的和,表达式“fac=fac/k;”求的是每—项的值,所以k的值应为n!,在求n!的时候,可以用上次循环阶乘的值乘i,就可以直接得此次n!,故本题填k=k*i。

41.B解析:在长度为64的有序线性表中,其中的64个数据元素是按照从大到小或从小到大的顺序排列有序的。在这样的线性表中进行顺序查找,最坏的情况就是查找的数据元素不性表中或位于线性表的最后。按照线性表的顺序查找算法,首先用被查找的数据和线性表的第一个数据元素进行比较,若相等,则查找成功,否则,继续进行比较,即和线性表的第二个数据元素进行比较。同样,若相等,则查找成功,否则,继续进行比较。依次类推,直到性表中查找到该数据或查找到线性表的最后一个元素,算法才结束。因此,在长度为64的有序线性表十进行顺序查找,最坏的情况下需要比较64次。因此,本题的正确答案为选项B。

42.D解析:注意的是x++中x值的引用时,这里应当是先引用,后自加,具体执行过程如下:第—次while循环:条件为真,执行a=a+1=1;此时,x的值已为4,判断y<x不成立,继续执行循环;第二次while循环;条件为假,此时x的值已为5,退出while循环,执行printf。

43.A解析:在本题中,while((*p2=*p1)!='\\0')有两个作用,一个是判断条件是否成立以决定是否再次进入循环,另一个作用是判定前先完成*p2=*p1,该处的作用是把p1所指存储单元的字符逐一送p2所指存储单元中,直到p1所指单元内容为'\\0'为止。

44.D解析:指针是地址,存放指针的变量是指针变量,不同类型的指针变量存放不同类型数据的地址,指针变量作为可存储指针的变量,也要占用一定的存储空间。

45.A解析:数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本思想是通过分解关系运算来消除多余的数据相关性。

46.C解析:本题考查switch语句。因为ch=A,所以第一个switch语句,执行ease'A'后面的语句,输出AAAA,没有遇到break语句,所以接着再执行case'B'和default,分别输出BBBB和CCCC。

47.C

48.C解析:本题考查了字符型变量的运算及输出。在C语言中,字符型变量可以看作整型变量来对待,与整型所不同的是字符型变量在内存中只占1个字节,而整型是2个字节。字符型变量中所存的数值是它所表示字符的ASCII码值。ASCII码中的一些相关字符是顺序排列的,如\'0\'的ASCII码值为48,\'1\'为49以此类推一直到\'9\';\'A\'的ASCII码值为65,\'B\'为66以此类推一直到\'Z\'。本题程序一开始就定义了两个字符型变量a和b,并初始化为字符\'1\'和\'2\',由于题目已经告诉,0,的ASCII值为48,所以变量a、b中所存储的数据分别为49和50。第一条输出语句是按字符格式输出表达式b++的值和字符\',\',后缀自加表达式b++的值就是b的值,不过执行完该表达式之后,变量b中的值会增1。所以第一次输出的字符串是'2,',执行完后b中的数据为51.第二条输出语句是按整型格式输出表达式b-a的值和一个换行符\'\\n\',b-a的值是51-49=2,故最终的输出应该为'2,2\\n',\'\\n\'是非打印字符,即不会在屏幕上显示什么,所以,4个选项中选项C符合题意。

49.B解析:考查函数的递归调用。n=0或n=1是递归的终止条件,然后利用已知值逐步递推求出未知值。通过传送地址值,在被调用函数中直接改变调用函数中的变量的值。

50.D

51.D

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

53.A解析:在使用scanf函数进行输入数据时,输入的数据之间必须用空格、回车符、制表符(Tab键)等间隔符隔开。

54.A解析:在E-R图中,用三种图框分别表示实体、属性和实体之间的联系,其规定如下:用矩形框表示实体,框内标明实体名;用椭圆状框表示实体的属性,框内标明属性名;用菱形框表示实体间的联系,框内标明联系名。所以,选项A正确。

55.D

56.B解析:由于实参传送的是变量的地址,所以对形参指针所指向的单元内容的改变,即对实参内容的改变。

57.C解析:fprintf函数工作时,多个数据间不会自动加分隔符,选项A错误:浮点数的输出格式是“%5.0f”表明其小数部分输出0位,即没有输出,所以选项B也是错误的。

58.C解析:数组名可以作为实参传送,由于数组名本身是一个地址值,因此,在函数中对形参数组元素的修改也会相应改变实参数组的元素.在本题中,函数fun()通过一个for循环,将形参数组a中下标为n到m之间的元素向后移动一位,a[n]元素的值不变。所以主函数调用fun(a,2,9);之后,数组a的内容变成{1,2,3,3,4,5,5,6,7,8,9,10},最后通过for循环输出数组前5个元素为12334。选项C符合题意。

59.C解析:C语言是于1972—1973年,由D.M.Ritehie在贝尔实验室为描述和实现UNIX操作系统而在B语言的基础上设计出来的。C语言同时具备高级语言和低级语言的特点,既适用于编写系统软件,义可用于编写应用软件。计算机不能直接执行C语言的源程序,必须编译生成目标程序后才能执行。

60.B解析:'\\0'作为标志占用存储空间,但是不计入串的实际长度。当给一个字符型指针赋值时,赋给这个指针的是这个字符串的地址。

61.C\n本题考查逻辑值假,在程序中非0字符表示逻辑真,0表示逻辑假,所以答案选择C。

\n

62.BC语言是一种成功的系统描述语言,具有良好的移植性,每个后缀为.C的C语言源程序都可以单独进行编译。

63.C

64.B要想表示字符串常量应该用双引号表示,即“cd”,单引号用于表示字符常量,所以B选项中的表示方法错误。

65.A

66.C\ndoublea,*p=&a语句的意思是将a的值存放到指针变量P中,P是指针可以随意指向任何地址,所以答案C错误。

\n

67.A二维数组定义行数可以省略,列数不能省略,所以答案选择A)。

68.B变量x是静态变量,P是全局变量,因此sum函数调用结束时,x、P的值保留,下一次函数调用时继续使用。y和k都是局部变量,调用结束后释放空间,值不再保留。程序执行过程中,s的值为l、6、13、22、33、46、61。所以输出61。

69.C

70.D程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。设计算法时要考虑到数据结构的设计,但是不仅仅是要考虑到数据结构的设计,还要考虑到其他的程

温馨提示

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

最新文档

评论

0/150

提交评论