2021年江西省鹰潭市全国计算机等级考试C语言程序设计测试卷一(含答案)_第1页
2021年江西省鹰潭市全国计算机等级考试C语言程序设计测试卷一(含答案)_第2页
2021年江西省鹰潭市全国计算机等级考试C语言程序设计测试卷一(含答案)_第3页
2021年江西省鹰潭市全国计算机等级考试C语言程序设计测试卷一(含答案)_第4页
2021年江西省鹰潭市全国计算机等级考试C语言程序设计测试卷一(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2021年江西省鹰潭市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列叙述中正确的是()。A.一个逻辑数据结构只能有一种存储结构

B.逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

2.程序中对fun函数有如下说明

void*fun();

此说明的含义是:A.fun了数无返回值

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

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

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

3.在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是()。

A.O(1)B.O(n)C.O(n2)D.O(nlog2n)

4.下面程序的运行结果是()。#include"stdio.h"main(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elseprintf("#");}}

A.*#*#*B.#*#*#*C.*#*#D.#*#*

5.

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

A.非零的数值型常量有正值和负值的区分

B.常量是在程序运行过程中值不能被改变的量

C.定义符号常量必须用类型名来设定常量的类型

D.用符号名表示的常量叫符号常量

7.软件测试的目的是()。

A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误

8.在循环队列中,若front与rear分别表示对头元素和队尾元素的位置,则判断循环队列空的条件是()。

A.front==rear+1B.rear==front+1C.front==rearD.front==0

9.对线性表进行折半查找时,必须要求线性表()。

A.顺序方式存储B.链式方式存储C.以顺序方式存储,且结点按关键字有序排列D.以链式方式存储,且结点按关键字有序排列

10.有以下程序段:charname[20】;intnum;scanf("name=%Snum=%d",name,&num);当执行上述程序段,并从键盘输入:name=Lilimum=1001<回车>后,name的值为()。A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001

11.有以下程序:#include<stdio.h>main(){charch=‘1’;while(ch<‘9’){printf(“%d”,ch-‘0’);ch++;}}程序运行后的输出结果是()。

A.12345678B.01234567C.0D.1

12.

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

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

14.以下选项中能表示合法常量的是()。

A.1,200B.1.5E2.0C.‘\’D.“\007”

15.C语言的逻辑表达式在特定情况下会产生“短路”现象。若有逻辑表达式“x++&&y++,”则以下叙述中正确的是()。

A.若x的值为0,则“y++”操作被“短路”,y值不变

B.若x的值为1,则“y++”操作被“短路”,y值不变

C.若y的值为0,则“&&”运算被“短路”,y值不变

D.若y或x的值为0,则表达式值为0,“x++”和“y++”均不执行

16.有以下程序#include<stdio.h>voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;i<n-1;j++)for(j=i+l;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main{intc[10]={1,2,3,4,5,6,7,8,9,0),i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序运行的结果是()。A.1,2,3,4,5,6,7,8,9,0,

B.0,9,8,7,6,5,1,2,3,4,

C.0,9,8,7,6,5,4,3,2,1,

D.1,2,3,4,9,8,7,6,5,0,

17.若希望下列的程序运行后输出25,程序空白处的正确选项是()。main{intid=50,a[]=(7,4,10,5,8};for()j+=a[i];printf("%d",j-40);}A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

18.一个顺序栈一旦声明,其占用空间的大小()。

A.已固定B.可以变动C.不能固定D.动态变化

19.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式1/abc的表达式是()。A.1.0/a*b*cB.1/(a*b*c)C.1/a/b/(float)cD.1.0/a/b/c

20.在供应关系中,实体供应商和实体零件之间的联系是()。

A.多对多B.一对一C.多对一D.一对多

二、2.填空题(20题)21.以下程序中给指针p分配三个double型动态内存单元,请填空。

#include<stdio.h>

main()

{dOuble*p;

p=(double*)malloc();

p[0]=1.5;p[1]=2.5;p[2]=3.5

printf("%f%f%f\n",p[0],p[1],p[2]);

}

22.若输入2、2,则下列程序的运行结果为【】。

main()

{inti,j,(*p)[4],

a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

p=a;

scanf("%d%d",&i,&j);

printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));

}

