2021年安徽省巢湖市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年安徽省巢湖市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年安徽省巢湖市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年安徽省巢湖市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年安徽省巢湖市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩63页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

2021年安徽省巢湖市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.有以下程序(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

3.表达式:(int)((double)9/2)-(9)%2.的值是A.0B.3C.4D.5

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

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

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

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

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

5.软件生命周期是指()。A.软件产品从提出、实现、使用维护到停止使用退役的过程

B.软件从需求分析、设计、实现到测试完成的过程

C.软件的开发过程

D.软件的运行维护过程

6.在位运算中,操作数左移一位,其结果相当于A.A.操作数乘以2

B.操作数除以2

C.操作数除以4

D.操作数乘以4

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

A.strcpy(str1,"HELLO1");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLO3");

D.strcpy(str4,"HELLO4")

8.树最适合用来表示()。

A.有序数据元素B.无序数据元素C.元素之间具有分层次关系的数据D.元素间无联系的数据

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

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列中的队尾指针一定大于队头指针

D.循环队列中的队尾指针一定小于队头指针

10.下面关于串的的叙述中,哪一个是不正确的()。

A.串是字符的有限序列

B.空串是由空格构成的串

C.模式匹配是串的一种重要运算

D.串既可以采用顺序存储,也可以采用链式存储

11.计算机硬件组成中,CPU包含______。

A.控制器和存储器B.控制器和运算器C.控制器、运算器和存储器D.内存储器和外存储器

12.下面程序的输出结果是()。

#include<stdio.h>

main()

{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};

inti,j,n;

n=9;

i=n/5;

j=n-i*5-1;

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

}

执行后输出结果是()。A.A.a[1][3]=6

B.a[1][3]=-3

C.a[1][3]=2

D.不确定

13.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][10]={“One”,“Three”,“Five”},*p=str[0];printf(“%s,”,p+10);printf(“%d\n”,strlen(p+=10));}程序运行后的输出结果是()。

A.Three,4B.出错C.Three,5D.Five,5

14.已知有结构体:structsk{inta;floatb;}data,*p;若有p=&data,则对data的成员a的正确引用是()。

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

B.st是结构体类型名

C.x、y、z都是结构体成员名

D.structstr是结构体类型名

15.语句:“printf("%d",(a=)&&(b=-2));”的输出结果是()。

A.无输出B.结果是不确定C.-1D.1

16.设有定义语句:doublex=123.456;则语句printf(“%6.2f,%3.0f\n”,x,x);的输出结果是()。

A.123.46,123.0B.123.45,123C.123.46,123D.123.45,123.

17.设有定义:intk=1,m=2;noatf=7;则下列选项中错误的表达式是()。

A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m

18.衡量显示器的主要技术指标是()

A.波特率B.分辨率C.主频D.显示速度

19.以下符号中不能作为标识符的是()。

A._256B.r32C.intD.e231

20.有3个节点的二叉树可能有()种。

A.12B.13C.5D.15

二、2.填空题(20题)21.问题处理方案的正确而完整的描述称为______。

22.若先后输入county、side,以下程序的运行结果为【】。

main()

{chars1[40],s2[20];inti=0,j=0;

scanf("%s",s1);

scanf("%s",s2);

while(s1[i]!='\0')i++;

while(s2[j]!='\0')s1[i++]=s2[j++];

s1[i]='\0';

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

}

23.数据的基本单位是______。

24.设有以下定义:

structss

{intinfo;structss*link;}x,y,z;

且已建立如下图所示链表结构,

请写出删除点y的赋值语句【】。

25.下列循环的循环次数是______。

ihtk=2;

while(k=0)

printf("%d",k);

k--;

printf("\n");

26.为了列出当前盘当前目录中所有第三个字符为C的文件名的有关信息,应该使用命令【】。

27.若a=10,b=20,则表达式!(a<b)的值是【】。

28.关系数据库的关系演算语言是以【】为基础的DML语言。

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

FILE*myf;longf1;

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

fscek(myf,(),SEEK_END);f1+ftell(myf);

fclose(myf);

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

30.软件工程研究的内容主要包括:【】技术和软件工程管理。

31.在面向对象方法中,类之间共享属性和操作的机制称为______。

32.以下程序通过函数指针p调用函数fun,请在填空栏内写出定义变量p的语句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

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

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

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

PRINT(a+i);

printf("\n");

}

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

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

}

35.下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请填空。

#include<stdlib.h>

#include<stdio.h>

voidfun(inta[],intn,int*max,int*d)

{intI;

*max=a[0];

*d=0;

for(I=0;【】;I++)

if(*max<【】)

{*max=a[I];*d=i;}}

main()

{inti,x[20],max,index,n=10;

randomize();

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

{x[i]=rand()%50;printf("%4d",x[i]);}

printf("\n");

fun(x,n,&max,&index);

printf("Max=%5d,Index=%4d\n",max,index);}

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

