2022-2023年山东省莱芜市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2022-2023年山东省莱芜市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2022-2023年山东省莱芜市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2022-2023年山东省莱芜市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2022-2023年山东省莱芜市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年山东省莱芜市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.如果最常用的操作是取第i个结点及其前驱,最节省时间的存储方式是()。

A.单链表B.双向链表C.单循环链表D.顺序表

2.在Internet中,域名服务器的主要功能是实现()的转换。

A.IP地址到域名(主机名字)B.域名到IP地址C.主机IP地址和路由器IP地址之间D.路由器IP地址之问

3.设有定义“intx[10],*p=x,i;”,若要为数组x读入数据,以下选项正确的是()。

A.for(i=0;i<10;i++)scanf(“%d”,p+i);

B.for(i=0;i<10;i++)scanf(“%d”,*p+i);

C.for(i=0;i<10;i++)scanf(“%d”,*(p+i));

D.for(i=0;i<10;i++)scanf(“%d”,x[i]);

4.下列描述中正确的是()。

A.程序就是软件

B.软件开发不受计算机系统的限制

C.软件既是逻辑实体,又是物理实体

D.软件是程序、数据与相关文档的集合

5.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}运行该程序的输出结果是______。

A.34B.42C.43D.33

6.具有10个叶子结点的二叉树中有()个度为2的结点。

A.8B.9C.10D.11

7.有以下程序:#include<stdio.h>intf1(inta){returna*3;}intf2(int*b){return*b*5;}main(){intx=3,y=5;printf(“%d,%d\n”,f1(x),f2(&y));}程序的运行结果是()。

A.9,125B.9,25C.3,15D.3,45

8.用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为()。

A.第i行非0元素的个数之和B.第i列非0元素的个数之和C.第i行0元素的个数之和D.第i列0元素的个数之和

9.串的长度是______。A.A.串中不同字符的个数

B.串中不同字母的个数

C.串中所含字符的个数且字符个数大于零

D.串中所含字符的个数

10.s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句s;则以下选项中正确的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,sl)>O)S;

D.if(stremp(s1,s2)>O)S;

11.以下对C语言函数的有关描述中,正确的是

A.在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参

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

C.函数必须有返回值,否则不能使用函数

D.函数必须有返回值,返回值类型不定

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

A.在C语言中,预处理命令行都以“#”开头

B.预处理命令行必须位于C语言源程序的起始位置

C.“include<stdio.h>”必须放在C语言程序的开头

D.C语言的预处理不能实现宏定义和条件编译的功能

13.设有以下语句:inta=1,b=2,c;c=a^(b<<2);执行后,c的值为()。A.6B.7C.8D.9

14.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

15.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈(i=1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。

A.|top[2]-top[1]|=0

B.top[1]+1=top[2]

C.top[1]+top[2]=m

D.top[1]=top[2]

16.下列有关数据库的描述,正确的是______。

A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件

17.数据处理的最小单位是()。

A.数据B.数据元素C.数据项D.数据结构

18.数据表A中有10000个元素,如果仅要求求出其中最大的10个元素,则采用()最节省时间。

A.堆排序B.希尔排序C.快速排序D.希尔排序

19.数据结构通常研究数据的()及运算。

A.物理结构和逻辑结构B.存储和抽象C.理想和抽象D.理想与逻辑

20.下列描述中正确的是()。

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发中的技术问题

二、2.填空题(20题)21.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于______的联系。

22.以下程序的功能是计算。补足所缺语句。

longf(intn)

{inti;longs;

s=【】;

for(i=1;i<=n;i++)s=【】;

returns;

}

main()

{longs;intk,n;

scanf("%d",&n);

s=【】;

for(k=0;k<=n,k++)s=s+【】;

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

}

23.数据的安全性是指保护数据以防止【】用户的使用造成的数据泄密和破坏。

24.下列程序执行后输出的结果是【】。

f(inta)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

25.以下程序的功能是根据输入的"y"("Y")与"n"("N"),在屏幕上分别显示出"ThisisYES."与"ThisisNO."。空白处需要填入的内容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

26.下列程序的功能是将字符串s中所有的字符c删除。请填空。

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')

s[j]='\0';

puts(s);

}

27.对数据元素之间的逻辑关系的描述是()。

28.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

29.常用的黑箱测试有等价类划分法、【】和错误推测法3种。

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

31.以下程序中函数huiwen的功能是检查一个宁符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空______。

#include<string.h>

chat*huiwen(chat*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;break;}

if(!t或t!=0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

printf("%s\n",huiwen(str));

}

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

main()

{inta=2,b=4,c=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

33.软件开发环境是全面支持软件开发全过程的【】集合。

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<=4;cc++)fun();

printf("\n");

}

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

#include<string.h>

char*ss(char*s)

{char*p;t;

p=s+1;t=*s;

while(*p){*(p-1)=*p;p++;}

*(p-1)=t;

returns;

}

main()

{char*p,str[10]="abcdergh";

p=ss(str);

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

}