23.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

24.有以下定义和语句,则sizeof(a.share)的值是()。

structdate

{unsignedintday;

unsignedintmouth;

unsignedintyear;

union{intshare1;

floatshare2;

}share;

}a;

25.以下函数用来求出两整数之和,并通过形参将结果传回,请填空。

voidfunc(intx,inty,【】z)

{*z=x+y;}

26.在软件开发中,结构化方法包括结构化分析方法、结构化设计方法和结构化程序设计方法。可行性研究阶段采用的是【】。

27.用十六进制给存储器中的字节地址进行编号,其地址编号从0000到FFFF,则该存储器容量是【】。

28.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

29.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。

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

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

31.若从键盘输入24,则以下程序输出的结果是()。

#include<stdio.h>

main()

{inta;

scanf("%d",&A);

if(a>20)printf("%d",A);

if(a>10)printf("%d",A);

if(a>5)printf("%d",A);

}

32.以下程序将两个数从小到大输出。请填空。

{floata,b,【】;

scanf(,【】&a,&b);

if(a>b)

{t=a;

【】;

b=t;

printf("%5.2f%5.2f\n",a,b);

}

33.若已定义inta[10],i;以下fun函数的功能是,在第一个循环中给前10个数组元素依次赋1,2,3,4,5,6,7,8,9,10;在第二个循环中使a数组前10个元素中的值对称拆叠,变成1,2,3,4,5,5,4,3,2,1。请填空。

fun(inta[])

{inti;

for(i=1;i<=10;i++)【】=i;

for(i=0;i<5;i++)【】=a[i];

}

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

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

35.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

36.最简单的交换排序方法是______。

37.下列语句使指针p指向一个double类型的动态存储单元。

p=【】malloc(sizeof(double));

38.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和,请填空。

#include<stdio,h>

main()

inti,a[20],sum,count;

sum=count=0;

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

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

{if(a[i]>0)

{count++;

sum+=【】;

}

prinff("sum=%d,count=%d\n",sum,count);

}

39.问题处理方案的正确而完整的描述称为______。

40.设a、b、c为整数,且a=2、b=3、c=4,则执行完语句a*=18+(b++)-(++c);后,a的值是【】。

三、1.选择题(20题)41.以下选项中可作为C语言合法常量的是______。

A.-80B.-80C.-8e1.0D.-80.0e

42.语句:printf("%d\n",12&012);的输出结果是()。

A.12B.8C.6D.12

43.在下列叙述中,错误的是()。

A.C语言中,二维数组或多维数组是按行存放的

B.赋值表达式b[1][2]=a[2][3]是正确的

C.chara[1];a[0]='A'与inta[1];a[0]='A'等价

D.数组名后的方括号内可以为常量表达式,也可以为变量

44.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

45.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

46.以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#defineN10voidartin(intx[N]){inti=0;while(i<N)scanf("%d",);}在下划线处应填入的是()。

A.x+iB.&x[i+1]C.x+(i++)D.&x[++i]

47.下述函数功能是______。intfun(char*x){char*y=x;while(*y++);retumy-x-1;}

A.求字符串的长度B.求字符串存放的位置C.比较两个字符串的大小D.将字符串x连接到字符串y后面

48.有三个关系R、S和T如下:由关系R和s通过运算得到关系T,则所使用的运算为()。

A.并B.自然连接C.笛卡儿积D.交

49.有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序的输出结果是

A.0B.0.25C.0.5D.1

50.有以下程序段:intk=0;while(k=1)k++;while循环执行的次数是______。

A.无限次B.有语法错,不能执行C.一次也不执行D.执行1次

51.结构化程序设计的三种结构是()。

A.顺序结构、选择结构、转移结构

B.分支结构、等价结构、循环结构

C.多分支结构、赋值结构、等价结构

D.顺序结构、选择结构、循环结构

52.有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen(“d1.dat”,“w”);fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”,j);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d%d”,&k,&n);printf(“%d%d\n”,k,n);fclose(fp);}程序运行后的输出结果是