charstr口="ABCD",*p=str;

printf("%d\n",*(p+3));

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

main()

{intx,a=1,b=2,c=3,d=4;

{intx,a=1,b=2,c=3,d=4;

x=(a<B)?a:b;x=(a<C)?x:C;x=(d>x)?x:d;

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

}

38.以下程序的运行结果是______。

structNode}

intx;

charch;

};

fun(structNode*sn)

}statick=1;

sn->x=20;

Sn->ch='a'+k++;

}

main()

{inti;

staticstructNodest=}10,'a'};

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

fun(&st);

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

}

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

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

longfun5(intn)

(longs;

if((n==l)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

三、1.选择题(20题)41.从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动______个元素。

A.n-iB.n-i+1C.n-i-1D.i

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

A.局部变量的定义可以在函数体和复合语句的内部

B.全局变量的定义可以在函数以外的任何部位

C.同一程序内局部变量和全局变量不允许同名

D.函数的形参属于局部变量

43.在说明语句int*f()中,标识符f代表的是______。

A.—个用于指向整型数据的指针变量

B.—个用于指向一维数组的行指针

C.—个用于指向函数的指针变量

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

44.有以下程序main(){charstr[]="xyz",*ps=str;while(*ps)ps++:for(ps--;ps-str>=0;ps--)puts(ps);}执行后输出结果是

A.yzxyzB.zyzC.zyzxyzD.xxyxyz

45.定义int*swap()指的是______。

A.—个返回整型值的函数swap()

B.—个返回指向整型值指针的函数swap()

C.—个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

46.阅读下列程序,则运行结果为#include"stdio.h"fun(){staticintx=5;x++;returnx;}main(){inti,x;for(i=0;i<3;i++)x=fun();printf("%d\n",x);}

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

47.有如下函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是______。

A.3B.4C.5D.有语法错

48.以下程序的输出结果是______。main(){intnum=0;while(num<=2){num++;printf("%d\n",num);}}

A.1234B.123C.12D.1

49.在软件开发过程中,软件结构设计是描述______。

A.数据存储结构B.软件体系结构C.软件结构测试D.软件控制过程

50.若运行时输入12,则以下程序的输出结果是______。main(){intx,y;scanf("%d",&x);y=x>12?x+1:x-1;printf("%d\n",y);}

A.10B.11C.12D.13

51.在C语言中,运算对象必须是整型数的运算符是()。

A.%B.\C.%和\D.**

52.若整型变量a、b、c、d中的值依次为1、4、3、2。则条件表达式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

53.以下程序错误的是()。

A.main(){intx,y,z;x=0;y=x-1;z=x+y;}

B.main(){intx,y,z;x=0,y=x+1;z=x+y;}

C.main(){intx;inty;intz;x=0,y=x+1;z=x+y;}

D.main(){intx,y,z;x=0;y=x+1;z=x+y,}

54.设有如下说明typedefstructST{longa;intb;charc[2];}NEW;则下面叙述中正确的是______。A.以上的说明形式非法B.ST是一个结构体类型C.NEW是一个结构体类型D.NEW是一个结构体变量

55.待排序的关键码序列为15,20,9,30,67,65,45,90,要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第()个位置。

A.2B.3C.4D.5

56.在表示C语言的整型变量时,表示“无符号整型”的符号是()

A.unsignedintB.unsignedshortC.longintD.unsignedlong

57.数据库系统的核心是()。

A.数据模型B.数据库管理系统C.数据库D.数据库管理员

58.对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为______。

A.n-1B.nC.n+1D.2n

59.执行x=5>1+2&&2||2*4<4-!0后,x的值为______。

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

60.下面不属于软件设计原则的是

A.抽象B.模块化C.自底向上D.信息隐藏

四、选择题(20题)61.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

62.有以下程序

63.

64.当c的值不为0时,在下列选项中不能正确将c的值赋给变量a、b的是()。A.A.a=b=c;B.(a=c)C.(a=c)&&(b=c);D.(b=c);

65.

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

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

67.以下程序段

68.若a是数直类型,则逻辑表达式的值是()。A.1B.0C.2D.不知道a的值,不能确定

69.

70.已知inti=1;执行语句while(i++<4);后,变量i的值为()。

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

71.

72.有以下程序:

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

A.11B.9C.6D.7

73.若有定义:doublea=22;inti=0,k=18;,则不符合c语言规定的赋值语句是()。A.i=a%ll;B.i=(a+k)《=(i+k);C.a=a++,i++;D.i=!a;

74.(47)在结构化方法中,软件功能分解属于下列软件开发中的阶段是()

A.详细设计

B.需求分析

C.总体设计

D.编程调试

75.

76.若有定义“inta=5,b=7;”,则表达式a%=(b%2)运算后,a的值为()。

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

77.(63)线性表的顺序存储结构和线性表的链式存储结构分别是______。

A.顺序存取的存储结构、顺序存取的存储结

B.随机存取的存储结构、顺序存取的存储结构

C.随机存取的存储结构、随机存取的存储结

D.任意存取的存储结构、任意存取的存储结构

78.

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

#include<stdio.h>

main()

{inti,S=0;

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

if(!(i%2)&&!(i%3))s+=i;

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

}

A.4B.39C.45D.6

79.

80.若有定义语句:“charsE10]="1234567\0\0";”,则strlen(s)的值是()。A.A.7B.8C.9D.10

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。请修改函数proc()中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。程序运行后,若输入精度0.0005,则程序应输出为3.140578。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<math.h>doublefun(doubleeps){}voidmain(){ doublex; printf(“Inputeps:”); scanf(“%lf”,&x); printf(“\neps=%lf,PI=%lf\n”,x,fun(x));}

参考答案

1.D

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

3.B\n本题考查了强制类型转换。9/2为double型,所以结果为4.5,又强制转换为整型,所以结果为4。9%2为取余运算,结果为1。最终结果4-1=3。

\n

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

5.A通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。

6.A左移运算符“<<”是双目运算符,其功能是把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如,a<<4是把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

7.C解析:C语言中:strcpy(st1,st2);,其两个参数均为字符指针或字符数组,选项C中的目的中指针str3没有指向具体有效的存储单元,故是错误的调用。

8.C

9.B在实际应用中,队列的顺序存储结构一般采用循环队列的形式。当循环队列为满或者为空时,队尾指针=队头指针。本题答案为B选项。

10.B

11.B

12.Bn=9,i=n/5=1;j=9-1*5-1=3,输出为a[1][3]=-3

13.Cmain函数定义一个二维字符数组str,它包含3个字符串,每个字符串存放在一个长度为10的一维数组中。指针变量P指向str[0],即第1个字符串“One”。由于“One”存放在长度为10的一维数组中,因此P+10指向下一个字符串“Three”,长度为5。故本题答案为C选项。

14.B解析:本题主要考查结构类型的定义:struct是结构体类型的关键字;structstr是结构体类型名;x、y、z都是结构体成员名;st是结构变量名。

15.D因为在逻辑表达式中,两边的赋值表达式都成立,即值为1,故选择D选项。

16.C对于double类型的实数,可以在printf函数的格式化字符串中使用”n1.n2”的形式来指定输出宽度(n1和n2分别代表一个整常数)。其中n1指定输出数据的宽度(包括小数点),n2指定小数点后小数位的位数,n2也称为精度。当输出数据的小数位多于n2位时,截取右边多余的小数,并对截取部分的第1位小数做四舍五入处理;当输出数据的小数位少于n2时,在小数的最右边补0,使得输出数据的小数部分宽度为n2;如果指定“n1.0”格式,则不输出小数点和小数部分。题干中,%6.2f表示输出6位宽度,2位小数,所以被截取的小数位为0.006,进行四舍五入,结果为123.46;%3.0f表示输出3位宽度,0位小数,结果为123。故本题答案为C选项。

17.C解析:在C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。在C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、&&(逻辑“与”)、‖(逻辑“或”)、赋值运算符。根据运算符的优先级与结合性,对于选项A),先计算k>=k的值(为真,即1),再用1对k进行赋值。对于选取项B),先计算k什的值,再对其取负数。对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比较,故最终结果为0。