37.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。

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

#include<stdio.h>

sb(ints[],intb)

{staticintn=3;

b=s[n];

n--;

return(b);

}

main()

{ints[]={1,5,6,8};

inti,x=0;

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

{x=sb(s,x);

printf("%d",x);

}

printf("\n");

}

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

mam()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2=0)

*p='*';

p++;i++;

}

puts(A);

}

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

main()

{char*p[]={"BOOL","OPK","H","SP"};

inti;

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

三、1.选择题(20题)41.在C语言程序中,下列说法正确的是()。

A.函数的定义和函数的调用均可以嵌套

B.函数的定义不可以嵌套,但函数的调用可以嵌套

C.函数的定义可以嵌套,但函数的调用不可以嵌套

D.函数的定义和函数的调用均不可以嵌套

42.有以下程序

main()

{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;

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

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

for(k=j+1;k<4;k++)

if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/

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

}

程序运行后的输出结果是

A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,

43.下面程序段的运行结果是

char*s="abcde";

s+=2;printf("%d",s);

A.cdeB.字符′c′C.字符′c′的地址D.无确定的输出结果

44.有以下程序:voidf(intb[]){inti;for(i=2;i<6;i++)b[i]*=2;}main(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;f(A);for(i=0;i<10;i++)printf("%d,",a[i]);}程序运行后的输出结果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.1,2,6,8,10,12,7,8,9,10,

C.1,2,3,4,10,12,14,16,9,10,

D.1,2,6,8,10,12,14,16,9,10,

45.已知inta=1,b=3则a^b的值为

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

46.以下正确的程序段是

A.charstr1[]="12345",str2[]="abcdef";

B.charstr[10],*st="abcde";strcat(str,st);

C.charstr[10]=""。*st="abcde";strcat(str,st);

D.char*st1="12345",*st2="abcde";strcat(st1,st2);

47.设有变量说明int(*p)[m],其中的标识符p是()。

A.m个指向整型变量的指针

B.指向m个整型变量的指针

C.一个指向具有m个整型元素的一维数组的指针

D.具有m个指针元素的一维指针数组,每个元素都指向整型变量

48.以下选项中不合法的标识符是A.printB.FORC.&aD._00

49.下列程序的输出结果是______。#includemain(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}

A.ihgfsdcbaB.abcdcfghiC.abcdedebaD.ihgfefghi

50.以下对C语言函数的有关描述中,正确的是

A.在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参

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

C.函数必须有返回值,否则不能使用函数

D.函数必须有返回值,返回值类型不定

51.设inti=10,j=11,k=12,x=0;执行语句:if(i>5)if(j>100)if(k>11)X=3;elsex=4;elsex=5;后x的值是()。

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

52.假定a和b为int型变量,则执行以下语句后,b的值为______。a=1;b=10;do{b-=a;a++;}while(b--<0);

A.9B.-2C.-1D.8

53.若执行下面的程序时,从键盘输入5和2,则输出结果是

main()

{inta,b,k;

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

k=a;

if(a<b)k=a%b;

elsek=b%a;

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

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

54.以下叙述正确的是

A.在C语言中,只能用"/*"和"*/"对程序进行注释

B.在C语言注释语句中,"/"和"*"之间不可以有空格

C.注释语句只能使用西文

D.在C程序中,注释说明只能位于一条语句的后面

55.下列工具中为需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

56.以下选项中非法的表达式是()。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

57.若有如下程序:#include"stdio.h"voidmain(){FILE*fp;fp=fopen("test","wb")fprintf(fp,"%d%.1f,%c%c",5,238.41,'B','h');fclose(fp);}则程序运行后向文件输出的结果是()

A.5238.41BhB.5238.4,BhC.5,238.4,B,hD.5238.41Bh

58.以下程序的输出结果是______。main(){charch[3][4]={"123","456","78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}

A.123456780B.123456780C.12345678D.147

59.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是

A.编译出错B.9C.21D.9

60.下列定义变量的语句中错误的是()。

A.int_int;B.doubleint_;C.charfor;D.floatUS$

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

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

62.设有定义:

则以下赋值语句中错误的是()。

A.data2=(2,6);

B.data2=datal;

C.data;real=datal.real;

D.data2.real=datal.unreal;

63.对建立良好的程序设计风格,下面描述正确的是

A.程序应简单、清晰、可读性好B.符号名的命名只需符合语法

C.充分考虑程序的执行效率D.程序的注释可有可无

64.有如下程序

voidf(int*x,int*y)

{intt;

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

}

main()

{inta[6]={1,2,4,6,8,10},i,*p,*q;

p=a;q=&a[5];

while(p<q)

{f(p,q);p++;q--;}

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

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

}

该程序的输出结果是

A.1,2,4,6,8,10B.10,8,4,6,2,1

C.10,8,6,4,2,1D.10,2,4,6,8,1

65.

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

A.在C语言中,预处理命令行都以“#”开头

B.预处理命令行必须位于c源程序的起始位置

C.#include<stdi0.h>必须放在C程序的开头

D.C语言的预处理不能实现宏定义和条件编译的功能

67.

68.下列关于信息系统的叙述中,错误的是()。

A.广播电视是一种双向的、点到多点的信息交互系自

B.网络聊天是一种双向的,以信息交互为主要目的系统

C.电话是一种双向的、点对点的、以信息交互为主要的的系统

D.雷达是一种以感测和识别为主要目的的系统

69.程序调试的目的是

A.发现程序中的错误B.改正程序中的错误C.验证程序的正确性D.改善软件的性能

70.下面描述中错误的是()。

A.系统总体结构图支持软件系统的详细设计

B.软件设计是将软件需求转换为软件表示的过程

C.数据结构与数据库设计是软件设计的任务之一

D.PAD图是软件详细设计的表示工具

71.

72.以下程序的输出结果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.1,2,3,4,10,12,14,16,9,10,

C.1,2,6,8,10,12,7,8,9,10,

D.1,2,6,8,10,12,14,16,9,10,

73.有以下程序:

若运行时输入:246<;回车>;,则输出结果为()。

A.204B.200C.240D.246

74.28.以下叙述中错误的是

A.对于float类型数组,不可以直接用数组名完成对数组进行整体输入或输出

B.数组名代表的是数组所占存储区的首地址,其值是常量,是不可改变的

C.当执行程序时,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D.可以通过赋初值的方式确定数组元素的个数

75.在结构化程序设计方法中,下面内聚性最弱的是()。

A.逻辑内聚B.时间内聚C.偶然内聚D.过程内聚

76.关系数据库管理系统所管理的关系是()。A.若干个二维表B.一个DBF文件C.一个DBC文件D.若干个DBC文件

77.有以下程序执行后的输出结果是()。

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

78.下列叙述中错误的是()。

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

B.c程序可以由多个程序文件组成

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

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

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

A)数组a和b的长度相同B)a数组长度小于b数组长度

C)a数组长度大于b数组长度D)上述说法都不对