A.2030B.2050C.3050D.3020

53.阅读下列程序,当运行函数时,输入asdafaaz67,则输出为#include<stdio.h>#include<ctype.h>#include<string.h>intfun(char*str){inti,j=0;for(i=0;str[i]!='\0';i++)if(str[i]!='')str[j++]=str[i];str[j]='\0';}main(){charstr[81];

A.asdafaaz67B.asdafaa267C.asdD.z67

54.结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法

A.对象B.数据结构C.数据流D.目标

55.若有以下程序:#include<stdio.h>voidf(intn);main(){voidf(intn);f(5);}voidf(intn){printf("%d\n",n);}则以下叙述中不正确的是()。

A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f

C.对于以上程序,编译时系统会提示出错信息:对f函数重复说明

D.函数f无返回值,所以可用void将其类型定义为无返回值型

56.对下述程序的判断中,正确的是

#include<stdio.h>

voidmain()

{char*p,s[128];

p=s;

while(strcmp(s,"End"))

{printf("Inputastring:");gets(s);

while(*p)

putchar(*p++);}}

A.此程序循环接收字符串并输出,直到接收字符串"End"为止

B.此程序循环接收字符串,接收到字符串"End"则输出,否则程序终止

C.此程序循环接收字符串并输出,直到接收字符串"End"为止,但因为代码有错误,程序不能正常工作

D.此程序循环接收字符串并将其连接在一起,直到接收字符串"End"为止,输出连接在一起的字符串

57.已知i、j、k为血型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。

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

B.scan("%d,%d,%d",&i,&j,&k);

C.scan("%do/od%d",&i,及j,&k);

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

58.字长为32位的计算机是指()

A.该计算机中的CPU有32个寄器

B.该计算机能够处理的最大数不超过232

C.该计算机每秒钟所能执行的指令条数为32MIPS

D.该计算机中的CPU可以相同时处理32位的二进制数

59.结构化程序设计主要强调的是()。

A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性

60.若程序执行时的输入数据是"2473",则下述程序的输出结果是

#include<stdio.h>

voidmain()

{intcs;

while((cs=getchar())!=;'\n')

{switch(cs-'2')

{case0

case1:putchar(cs+4);

case2:putchar(cs+4);

break;

case3:putchar(cs+3);default:putchar(cs+2);}}}

A.668977B.668966C.6677877D.6688766

四、选择题(20题)61.执行下列程序后,变量a,b,C的值分别是()。intx=5,y=4;inta,b,c;a=(--x==y++)?X:++y;b=++x:c=y:A.a=5,b=5,c=5B.a=4,b=5,c=5C.a=5,b=6,c=5D.a=1,b=5,c=6

62.有以下程序

63.

64.

65.

66.有以下程序

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main()

{inta,b[5]={0};

a=0;b[0]=3;

func(&a,b);

rintf("%d\n",b[0]);

}

程序的运行结果是

A.6B.7

C.8D.9

67.

68.设有定义:

69.

70.下列叙述中正确的是()。A.在c程序的函数中不能定义另一个函数

B.在c程序中main函数的位置是固定的

C.C程序中所有函数之间都可以相互调用

D.每个C程序文件中都必须要有一个main函数

71.设a=l,b=2,c=3,d=4,则表达式:“a<b?a:b<b?a:c<d?a:d”的结果为()。A.A.4B.3C.2D.1

72.

73.以下语句的输出结果是()。

inta=-1,b=4,k;

k=(++a<0)!(b--<=0);

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

A.1,0,4B.1,0,3C.0,0,3D.0,0,4

74.某循环队列的存储空间为Q(4:m),初始状态为front=lea/"=m。现经过一系列的人队操作和退队操作后,front=m,r6ar=m一1,则该循环队列中的元素个数为()。

A.m一1B.mC.1D.0

75.

76.有以下函数

fun(char*a,char*b)

{

while((*a!=’\0’)&&(*b!=’\0’)&&(*a==*b))

{

a++;b++;

}

return(*a-*b);

}