18.B

19.C

20.C

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

22.countryside

23.数据元素。数据元素。

24.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:要删除结点y,只需让结点x的指针域指向y结点的指针域所指向的后续结点就可,因此把结点z的地址赋给x的指针域就可以了,即让结点x的指针域指向结点z。而结点z的地址保存在结点y的指针域中,因此只需把结点y的指针域赋值给结点x的指针域即可。

25.00解析:解答本题需要注意表达式“k=0”,它是赋值表达式而不是关系表达式,不论k为何值,表达式k=0总会使k为0,所以不能进入循环。

26.DIR??C*.*

27.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。

28.谓词演算谓词演算

29.fopenfopen解析:C语言中的文件分为:ASCII文件与二进制j文件。文件在使用前打开,使用后要关闭。打开文件的函数为:fopen(),调用形式为:fp=fopen('文件名','使用文件方式:);

关闭文件的函数为:fclose(),调用形式为:fclose(fp);其中fp为文件指针。

30.软件开发

31.继承继承

32.void(*p)();void(*p)();解析:要定义p为指向函数的指针变量,需写成void(*p)();,注意*p两侧的括弧不可以省略,表示P先与*结合,是指针变量,再与后面的()结合,表示此指针变量指向函数,这个函数无返回值(同fun()函数)。

33.1234theend1,2,3,4,theend解析:本题考查带参数的宏的定义。第1次循环,i=1时,调用PRINT(1),P(1)输出1;第2次循环,i=2时,调用PRINT(2),P(2)输出2;第3次循环,i=3时,调用PRINT(3),P(3)输出3;第4次循环,i=4时,调用PRINT(4),P(4)输出4,theend。

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

35.I<na[I]I<n,a[I]解析:该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它们所指向的变量时,要对它们进行指针运算,即*号运算。

36.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d,格式输出的,即输出其相应ASCII码值68。

37.11解析:条件运算表达式:“表达式1?表达式2:表达式3”,但表达式1的值为非0时,此时表达式2的值就是整个条件表达式的值,反之为表示式3的值。解析易知结果为1。

38.20c。20,c。解析:函数fun的功能是给结构体指针变量所指的结构体变量的各成员赋值,主函数两次调用函数fun,第一次调用,实参st两个成员的值是20和字符b,调用结束时,静态局部变量k没有释放,值为2:第二次调用,实参st两个成员的值是20和字符c,调用结束时,静态局部变量k没有释放,值为3;因此,输出结果是20和c。

39.3232解析:while(表达式)的功能是:首先计算表达式的值,若为真,则执行循环体语句,执行完毕,再计算表达式的值,若仍为真,则重复执行循环体语句,直到表达式的值为假时,结束while语句的执行,继续执行while语句后面的语句:i=0时满足循环条件,也满足if的条件,执行语句得i=11,a=11,第2次循环不满足if的条件,执行i--,i=10,执行i+=11;a+=i后,得i=21,a=32,不满足i<20,循环结束。

40.99解析:考查ifelse语句,n==4不满足条件,所以fun5(4)=4+fun5(3),n==3也不满足条件,fun5(3)=3+fun5(2),n==2满足条件fun5(2)=2,故x=4+3+2=9。

41.A

42.C

43.D解析:返回指针值的函数,其—般定义形式为:类型标识符*函数名(参数表);例如:int*f(x,y);其中,f是函数名,调用它以后能得到—个指向整型数据的指针(地址),x,y是函数f的形参。在f的两侧为别为*运算符和()运算符,而()优先级高于*,因此f先与()结合,显然是函数形式。这个函数前面有一个*,表示此函数是指针型函数(函数值是指针)。前面的int表示返回的指针指向整型变量。

44.C解析:本题考核的知识点是字符型指针变量的使用.执行while循环,使指针变量Ps指向字符串“xyz”的字符串结束标志,然后执行for循环,先执行“ps--”,使ps指向字符“z”,故puts(ps)输出结果为“z”;再次执行“ps--”,使ps指向字符“y”,故puts(ps)输出结果为“y2”;再次执行“ps--”,使Ps指向字符’xt,故puts(ps)输出结果为“xyz”,退出循环.所以,C选项为所选。

45.B解析:—个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。

46.D解析:在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,即使退出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储单元,静态局部变量的初值是在编译的时候赋予的,在程序执行期间不再赋予初值。本题由于连续三次调用函数fun(),三次对静态变量x进行操作,x的值应依次为6,7,8。

47.A解析:本题考查函数实参的概念。函数的调用形式为:函数名(实参1,实参2,……)其中实参可以是常量、变量或表达式,题目中ree2+rec3是算术表达式,(rec4,rec5)是逗号表达式。

48.B解析:while的执行过程是:先计算条件表达式的值,若成立则执行循环体,重复上述过程,直到条件表达式的值为“假”(值为零)时,退出循环,并转下—语句去执行。本题在输出num的值为3之后,再判断while的循环条件3<=2,不成立,所以不再输出num的值,故本题的答案选B。

49.B解析:从工程管理解度来看,软件设计分两步完成:概要设计和详细设计。概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。

50.B解析:本题考查“?:”运算的规则:若条件成立,取“:”前的值;否则,取“:”后面的值。

51.A解析:在C语言中,“%”运算符两侧的运算数必须是整型。

52.A解析:条件表达式的形式如下:表达式1?表达式2:表达式3,所以本题条件表达式a<b?a:c<d?c:d应该理解为a<b?a:(c<d?c:d),首先求出条件表达式c<d?c:d的值等于2,再求条件表达式a<b?a:2的值,由于a-1<b-4成立,所以上述条件表达式的值等于1。

53.D解析:选项A)、B)、C)都没有错误。选项D)中的最后一条语句是以逗号结束的,而C语言中不能用逗号作为一条语句的结束标志,应该用分号,所以选项D)的程序是错误的。