80.

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

#include<stdio.h>

voidmain

{intb[6]={2,4,6,8,10,12);

int*p=b,**q=&p;

printf("%d,",*(p++));

printf("%d,",**q);

}

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

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.函数fun的功能是:将S所指字符串中除下标为偶数同时ASCIl码值也为偶数的字符外,其余的全部删除;字符串中剩余字符所形成的新串放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFGl23456”,其中字符A的ASCIl码值为奇数,因此应当删除;字符8的ASCIl码值为偶数,但在数组中的下标为奇数,因此也应当删除;字符2的ASCIl码值为偶数,在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是‘'246”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:

参考答案

1.D

2.B在Internet中,把域名翻译为IP地址的软件称为域名系统DNS,运行域名系统的主机称为域名服务器。域名服务器的主要功能是实现入网主机名字和IP地址的转换。

3.AC语言中scanf函数的声明为“scanf(“<格式化字符串>”,<地址表>);”,可知scanf的第2个参数是地址。因此,从4个答案中可以判断,只有选项A是p[i]的地址,其他的均是变量本身。故本题答案为A选项。

4.D\r\n软件是与计算机操作相关的计算机程序、规程、规则,以及可能有的文件、文档及数据;软件开发要受到计算机系统的限制;软件是一个逻辑实体,不是物理实体,软件具有抽象性。因此选项D正确。

5.D解析:逗号表达式(++x,y++)的值应该是y++的值,由于y++是先引用后自增,所以y++的值是3。

6.B

7.Bf1函数接收整型数a,将a的值乘以3,结果作为函数返回值返回;f2接收整型变量的地址,将地址中的值取出后乘以5,结果作为返回值返回;main函数定义两个变量x、y,初值分别是3和5,所以调用f1(x)返回值为9,调用f2(&y)返回值为25。故本题答案为B选项。

8.B

9.D解析:串的长度指的是串中字符的个数,且其字符个数可以为零。选项D正确。

10.D在C语言中,不能直接比较两个字符串的大小,必须用特定的函数来完成,选项A错误;选项B不管大于还是小于都执行S,不符合题意;选项C正好相反,当s2大于s1时,执行语句S,可知选项D正确。

11.A解析:C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函数不能嵌套定义。函数可以没有返回值,若有返回值,则返回值类型必须确定。

12.A预处理命令以“#”开头,一般在源文件的最前面书写,但不是必须在起始位置书写,所以B、C选项错误。C语言的预处理能够实现宏定义和条件编译的功能,所以D选项错误。故本题答案为A选项。

13.D本题考查两个知识点,按位异或左移把b左移2位化成二进制c=a(b<<2)=a^(000010<<2)=a^001000=0000001^O01000=9,故选择D。

14.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。

15.B

16.C解析:数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有“集成”、“共事”之特点。

17.C解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。

18.B

19.A

20.C\r\n软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的部分问题。因此选项C正确。

21.1对多(或1:N)1对多(或1:N)

22.1s*i0f(k)

23.(非法)不合法(非法)不合法