该函数的功能是

A.计算a和b所指字符串的长度之差

B.将b所指字符串连接到a所指字符串中

C.将b所指字符串连接到a所指字符串后面

D.比较a和b所指字符串的大小

77.有如下程序:

该程序的输出结果是()。

A.0.000000B.0.250000C.0.500000D.1.000000

78.sizeof(float)是

A.一个双精度表达式B.一个整型表达式

C.一种函数调用D.一个不合法的表达式

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

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

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

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

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

80.

五、程序改错题(1题)81.下列给定程序中,函数ptoc的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入前两个字符中,插入后前3个字符依然有序;再把第4个字符插入前三个字符中,待排序的字符串已

在主函数中赋予。

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

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

试题程序:

#include<strin9.h>

#include<stdi0.h>

#defineM80

voidproc(char*arr)

{inti,j,n;charch;

n=strlen(arr):

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

//****found****

{c=arr[i];

j=i-1;

while((j>=o)&&(ch<arr[j]))

{

arr[j+1]=arr[j];

j--;

}

arr[j+1]=ch;

}

}

voidmain

{

chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";

printf("Theoriginalstring:%s\n",a);

proc(a);

printf("Thestringaftersortin9:

%s\n\n",a);

}

六、程序设计题(1题)82.请编写函数proc(),对长度为9个字符的字符串,除首、尾字符外,将其余7个字符按ASCⅡ码值降序排列。例如,原来的字符串为HabcdefA,则排序后输出为HfedcbaA。注意:部分源程序给出如下。请勿改动main()和其他函数中的任何内容,仅在函数proc()中填入所编写的若干语句。试题程序:

参考答案

1.DD)【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。

2.D解析:返回指针的函数定义为:返回值类型,函数名(\u3000\u3000),而指向函数的指针定义为:返回值类型(*变量名)(\u3000\u3000)。本题中函数fun返回一个无类型的指针。

3.B

4.A解析:分析程序呵知.程序循环5次,然后利用if语句决定每次循环时输出的字符。当i为奇数时,i%2=1,if(i%2)为真,输出“*”;当i为偶数时,i%2=0,if(i%2)为假,执行else语句,输出“#”,所以当i取1、3、5值时输出“*”,当i取2、4值时输出“#”。

5.C

6.C在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:#define标识符常量。

7.D软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能,也不是为了评估软件或改正错误,因此本题答案为D)。

8.C

9.C

10.A考查简单的C程序。由题可知,程序中输入name的值为Lili,所以输出的必定是Lili,答案选择A。

11.A表达式“ch-‘0’’将数字字符转为数字。输出的格式为%d。while循环从‘1’~‘8’,因此输出的结果是12345678。故本题答案为A选项。

12.C

13.C

14.DA选项中整型常量应表示为1200,数字中不能包含逗号。B选项中E后面的指数必须为整数。C选项中转义字符以“\\”开始,若要表示字符“\\”,应写为“\\\\”。故本题答案为D选项。

15.A题干中,“x++&&y++”属于逻辑与表达式。仅当“x++”和“y++”的结果为真,整个逻辑表达式的结果才为真,否则整个表达式的结果为假。当“x++”的结果为0时,“y”就会被短路,即不再执行“y++”表达式,整个表达式的结果为假。所以当x的值为0时,“x”的结果也是0,“y”操作被“短路”,y值不变。故本题答案为A选项。

16.Dfun函数的功能是对数组a[]的元素从大到小进行排序。

17.D要想使程序输出25,则j-40=25,j=65,而j初值是50,所以填入for循环的语句,使引用的数组元素累加65-50=15即可,D选项中,i下标从0开始,i=2指向第3个数50+a[2]=50+10=60,继续循环60+a[3]=60+5=65,此时i=4跳出,循环结束。

18.A

19.D

20.A一家供应商可提供多种零件,一种零件也可被多家供应商提供。所以实体供应商和实体零件之间的联系是多对多。本题答案为A选项。