54.C解析:将题目中的定义语句去掉前面的typedef和后面的NEW(分号保留),就是一条完整的结构体定义语句,其中struct是说明符,ST是结构体名,大括号里面的是结构体成员的定义。此时要声明该结构体变量时需要使用struct加结构体名一起来声明,struetST一起构成一个结构体类型,就好像字符类型char.若只去掉前面的typedef,就是一条结构体定义同时声明一个结构体变量NEW的语句,因为NEW的前面部分是structST的完整写法。可以看作是structST.C语言允许用typedef说明一种新类型名,其语法格式为:

typedef类型名标识符;

以后就可以用该标识符来代替被说明的类型名了。因此,当前面存在typedef时,该语句就变成了给stmctST的完整写法定义一个新的名称NEW。所以,此时的NEW是一个结构体类型,它相当于structST,即可以和char一样单独用来声明该结构体变量,而ST只是一个结构体名,不能单独用来声明变量。所以,4个选项中C符合题意。

55.A解析:选择排序的基本思想是扫描整个线性表,从中选出最小的元素,将它交换到表的最前面,然后对剩下的子表采用同样的方法,直到子表为空。所以第一趟排序后,将选出最小的元素9放在第一个位置,元素15则放在第二个位置。

56.A

57.B解析:数据库管理系统是数据库系统的核心,是负责数据库的建立、使用和维护的软件。数据库管理系统建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过数据库管理系统。另外,数据库管理系统还承担着数据库的安全保护工作,按照数据库管理员所规定的要求,保证数据库的完整性和安全性。