24.77解析:在程序执行时,static变量仅初始化一次,下次使用时将使用上次保存的值。

25.getchargetchar解析:考查了字符可以作为整型变量来对待,参与操作。题中要求根据输入的字符调用函数YesNo来判断输入的字符是y(Y)还是n(N),字符的输入可用字符输入函数getchar。函数YesNo用来判断一个字符是y(Y)还是n(N),主要用了一个switch多分支结构来比较输入字符与字符\ue008'y',\ue009'Y'、,'n','N'是否相等来实现的。

26.S[j++]=s[i]S[j++]=s[i]解析:循环开始后如果数组s中储存值与字符c相同,则i++直接跳过当前值;如果不相同,则将当前值赋予数组指定位置,并通过j++将下标加1,指向下一元素要存储的位置。

27.数据的逻辑结构数据的逻辑结构解析:数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。

28.概念(或概念级)概念(或概念级)

29.边界值分析法边界值分析法解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价类划分、边界值分析法和错误推测法3种。

30.继承继承

31.str+strlen(str)-1str+strlen(str)-1解析:先从main函数开始看,它先读入字符串,接下来肯定是要判断这个字符串是否是回文,冉看huiwen函数,它的主要思想是用p1指向字符串的首地址,p2指向字符串的尾地址(不包括结束符‘/0‘),将p1左移,p2右移,直到这两个指针相遇,如果在移动过程中发现p1!=p2,则该字符串不是回文,否则其是同文。因此。在空中填str+strlen(str)-1。

32.88解析:本程序定义了3个指针变量p1、p2、p,并且将,、b的地址分别赋给P1、p2,则*p1=a=2,*p2=b=4,所以表达式*p1*(*p2)的值是8。在赋值语句的左边是*(p=&c),即使指针p指向了变量c,因而*(p)代表了c的存储单元,赋值语句“*(p=&c)=*p1*(*p2);”是把整数8赋给了变量c。

33.软件工具软件工具

34.3691236912解析:本题考查最基本的for循环:for(cc=1;cc<5;cc++)规定循环次数为4次,每次a+=3即每次a的值增3,但因为fun函数中变量a为static类型,所以每次调用完于函数之后,变量a所做的改变都要保存。

35.2468

36.bcdefghabcdefgha解析:在本题定义的ss()函数中首先定义了一个指针p和一个字符变量t,然后让p指向参数指针s的下一个位置s+1,并让t保存s位置的字符。然后使用一个while循环将p指向的内容赋给它前面一个位置,即将参数s所指的字符串从第2个字符开始整体往前移动一位。循环结束时,p指向原s串的结束标志处,所以让*(p-1)=t;即是将原s串的第1个字符复制到s串的最后一个位置。整个函数实现的是让一个字符串循环左移一位。故主函数中最后输出的字符串是'bcdefgha'。

37.自顶而下自顶而下

38.86518651解析:主程序中,第一次循环时,i=0,调用sb(s,x)子函数,此时n=3,x=s[n]=s[3]=8,然后将n减1变为2;第二次循环时,i=1,调用sb(s,x)子函数,因为将n定义为了静态变量,所以此时n=2,返回x=s[n]=s[2]=6;第三次循环时,i=2,调用sb(s,x)子函数,此时n=1,返回x=s[n]=s[1]=5;第四次循环时,i=3,调用sb(s,x)子函数,此时n=0,返回x=s[n]=s[0]=1。此程序实际上是将数组s逆序输出。

39.*2*4*6*8**2*4*6*8*解析:程序中定义了一个字符数组a,并初始化为123456789,接着定义了一个指针p并让它指向数组a,紧接着执行了一个while循环,此循环的作用是:当i为偶数时,将“*”赋给a[i],p指向数组末尾,循环结束,此时数组中a[0]、a[2]、a[4]、a[6]和a[8]的值都为“*”,所以最后调用puts()函数输出的a的值为*2*4*6*8*

40.SOSO解析:考查用指针引用字符串数组中元素的方法。题中需要注意两个问题:一是for循环的修正表达式共执行两次'i--'操作;二是*p[i]是对某个字符的引用。

41.B解析:本题考查函数调用的基本概念。因为函数的结果是个未知量,而函数定义时不能使用未知量,所以函数定义不可以嵌套,但函数的调用可以嵌套。

42.A解析:本题利用多重for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列,最后输出对角线上的元素值。

43.C解析:对于字符串指针,其保留的是整个串的首地址,即第一个字符的起始地址;当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。

44.B解析:本题在调用函数时,实参是数组名也是把数组a的首地址传递给形参,由条件i=2且i<6得出函数将列以a[2]开始的4个元素(3、4、5、6)进行乘2操作,结果分别是a[2]=6、a[3]=8、a[4]=10、a[5]=12。a[0]、a[1]、a[6]、a[7]、a[8]、a[9]的值没有发生变化。

45.C解析:^是按位异或运算,如果对应位不同则结果为1,相同则为0。