21.3*sizeof(double)或size(double)*3或24或3*8或8*33*sizeof(double)或size(double)*3或24或3*8或8*3解析:本题考核的知识点是malloc()函数.该函数的调用格式是“malloc(n)”,作用是申请n个字符的存储单元,并返回该存储区的首地址,实际调用的时候可在前面加上“(类型说明符*)”,以转换成需要的类型的地址.所以在此空格处应该填写3*sizeof(double)或size(double)*3或其他等价的表达式。

22.a[22]=11

23.存储结构数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。

24.4

25.int*int*解析:从题中代码可知:z应该是一个整型指针,因此应填int*。

26.结构化分析方法结构化分析方法解析:结构化分析方法主要用于系统分析阶段;结构化设计方法主要用于系统设计阶段;结构化程序设计方法主要用于编码阶段。可行性研究属于系统分析阶段,因此,可行性研究阶段采用的是结构化分析方法。

27.64KB

28.88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。

29.77解析:此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。请注意前缀++,--和后缀++,--的区别。

30.b=14b=14解析:分析程序可知,n的初始值为1,因此,while(n<=3)循环3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。当n=4时,判断条件不满足,退出循环。

31.242424

32.t"%f%f"a=b

33.a[i-1]或a[-1+i]a[9-i]或a[-i+9]a[i-1]或a[-1+i]\r\na[9-i]或a[-i+9]

34.111,1解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。

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

36.冒泡排序冒泡排序解析:交换排序是指借助数据元素之间的互相交换进行排序的一种方法。冒泡排序是一种最简单的交换排序方法,它是通过相邻元素之间的相互交换逐步将线性表变成有序。

37.(double*)

38.&a[i]a[i]&a[i]\r\na[i]解析:scanf的格式为:scanf(格式控制,地址表列),因此,第一处应该填写地址,由于是循环输入,所以填&a[i]。依据题意第二处应该填写a[i],以实现sum=sum+a[i]的求和。

39.算法或程序或流程图算法或程序或流程图解析:算法是问题处理方案正确而完整的描述。

40.3232解析:b++是先使用b的值参加运算,再对b加1。++c是先对c加1,再使用c的值参加运算。a*=18+(b++)-(++c)等价于a=a*(18+(b++)-(++c))则a=2*(18+3-5)=32。

41.A解析:选项B中,以0开头表示是一个八进制数,而八进制数的取值范围是0~7,所以-080是不合法的;选项C和D中,e后面的指数必须是整数,所以也不合法。

42.B解析:位运算12&012即1100&1010,结果是1000,转化成十进制数是8,所以,输出结果是8。

43.D解析:本题考查数组的4个知识点:①C语言中,二维数组或多维数组元素排列的顺序是按行存放;②不同数组的元素之间可以相互赋值;③字符型数组中存放的是字符,int型数组中存放的是字符对应的ASCII码值,虽然在计算机内部字符常量都是作为蹩型量来处理的,其对应的整数值就是ASCII码值,但两者并不完全等价;④数组名后的方括号内可以为常量,也可以为常量表达式,但不可以为变量。

44.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。