58.C解析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。

59.C

60.C解析:软件设计的原则包括:抽象、模块化,信息隐蔽和模块独立性。所以自底向上不是软件设计原则。答案为C。

61.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。

62.A第一次循环i值为3,j值分别为l和2,所以输出为4和5;第二次循环i值为2,j值分别为l和2,所以输出为3和4;第三次循环i值为l,j值分别为l和2,所以输出为2和3,答案选择A)。

63.C

64.C选项A是先将a的值赋给变量b,再将变量b的值赋给变量c,不合题意;B选项中由于c的值不为0,在将c的值赋给变量a后,表达式a=c的值为1,不再对表达式b=c计算;对于c选项,表达式a=c的值为1,再求表达式b=c的值为1,然后进行逻辑与运算;D选项将b的值赋给c后再赋给e,故选择C选项。

65.B

66.DA选项中整型常量应表示为1200,不能包含“。”。B选项中E后面的指数必须为整数。C选项中转义字符以“、”开始,若要表示字符“、”,应写为“、、”。

67.Aseanf中name得至lJLili,Rum得到l001,所以结果选择A)。

68.A无论a的值为多少,(a==1)和(a!=1)总会有一个成立,两者或运算,则值为真。为1。

69.B

70.C循环语句;i=1,执行i++<4;满足条件,执行循环体,然后i++<4……,当i=3时,先执行i<4,成立,然后i++,循环,i=4,判断i<4不成立,i++,变成5.

71.D

72.Cstrcpy:字符串拷贝函数;strlen:求字符串长度函数(注意:不包含字符串结束标识符‘、0’);strcat:字符串连接函数。执行完语句strcat(P,r);后,P数组中存储的元素为a,b,c,d,a,b,C,d,8;执行语句strcpy(P+strlen(q),q);得到的结果是将q所指向的字符串拷贝至P+strlen(q)开始的存储位置,因为strlen的值为3,即从P+3开始存储q中的元素。所以执行完strcpy(P+str|en(q),q)语句后,字符数组P[20]的存储元素为a,b,c,a,b,o;所以strlen(P)的结果为6。因此C选项正确。

73.A取模运算符“%”为二元运算符,具有左结合性,参与运算的量应均为整型,选项A)中的变量a是double型,所以选项A)不符合规定。

74.C注:总体设计也就是概要设计

75.C

76.A本题考查“%”运算符的使用。运算符“%”是整数除法的余数。本题中表达式a%=(b%2)等价于a=a%(b%2)=5%(7%2)=5%1=0。

77.B

78.D

\nif语句的条件是当i既是3的倍数又是2的倍数时成立,所以此程序实现的功能是将10以内既是3的倍数又是2的倍数的数相加。

\n

79.C

80.A"\0"表示空字符,strlen函数求得的是不包括字符串结束符'\0'的长度。故选A。