46.C解析:本题考查了一维字符数组的定义和初始化。选项C中str[10]初始化为空,可以不必进行类似''的空赋值,字符数组若没有进行初始化赋值,默认的字符为空,并且定义完str数组后,应该用“,”分隔而不是“。”,所以选项C错误。

47.C解析:本题考查指向数组的指针变量的声明。这里的p表示一个指向数组的指针;*p表示指针p指向地址的内容。

48.C解析:C语言中标识符的命名必须遵守一定的规则:标识符由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。同时,在C语言的标识符中是区分大小写字母的。C选项中的标识符以&开头,不符合C语言中标识符的命名规则。

49.A

50.A解析:C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函数不能嵌套定义。函数可以没有返回值,若有返回值,则返回值类型必须确定。

51.D解析:首先判断i>5,表达式的值为真,再判断j>100,表达式的值为假,执行x=5。因此只有选项D正确。

52.D

53.C解析:本题考查简单的if…else语句。先执行条件if(a<b),显然不成立,在执行else语句。

54.B解析:在C语言程序段中可以对程序进行注释,注释部分必须用“/*”和“*/”括起来,其中,“/”和“*”之间不可有空格,注释可以是西文,也可以是中文,注释说明语同步以出现在程序的任意位置。综上所述,本题的答案为B)。

55.D解析:需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。

56.D解析:选项A)在C语言中是一个合法的关系表达式,但它并不代表数学式o<=x<100。计算0<=x<100时,从左到右结合,先计算0<=x,其结果只能是0或1,然后再比较0<100或1<100。根据运算符的优先级,选项B)先判断j==0是否成立,其结果只能是0或1,然后再将0或1赋给i。选项C)中,(char)(65+3)为类型强制转换,将整数型数据转换为字符型。选项D)是将一个数据赋给一个表达式,等号左边不合要求,所以错误。

57.B解析:本题对文件test输出4个数据,第一个5原样输出,第二个238.41只保留小数点后1位,然后输出一个‘,’,再连续输出两个字符‘B’和‘h’。所以最终的输出结果是5238.4,Bh。应该选择B。

58.C解析:p是指针数组,通过第1个循环的赋值,p[0]、p[1]、p[2]分别指向二维数组ch的第1行、第2行、第3行,因此输出字符串“12345678”。