45.D解析:通常,引用一个数组元素可以用下标法,如a[P-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。

46.C解析:根据scanf()的定义,应该在空白处填入一地址值,又因为要为数组中所有元素赋值,故空白处填入的表达式应使i每次增1,选项A和B不会使i增1,所以不正确。选项D在第一次执行时i先自增为1,所以输入的第一个数据被存到x[l]中,而第N次执行时会将数据输入到x[N],这个地址已经超过数组x的范围,属于越界行为,所以也不正确。故正确答案为C。

47.A解析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。

48.D自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此B错误。笛卡儿积是用R集合中的元素为第一元素,s集合中的元素为第二元素构成的有序对,因此C错误。根据关系T可以很明显地看出是从关系R与是系s中取得相同的关系组,所以使用的是交运算,选择D。

49.C解析:该题目测验考生对if…elseif结构的理解,比较简单。x的值满足x<10.0的关系,所以程序将执行y=1.0/x;语句,y的值应该等于0.5。最后,用printf函数输出时,%f的输出格式为小数点后保留6位。

50.A解析:注意本题有个陷阱,马虎的考生将纷纷落马。本来、while中的表达式应为k==1,而本题却为k=1,是赋值表达式而不是逻辑表达式。因此,编译器将其值一直认为是1,因此表达式一直为真,陷入无限次的循环。

51.D结构化程序设计以模块化设计为中心,采用自顶向下、逐步求精的程序设计方法。任何算法功能都可以通过由程序模块组成的三种基本程序结构的组合:顺序结构、选择结构和循环结构来实现。

52.A解析:本题首先以创建方式打开文件“d1.dar”,两次调用fprintf()把i和j的值写到文件“d1.dat”中,文件“d1.dar的内容为20〈回车〉30〈回车〉后把该文件关闭再以读的方式打开,文件位置指针指向文件头,在通过fscard()函数从中读取两个整数到k和n中,由于格式符无间隔,因此输入数据可以用回车隔开,故输入的k值为20,n的值为30。

53.A解析:本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用“留下”字符的算法,以前的题目亦是如此。用str[i]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存str[j]中。注意j的下标变化、初值及最后加串结束符'\\0'。

54.CC。【解析】结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

55.C解析:f函数没有重复说明,在main函数中是对f函数声明,在main函数外则是对f函数的定义。

56.B解析:此题考查了字符串输入函数gets和字符串比较函数strcmp,另外还有字符输出函数putchar。gets从标准输入设备中读入全部字符,包括空格,直到遇到回车符为止。strcmp是字符串比较函数,即strcmp(字符串1,字符串2),如果字符串1=字符串2,则函数值为0;如果字符串1>字符串2,则函数值为一正整数;如果字符串1<字符串2,则函数值为一负整数。putchar(c)函数将字符c输出到标准输出设备上。

57.B解析:函数scan()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符:“输入项地址表”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。

58.D

59.D解析:程序不仅是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。

60.A解析:本题主要考查switch语句的使用方法。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。

61.B本题考查自加(++)、自减(--)运算符的使用。“++x,--x”,在变量x前使用,先使X的值加1或者减1,再使用此时的表达式的值参与运算;“x++,x--”,先把使用X的值参与运算,在使用X之后,再使x的值加1或者减1。对于表达式--x=4,y++=4,两者相等,--x=y++为真,所以a=x=4,执行完此语句后y的值是5。第2个表达式b=++x,x的值先加1,然后赋给b,即b=x+1=5;第一个表达式c=y=5。故B正确。

62.A函数fun的功能是返回字符串数组.,各个字符串第一个字母是T的个数,str数组里有2个,所以选择A)。

63.C

64.D

65.D

66.A本题考查数组作为函数形参与实参的使用。题目给出的程序分为两个部分,一个是函数func,该函数有两个形参,一个为整型的指针a,一个为整型的数组b[],这里的b只是一个形参数组名,与main函数中的数组b没有关系。为了区别,将func函数中的数组b用b’表示。func函数实现的功能是将指针a所指向的整型值*a与6相加,并将结果放入数组b’[0]处。main函数首先对整型数据a和数组b进行初始化,初始化后a的值为0,数组b中第一个值b[0]=3。初始化结束后,对函数func进行调用。应当注意,调用函数func时,是将数组b的数组名作为函数的实参。这样调用的结果就是没有把数组元素的值传递给形参数组,而是把实参数组的起始地址传递给形参,b和b’共占有同一段内存,这样形参数组中的值发生变化也将导致实参数组中的值发生变化。题目中虽然main函数初始化使得b[0]=3,但是在调用func函数的过程中,作为该函数形参的数组b’有b’[0]=*a+6=6,故main函数中的实参数组b[0]值也发生改变,变为6。

67.A

68.A选项中可以在声明变量的同时为data2赋值,但是“data2=(2,6);”应写作

“d2={2,61;’',因此选择A)。

69.D

70.A在C语言中函数不能嵌套定义,所以选择A)。

71.D在三目运算符中,优先级相同,按从右到左的结合性计算,a<b?a:(c<d?a

温馨提示

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

评论

0/150

提交评论