81.82.doublefun(doubleeps){ doubles=0.0,s1=1.0; intn=1; while(s1>=eps) /*当某项大于精度要求时,继续求下一项*/ { s=s+s1; /*求和*/ s1=s1*n/(2*n+1);/*求多项式的每一项*/ n++; } return2*s;}该题考核的是通过迭代法求给定多项式的值。迭代法是让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。需要注意变量的数据类型和赋初值操作。定义double类型变量s,并为其赋初值,用来存放多项式的某一项和最后的总和。从第2项开始,以后的每一项都是其前面一项乘以n/(2*n+1)。程序用s1来表示每一项,用s表示求和后的结果。需注意变量s1和s的初值都为1.0,因为循环变量从第2项开始累加。2021年安徽省巢湖市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.有以下程序(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

3.表达式:(int)((double)9/2)-(9)%2.的值是A.0B.3C.4D.5

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

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

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

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

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

5.软件生命周期是指()。A.软件产品从提出、实现、使用维护到停止使用退役的过程

B.软件从需求分析、设计、实现到测试完成的过程

C.软件的开发过程

D.软件的运行维护过程

6.在位运算中,操作数左移一位,其结果相当于A.A.操作数乘以2

B.操作数除以2

C.操作数除以4

D.操作数乘以4

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

A.strcpy(str1,"HELLO1");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLO3");

D.strcpy(str4,"HELLO4")

8.树最适合用来表示()。

A.有序数据元素B.无序数据元素C.元素之间具有分层次关系的数据D.元素间无联系的数据

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

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列中的队尾指针一定大于队头指针

D.循环队列中的队尾指针一定小于队头指针

10.下面关于串的的叙述中,哪一个是不正确的()。

A.串是字符的有限序列

B.空串是由空格构成的串

C.模式匹配是串的一种重要运算

D.串既可以采用顺序存储,也可以采用链式存储

11.计算机硬件组成中,CPU包含______。

A.控制器和存储器B.控制器和运算器C.控制器、运算器和存储器D.内存储器和外存储器

12.下面程序的输出结果是()。

#include<stdio.h>

main()

{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};

inti,j,n;

n=9;

i=n/5;

j=n-i*5-1;

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

}

执行后输出结果是()。A.A.a[1][3]=6

B.a[1][3]=-3

C.a[1][3]=2

D.不确定

13.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][10]={“One”,“Three”,“Five”},*p=str[0];printf(“%s,”,p+10);printf(“%d\n”,strlen(p+=10));}程序运行后的输出结果是()。

A.Three,4B.出错C.Three,5D.Five,5

14.已知有结构体:structsk{inta;floatb;}data,*p;若有p=&data,则对data的成员a的正确引用是()。

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

B.st是结构体类型名

C.x、y、z都是结构体成员名

D.structstr是结构体类型名

15.语句:“printf("%d",(a=)&&(b=-2));”的输出结果是()。

A.无输出B.结果是不确定C.-1D.1

16.设有定义语句:doublex=123.456;则语句printf(“%6.2f,%3.0f\n”,x,x);的输出结果是()。

A.123.46,123.0B.123.45,123C.123.46,123D.123.45,123.

17.设有定义:intk=1,m=2;noatf=7;则下列选项中错误的表达式是()。

A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m

18.衡量显示器的主要技术指标是()

A.波特率B.分辨率C.主频D.显示速度

19.以下符号中不能作为标识符的是()。

A._256B.r32C.intD.e231

20.有3个节点的二叉树可能有()种。

A.12B.13C.5D.15

二、2.填空题(20题)21.问题处理方案的正确而完整的描述称为______。

22.若先后输入county、side,以下程序的运行结果为【】。

main()

{chars1[40],s2[20];inti=0,j=0;

scanf("%s",s1);

scanf("%s",s2);

while(s1[i]!='\0')i++;

while(s2[j]!='\0')s1[i++]=s2[j++];

s1[i]='\0';

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

}

23.数据的基本单位是______。

24.设有以下定义:

structss

{intinfo;structss*link;}x,y,z;

且已建立如下图所示链表结构,

请写出删除点y的赋值语句【】。

25.下列循环的循环次数是______。

ihtk=2;

while(k=0)

printf("%d",k);

k--;

printf("\n");

26.为了列出当前盘当前目录中所有第三个字符为C的文件名的有关信息,应该使用命令【】。

27.若a=10,b=20,则表达式!(a<b)的值是【】。

28.关系数据库的关系演算语言是以【】为基础的DML语言。

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

FILE*myf;longf1;

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

fscek(myf,(),SEEK_END);f1+ftell(myf);

fclose(myf);

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

30.软件工程研究的内容主要包括:【】技术和软件工程管理。

31.在面向对象方法中,类之间共享属性和操作的机制称为______。

32.以下程序通过函数指针p调用函数fun,请在填空栏内写出定义变量p的语句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

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

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

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

PRINT(a+i);

printf("\n");

}

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

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

}

35.下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请填空。

#include<stdlib.h>

#include<stdio.h>

voidfun(inta[],intn,int*max,int*d)

{intI;

*max=a[0];

*d=0;

for(I=0;【】;I++)

if(*max<【】)

{*max=a[I];*d=i;}}

main()

{inti,x[20],max,index,n=10;

randomize();

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

{x[i]=rand()%50;printf("%4d",x[i]);}

printf("\n");

fun(x,n,&max,&index);

printf("Max=%5d,Index=%4d\n",max,index);}

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

charstr口="ABCD",*p=str;

printf("%d\n",*(p+3));

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

main()

{intx,a=1,b=2,c=3,d=4;

{intx,a=1,b=2,c=3,d=4;

x=(a<B)?a:b;x=(a<C)?x:C;x=(d>x)?x:d;

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

}

38.以下程序的运行结果是______。

structNode}