59.B解析:本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符将一个表达式转换成所需类型。如:(double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。

本题可按部就班地逐步运算:

fun((int)fun(a+c,b),a-c)

fun((int)fun(10,5),2-8)

fun((int)15.000000,-6)

fun(15,-6)

9

60.D解析:$不能用做变量名,合法的标识符由字母、数字和下画线组成。

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

62.AA)选项中可以在声明变量的同事为data2赋值,但是dala2=(2,6);应写作data2={2,61。所以选择A。

63.A具有良好的程序设计风格是一个程序员必不可少的素质。我们在编写程序时要养成良好的程序设计习惯,对程序的要求不仅能够在计算机上正确运行,而且要便于阅读和被别人理解,便于程序的调试和维护。好的程序设计风格有助于提高程序的正确性、可读性、可维护性和可用性。要使程序具有良好的风格,必须做到以下几点:

(1)合理的标识符的命名。由于一个程序中必然有很多标识符,特别是在一个大型复杂的程序中,标识符可能成千上万,对标识符作用的正确理解是读懂程序的前提,如果程序员随意命名标识符,程序的可读性会很差。因此,在命名标识符时要注意其可理解性。

(2)在程序中添加一定的注释。注释是程序员与日后的程序读者之间询通的重要工具,它用自然语言或伪码描述。它说明了程序的功能,特别是在维护阶段,对理解程序提供了明确指导。因此,一定的注释是程序必不可少的组成部分。

(3)程序的编辑风格。为了使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰,便于对程序的理解。

(4)语句的结构。在结构化程序设计中,单个语句结构是编码阶段的任务,语句结构追求简单直接,不能为了追求效率而使代码复杂化。

总之,程序应简单、清晰、可读性和可理解性好。

64.C题目中给出的程序分为两个部分:主函数main和函数f。在主函数中初始化定义了一个整型数组a,大小为6,并定义了两个数组指针p,q。指针p指向数组第一个元素的地址,指针q指向数组最后一个元素的地址。主函数包含一个while语句,循环条件为p<q,while语句内部先调用了f函数,p、q指针为该函数的实参,随后进行了p++操作和q--,即使p指针指向下一个元素的地址,q指针指向前一个元素的地址。由于是数组存储,必然存在初始时,有p<q,当p>=q时,while语句结束。while语句后面是for语句,该语句的作用是输出数组a[]中所有的数据。

f函数的形参为整型指针,函数的功能是使得输入的指针变量所指向的数据进行交换,由于使用的是指针变量,故在f函数中对指针的操作结果会影响调用函数中(main)实参所指数据的改变,题目中f函数的调用实质是将main函数中的p、q指针所指的数据进行交换,也将导致数组a中相应的数据进行交换。结合while语句,也就是将数组a中的第1个数据与第6个数据进行交换,第2个数据与第5个数据进行交换,以此类推,得到结果10,8,6,4,2,1。

65.C

66.A预处理命令是以“#”号开头的命令,它们不是C语言的可执行命令,这些命令应该在函数之外书写,一般在源文件的最前面书写,但不是必须在起始位置书写,所以B、c错误。C语言的预处理能够实现宏定义和条件编译等功能,所以D错误。

67.D

68.A广播/电视是一种单向的、点对多点(面)的以信息传递为主要目的的系统。

69.B调试也称排错或纠错。它与成功的测试形影相随,测试成功的标志是发现错误。根据错误迹象,诊断错误的原因和位置,进而改正程序中的错误,这就是调试的任务。

调试分为静态调试和动态调试,静态调试就是指对源程序进行分析,然后确定可能出错的地方并进行排错。动态调试是指对程序的运行进行跟踪并观察其出错点,然后进行排错。

静态调试通常可以采用如下两种方法。

(1)输出寄存器的内容

在测试中出现问题,设法保留现场信息。把所有的寄存器和主存中有关部分的内容打印出来(通常以八进制或十六进制的形式打印),进行分析研究。用这种方法调试,输出的是程序的静止状态(程序在某一时刻的状态),效率非常低,不得已才采用。

(2)为取得关键变量的动态值,在程序中插入打印语句。这是取得动态信息的简单方法,并可检验在某事件后某个变量是否按预期要求发生了变化。此方法的缺点是可能输出大量需要分析的信息,必须修改源程序才能插入打印语句,这可能改变关键的时序关系,引入新的错误。

动态调试通常利用程序语言提供的调试功能或专门的调试工具来分析程序的动态行为。一般程序语言和工具提供的调试功能有检查主存和寄存器;设置断点,即当执行到特定语句或改变特定变量的值时,程序停止执行,以便分析程序此时的状态。

70.A详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,所以A错误。

71.C

72.C函数f的功能是将数组中第3、4、5、6个元素乘以2,因此f(a)操作的结果是将元素(3,4,5,6)乘以2,操作结束后,数组a为(1,2,6,8,10,12,7,8,9,10)。

73.A本题中输入的3个数据2,4,6分别赋值给了x[0[0],x[1][0],x[2][0]。x[o][1]仍为初始时的0,所以打印输出时的结果为A选项。

74.C选项A“对于float类型数组,不可以直接用数组名完成对数组进行整体输入或输出”,是正确的。C语言中规定,只有字符型的数组才可以用数组名完成对数组进行整体输入或输出,主要是因为没有字符串型的变量,通常用一个字符数组来存放字符串。采用字符串方式后,便可用数组名对数组进行整体输入和输出。

选项B“数组名代表的是数组所占存储区的首地址,其值是常量,是不可改变的”,是正确的。数组名本身是没有方括号和下标的,它实际上是表示数组起始的地址,该地址在数组初始化时由系统分配。

选项C“当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出‘下标越界’的出错信息”,是错误的。在某些编程语言中,下标的取值是不允许超出数组定义中所设的界限的。但是在C和C++中,编译器不对下标的范围进行检查。不检查下标范围的目的有两个,一个是提高运行效率,不检查下标,程序编译耗费时间少。另一个是能够方便指针的使用,数组名并没有包含该数组长度的信息,只包含地址信息,可以看成是一个指针,若检查下标,将限制数组名的使用功能。

选项D“可以通过赋初值的方式确定数组元素的个数”是正确的。C语言规定,如果对数组中所有的元素赋初值,可以省略定义元素的个数。

75.C内聚按强度从低到高有以下几种类型:

(1)偶然内聚,如果一个模块的各成分之间毫无关系,则称为偶然内聚,也就是说模块完成一组任务,这些任务之间的关系松散,实际上没有什么联系。(2)逻辑内聚,几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。(3)时间内聚,如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。

(4)过程内聚,如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚。

76.A解析:VisualFoxPro就是一种关系数据库管理系统,一个“表”就是一个关系,一个关系就是一个二维表。关系数据库管理系统可管理若干个二维表。

77.Ac的值为a乘以b的值,为3。所以答案选择A)。

78.A一个C语言程序能实现多种算法,所以A)错误。

79.C数组a占4个字节,数组b占3个字节。所以数组a长度大于b长度。

80.D

\n首先定义了一个指向一维数组b的指针P,一个指向指针P的指针变量q;输出*(p++)是先输出*p,即b[O]的值,再将指针P指向数组的下一个元素b[1];输出**q是输出指针P所指单元的内容。

\n

81.(1)错误:t=0;

正确:*t=0;

(2)错误:if(d%2==0)

正确:if(d%2!=O)或if(d%2==1)

【解析】变量t定义为指针型变量,所以不能对t赋初值,不应该是t=0,而是*t=0;题目要求将长整型数中各位上为奇数的数依次取出,因此if语句里应该是d%2!=0。此题较简单,考查的是指针变量作为函数参数和奇偶的判断。