intx;

charch;

};

fun(structNode*sn)

}statick=1;

sn->x=20;

Sn->ch='a'+k++;

}

main()

{inti;

staticstructNodest=}10,'a'};

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

fun(&st);

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

}

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

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

longfun5(intn)

(longs;

if((n==l)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

三、1.选择题(20题)41.从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动______个元素。

A.n-iB.n-i+1C.n-i-1D.i

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

A.局部变量的定义可以在函数体和复合语句的内部

B.全局变量的定义可以在函数以外的任何部位

C.同一程序内局部变量和全局变量不允许同名

D.函数的形参属于局部变量

43.在说明语句int*f()中,标识符f代表的是______。

A.—个用于指向整型数据的指针变量

B.—个用于指向一维数组的行指针

C.—个用于指向函数的指针变量

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

44.有以下程序main(){charstr[]="xyz",*ps=str;while(*ps)ps++:for(ps--;ps-str>=0;ps--)puts(ps);}执行后输出结果是

A.yzxyzB.zyzC.zyzxyzD.xxyxyz

45.定义int*swap()指的是______。

A.—个返回整型值的函数swap()

B.—个返回指向整型值指针的函数swap()

C.—个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

46.阅读下列程序,则运行结果为#include"stdio.h"fun(){staticintx=5;x++;returnx;}main(){inti,x;for(i=0;i<3;i++)x=fun();printf("%d\n",x);}

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

47.有如下函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是______。

A.3B.4C.5D.有语法错

48.以下程序的输出结果是______。main(){intnum=0;while(num<=2){num++;printf("%d\n",num);}}

A.1234B.123C.12D.1

49.在软件开发过程中,软件结构设计是描述______。

A.数据存储结构B.软件体系结构C.软件结构测试D.软件控制过程

50.若运行时输入12,则以下程序的输出结果是______。main(){intx,y;scanf("%d",&x);y=x>12?x+1:x-1;printf("%d\n",y);}

A.10B.11C.12D.13

51.在C语言中,运算对象必须是整型数的运算符是()。

A.%B.\C.%和\D.**

52.若整型变量a、b、c、d中的值依次为1、4、3、2。则条件表达式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

53.以下程序错误的是()。

A.main(){intx,y,z;x=0;y=x-1;z=x+y;}

B.main(){intx,y,z;x=0,y=x+1;z=x+y;}

C.main(){intx;inty;intz;x=0,y=x+1;z=x+y;}

D.main(){intx,y,z;x=0;y=x+1;z=x+y,}

54.设有如下说明typedefstructST{longa;intb;charc[2];}NEW;则下面叙述中正确的是______。A.以上的说明形式非法B.ST是一个结构体类型C.NEW是一个结构体类型D.NEW是一个结构体变量

55.待排序的关键码序列为15,20,9,30,67,65,45,90,要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第()个位置。

A.2B.3C.4D.5

56.在表示C语言的整型变量时,表示“无符号整型”的符号是()

A.unsignedintB.unsignedshortC.longintD.unsignedlong

57.数据库系统的核心是()。

A.数据模型B.数据库管理系统C.数据库D.数据库管理员

58.对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为______。

A.n-1B.nC.n+1D.2n

59.执行x=5>1+2&&2||2*4<4-!0后,x的值为______。

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

60.下面不属于软件设计原则的是

A.抽象B.模块化C.自底向上D.信息隐藏

四、选择题(20题)61.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

62.有以下程序

63.

64.当c的值不为0时,在下列选项中不能正确将c的值赋给变量a、b的是()。A.A.a=b=c;B.(a=c)C.(a=c)&&(b=c);D.(b=c);

65.

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

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

67.以下程序段

68.若a是数直类型,则逻辑表达式的值是()。A.1B.0C.2D.不知道a的值,不能确定

69.

70.已知inti=1;执行语句while(i++<4);后,变量i的值为()。

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

71.

72.有以下程序:

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

A.11B.9C.6D.7

73.若有定义:doublea=22;inti=0,k=18;,则不符合c语言规定的赋值语句是()。A.i=a%ll;B.i=(a+k)《=(i+k);C.a=a++,i++;D.i=!a;

74.(47)在结构化方法中,软件功能分解属于下列软件开发中的阶段是()

A.详细设计

B.需求分析

C.总体设计

D.编程调试

75.

76.若有定义“inta=5,b=7;”,则表达式a%=(b%2)运算后,a的值为()。

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

77.(63)线性表的顺序存储结构和线性表的链式存储结构分别是______。

A.顺序存取的存储结构、顺序存取的存储结

B.随机存取的存储结构、顺序存取的存储结构

C.随机存取的存储结构、随机存取的存储结

D.任意存取的存储结构、任意存取的存储结构

78.

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

#include<stdio.h>

main()

{inti,S=0;

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

if(!(i%2)&&!(i%3))s+=i;

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

}

A.4B.39C.45D.6

79.

80.若有定义语句:“charsE10]="1234567\0\0";”,则strlen(s)的值是()。A.A.7B.8C.9D.10

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。请修改函数proc()中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。程序运行后,若输入精度0.0005,则程序应输出为3.140578。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<math.h>doublefun(doubleeps){}voidmain(){ doublex; printf(“Inputeps:”); scanf(“%lf”,&x); printf(“\neps=%lf,PI=%lf\n”,x,fun(x));}

参考答案

1.D

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

3.B\n本题考查了强制类型转换。9/2为double型,所以结果为4.5,又强制转换为整型,所以结果为4。9%2为取余运算,结果为1。最终结果4-1=3。

\n

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

5.A通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。

6.A左移运算符“<<”是双目运算符,其功能是把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如,a<<4是把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

7.C解析:C语言中:strcpy(st1,st2);,其两个参数均为字符指针或字符数组,选项C中的目的中指针str3没有指向具体有效的存储单元,故是错误的调用。

8.C

9.B在实际应用中,队列的顺序存储结构一般采用循环队列的形式。当循环队列为满或者为空时,队尾指针=队头指针。本题答案为B选项。

10.B

11.B

12.Bn=9,i=n/5=1;j=9-1*5-1=3,输出为a[1][3]=-3

13.Cmain函数定义一个二维字符数组str,它包含3个字符串,每个字符串存放在一个长度为10的一维数组中。指针变量P指向str[0],即第1个字符串“One”。由于“One”存放在长度为10的一维数组中,因此P+10指向下一个字符串“Three”,长度为5。故本题答案为C选项。

14.B解析:本题主要考查结构类型的定义:struct是结构体类型的关键字;structstr是结构体类型名;x、y、z都是结构体成员名;st是结构变量名。

15.D因为在逻辑表达式中,两边的赋值表达式都成立,即值为1,故选择D选项。

16.C对于double类型的实数,可以在printf函数的格式化字符串中使用”n1.n2”的形式来指定输出宽度(n1和n2分别代表一个整常数)。其中n1指定输出数据的宽度(包括小数点),n2指定小数点后小数位的位数,n2也称为精度。当输出数据的小数位多于n2位时,截取右边多余的小数,并对截取部分的第1位小数做四舍五入处理;当输出数据的小数位少于n2时,在小数的最右边补0,使得输出数据的小数部分宽度为n2;如果指定“n1.0”格式,则不输出小数点和小数部分。题干中,%6.2f表示输出6位宽度,2位小数,所以被截取的小数位为0.006,进行四舍五入,结果为123.46;%3.0f表示输出3位宽度,0位小数,结果为123。故本题答案为C选项。

17.C解析:在C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。在C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、&&(逻辑“与”)、‖(逻辑“或”)、赋值运算符。根据运算符的优先级与结合性,对于选项A),先计算k>=k的值(为真,即1),再用1对k进行赋值。对于选取项B),先计算k什的值,再对其取负数。对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比较,故最终结果为0。

18.B

19.C

20.C

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

22.countryside

23.数据元素。数据元素。

24.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:要删除结点y,只需让结点x的指针域指向y结点的指针域所指向的后续结点就可,因此把结点z的地址赋给x的指针域就可以了,即让结点x的指针域指向结点z。而结点z的地址保存在结点y的指针域中,因此只需把结点y的指针域赋值给结点x的指针域即可。

25.00解析:解答本题需要注意表达式“k=0”,它是赋值表达式而不是关系表达式,不论k为何值,表达式k=0总会使k为0,所以不能进入循环。

26.DIR??C*.*

27.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。

28.谓词演算谓词演算

29.fopenfopen解析:C语言中的文件分为:ASCII文件与二进制j文件。文件在使用前打开,使用后要关闭。打开文件的函数为:fopen(),调用形式为:fp=fopen('文件名','使用文件方式:);

关闭文件的函数为:fclose(),调用形式为:fclose(fp);其中fp为文件指针。

30.软件开发

31.继承继承

32.void(*p)();void(*p)();解析:要定义p为指向函数的指针变量,需写成void(*p)();,注意*p两侧的括弧不可以省略,表示P先与*结合,是指针变量,再与后面的()结合,表示此指针变量指向函数,这个函数无返回值(同fun()函数)。

33.1234theend1,2,3,4,theend解析:本题考查带参数的宏的定义。第1次循环,i=1时,调用PRINT(1),P(1)输出1;第2次循环,i=2时,调用PRINT(2),P(2)输出2;第3次循环,i=3时,调用PRINT(3),P(3)输出3;第4次循环,i=4时,调用PRINT(4),P(4)输出4,theend。

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

35.I<na[I]I<n,a[I]解析:该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它们所指向的变量时,要对它们进行指针运算,即*号运算。

36.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指

温馨提示

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

评论

0/150

提交评论