82.

2022-2023年山东省莱芜市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.如果最常用的操作是取第i个结点及其前驱,最节省时间的存储方式是()。

A.单链表B.双向链表C.单循环链表D.顺序表

2.在Internet中,域名服务器的主要功能是实现()的转换。

A.IP地址到域名(主机名字)B.域名到IP地址C.主机IP地址和路由器IP地址之间D.路由器IP地址之问

3.设有定义“intx[10],*p=x,i;”,若要为数组x读入数据,以下选项正确的是()。

A.for(i=0;i<10;i++)scanf(“%d”,p+i);

B.for(i=0;i<10;i++)scanf(“%d”,*p+i);

C.for(i=0;i<10;i++)scanf(“%d”,*(p+i));

D.for(i=0;i<10;i++)scanf(“%d”,x[i]);

4.下列描述中正确的是()。

A.程序就是软件

B.软件开发不受计算机系统的限制

C.软件既是逻辑实体,又是物理实体

D.软件是程序、数据与相关文档的集合

5.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}运行该程序的输出结果是______。

A.34B.42C.43D.33

6.具有10个叶子结点的二叉树中有()个度为2的结点。

A.8B.9C.10D.11

7.有以下程序:#include<stdio.h>intf1(inta){returna*3;}intf2(int*b){return*b*5;}main(){intx=3,y=5;printf(“%d,%d\n”,f1(x),f2(&y));}程序的运行结果是()。

A.9,125B.9,25C.3,15D.3,45

8.用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为()。

A.第i行非0元素的个数之和B.第i列非0元素的个数之和C.第i行0元素的个数之和D.第i列0元素的个数之和

9.串的长度是______。A.A.串中不同字符的个数

B.串中不同字母的个数

C.串中所含字符的个数且字符个数大于零

D.串中所含字符的个数

10.s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句s;则以下选项中正确的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,sl)>O)S;

D.if(stremp(s1,s2)>O)S;

11.以下对C语言函数的有关描述中,正确的是

A.在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参

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

C.函数必须有返回值,否则不能使用函数

D.函数必须有返回值,返回值类型不定

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

A.在C语言中,预处理命令行都以“#”开头

B.预处理命令行必须位于C语言源程序的起始位置

C.“include<stdio.h>”必须放在C语言程序的开头

D.C语言的预处理不能实现宏定义和条件编译的功能

13.设有以下语句:inta=1,b=2,c;c=a^(b<<2);执行后,c的值为()。A.6B.7C.8D.9

14.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

15.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈(i=1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。

A.|top[2]-top[1]|=0

B.top[1]+1=top[2]

C.top[1]+top[2]=m

D.top[1]=top[2]

16.下列有关数据库的描述,正确的是______。

A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件

17.数据处理的最小单位是()。

A.数据B.数据元素C.数据项D.数据结构

18.数据表A中有10000个元素,如果仅要求求出其中最大的10个元素,则采用()最节省时间。

A.堆排序B.希尔排序C.快速排序D.希尔排序

19.数据结构通常研究数据的()及运算。

A.物理结构和逻辑结构B.存储和抽象C.理想和抽象D.理想与逻辑

20.下列描述中正确的是()。

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发中的技术问题

二、2.填空题(20题)21.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于______的联系。

22.以下程序的功能是计算。补足所缺语句。

longf(intn)

{inti;longs;

s=【】;

for(i=1;i<=n;i++)s=【】;

returns;

}

main()

{longs;intk,n;

scanf("%d",&n);

s=【】;

for(k=0;k<=n,k++)s=s+【】;

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

}

23.数据的安全性是指保护数据以防止【】用户的使用造成的数据泄密和破坏。

24.下列程序执行后输出的结果是【】。

f(inta)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

25.以下程序的功能是根据输入的"y"("Y")与"n"("N"),在屏幕上分别显示出"ThisisYES."与"ThisisNO."。空白处需要填入的内容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

26.下列程序的功能是将字符串s中所有的字符c删除。请填空。

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')

s[j]='\0';

puts(s);

}

27.对数据元素之间的逻辑关系的描述是()。

28.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

29.常用的黑箱测试有等价类划分法、【】和错误推测法3种。

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

31.以下程序中函数huiwen的功能是检查一个宁符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空______。

#include<string.h>

chat*huiwen(chat*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;break;}

if(!t或t!=0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

printf("%s\n",huiwen(str));

}

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

main()

{inta=2,b=4,c=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

33.软件开发环境是全面支持软件开发全过程的【】集合。

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<=4;cc++)fun();

printf("\n");

}

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

#include<string.h>

char*ss(char*s)

{char*p;t;

p=s+1;t=*s;

while(*p){*(p-1)=*p;p++;}

*(p-1)=t;

returns;

}

main()

{char*p,str[10]="abcdergh";

p=ss(str);

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

}

37.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。

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

#include<stdio.h>

sb(ints[],intb)

{staticintn=3;

b=s[n];

n--;

return(b);

}

main()

{ints[]={1,5,6,8};

inti,x=0;

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

{x=sb(s,x);

printf("%d",x);

}

printf("\n");

}

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

mam()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2=0)

*p='*';

p++;i++;

}

puts(A);

}

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

main()

{char*p[]={"BOOL","OPK","H","SP"};

inti;

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

三、1.选择题(20题)41.在C语言程序中,下列说法正确的是()。

A.函数的定义和函数的调用均可以嵌套

B.函数的定义不可以嵌套,但函数的调用可以嵌套

C.函数的定义可以嵌套,但函数的调用不可以嵌套

D.函数的定义和函数的调用均不可以嵌套

42.有以下程序

main()

{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;

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

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

for(k=j+1;k<4;k++)

if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/

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

}

程序运行后的输出结果是

A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,

43.下面程序段的运行结果是

char*s="abcde";

s+=2;printf("%d",s);

A.cdeB.字符′c′C.字符′c′的地址D.无确定的输出结果

44.有以下程序:voidf(intb[]){inti;for(i=2;i<6;i++)b[i]*=2;}main(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;f(A);for(i=0;i<10;i++)printf("%d,",a[i]);}程序运行后的输出结果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.1,2,6,8,10,12,7,8,9,10,

C.1,2,3,4,10,12,14,16,9,10,

D.1,2,6,8,10,12,14,16,9,10,

45.已知inta=1,b=3则a^b的值为

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

46.以下正确的程序段是

A.charstr1[]="12345",str2[]="abcdef";

B.charstr[10],*st="abcde";strcat(str,st);

C.charstr[10]=""。*st="abcde";strcat(str,st);

D.char*st1="12345",*st2="abcde";strcat(st1,st2);

47.设有变量说明int(*p)[m],其中的标识符p是()。

A.m个指向整型变量的指针

B.指向m个整型变量的指针

C.一个指向具有m个整型元素的一维数组的指针

D.具有m个指针元素的一维指针数组,每个元素都指向整型变量

48.以下选项中不合法的标识符是A.printB.FORC.&aD._00

49.下列程序的输出结果是______。#includemain(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}

A.ihgfsdcbaB.abcdcfghiC.abcdedebaD.ihgfefghi

50.以下对C语言函数的有关描述中,正确的是

A.在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参

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

C.函数必须有返回值,否则不能使用函数

D.函数必须有返回值,返回值类型不定

51.设inti=10,j=11,k=12,x=0;执行语句:if(i>5)if(j>100)if(k>11)X=3;elsex=4;elsex=5;后x的值是()。

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

52.假定a和b为int型变量,则执行以下语句后,b的值为______。a=1;b=10;do{b-=a;a++;}while(b--<0);

A.9B.-2C.-1D.8

53.若执行下面的程序时,从键盘输入5和2,则输出结果是

main()

{inta,b,k;

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

k=a;

if(a<b)k=a%b;

elsek=b%a;

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

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

54.以下叙述正确的是

A.在C语言中,只能用"/*"和"*/"对程序进行注释

B.在C语言注释语句中,"/"和"*"之间不可以有空格

C.注释语句只能使用西文

D.在C程序中,注释说明只能位于一条语句的后面

55.下列工具中为需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

56.以下选项中非法的表达式是()。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

57.若有如下程序:#include"stdio.h"voidmain(){FILE*fp;fp=fopen("test","wb")fprintf(fp,"%d%.1f,%c%c",5,238.41,'B','h');fclose(fp);}则程序运行后向文件输出的结果是()

A.5238.41BhB.5238.4,BhC.5,238.4,B,hD.5238.41Bh

58.以下程序的输出结果是______。main(){charch[3][4]={"123","456","78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}

A.123456780B.123456780C.12345678D.147

59.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是

A.编译出错B.9C.21D.9

60.下列定义变量的语句中错误的是()。

A.int_int;B.doubleint_;C.charfor;D.floatUS$

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

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

62.设有定义:

则以下赋值语句中错误的是()。

A.data2=(2,6);

B.data2=datal;

C.data;real=datal.real;

D.data2.real=datal.unreal;

63.对建立良好的程序设计风格,下面描述正确的是

A.程序应简单、清晰、可读性好B.符号名的命名只需符合语法

C.充分考虑程序的执行效率D.程序的注释可有可无

64.有如下程序

voidf(int*x,int*y)

{intt;

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

}

main()

{inta[6]={1,2,4,6,8,10},i,*p,*q;

p=a;q=&a[5];

while(p<q)

{f(p,q);p++;q--;}

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

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

}

该程序的输出结果是

A.1,2,4,6,8,10B.10,8,4,6,2,1

C.10,8,6,4,2,1D.10,2,4,6,8,1

65.

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

A.在C语言中,预处理命令行都以“#”开头

B.预处理命令行必须位于c源程序的起始位置

C.#include<stdi0.h>必须放在C程序的开头

D.C语言的预处理不能实现宏定义和条件编译的功能

67.

68.下列

温馨提示

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

评论

0/150

提交评论