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

下载本文档

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

文档简介

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

一、单选题(20题)1.下面不正确的字符赋值或赋初值的方式为()。

A.chars[10]=”hello!”

B.chars[10]={‘h’,‘e’,‘l’,‘l’,‘o’,‘!’}

C.chars[10];s=”hello”

D.char[]=”hello!”

2.下面程序的输出结果是main(){charstr[10],c='a';inti=0;for(;i<5;i++)str[i]=c++;printf("%s",str);}

A.abcdeB.aC.不确定D.bcdef

3.设有以下定义:inta=0;doubleb=1.25;charc='A';#defined2则下面语句中错误的是()。

A.a++;B.b++;C.c++;D.d++;

4.定义根节点深度为1,有n个元素的完全二叉树的深度是()

A.D(n)=log2(n)

B.D(n)=1+log2(n)

C.D(n)=n+log2(n)

D.D(n)=1+n*log2(n)

5.以下关于return语句的叙述中正确的是()。

A.一个自定义函数中必须有一条return语句

B.一个白定义函数中可以根据不同情况设置多条return语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

6.设有下列二叉树:

对此二叉树先序遍历的结果为

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

7.在排序方法中,元素比较次数与元素的初始排列无关的是()

A.Shell排序B.归并排序C.直接插入排序D.选择排序

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

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

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

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

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

9.在关系数据模型中,通常可以把()称为属性,其值称为属性值。

A.记录B.基本表C.模式D.字段

10.在一个C语言源程序文件中所定义的全局变量,其作用域为()。

A.所在文件的全部范围B.所在程序的全部范围C.所在函数的全部范围D.由具体定义位置和extern说明来决定范围

11.

12.在具有101个元素的顺序表中查找值为x的元素结点时,平均比较元素的次数为()。

A.50B.51C.100D.101

13.下列叙述中正确的是A.为了建立一个关系,首先要构造数据的逻辑关系

B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项

C.一个关系的属性名表称为关系模式

D.一个关系可以包括多个二维表

14.

15.以下选项中合法的C语言常量是()。

A.‘C-STR’B.2014.1C.”\1.0D.2EK

16.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

17.有以下程序:Main(){{intx,y,z;x=y=1;z=x++,y++,++y;print(“%d,%d,%d”,x,y,z);}程序运行后的输出结果是()。A.2,3,3B.2.3.2C.2,3.1D.2.2.1

18.以下不能对二维数组a进行正确初始化的语句是()。A.inta[2][3]={0};

B.inta[2][3]={{1,2},{3,4},{5,6}};

C.inta[][3]={{1,2},{0}};

D.inta[][3]={1,2,3,4,5,6};

19.设有定义:

inta=1,b=2,C=3;

以下语句中执行效果与其他三个不同的是()。

A.if(a>B.C=a,a=b,b=C;

B.if(a>B.{C=a,a=b,b=C;}

C.if(a>B.C=a;a=b;b=c;

D.if(a>B.{C=a;a=b;b=c;}

20.下列关于栈叙述正确的是A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.以上三种说法都不对

二、2.填空题(20题)21.把数学表达式改写成C语言的表达式是【】。

22.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下

1

11

121

1331

14641

其构成规律是:

(1)第0列元素和主对角线元素均为1

(2)其余元素为其左卜方和正上方元素之和

(3)数据的个数每行递增1

请将程序补充完整。

#defineN6

voidyanghui(intx[N][N])

{inti,j;

x[0][0]=1;

for(i=1;j<N;i++)

{x[i][0]=______=1;

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

x[i][j]=______;

}

}

23.语句:x++;++x;x=1/x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。

24.以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135则输出531。请填空。

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

25.性表的顺序存储中,元素之间的逻辑关系是通过【】决定的;性表的链接存储中,元素之间的逻辑关系是通过【】决定的。

26.数据库系统中实现各种数据管理功能的核心软件称为【】。

27.自动批处理文件名必须是【】。

28.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

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

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

30.函数compare的功能是比较两个字符串是否相等,若相等则函数返回值0,否则返回值1,请填空。

compare(chars[],chart[])

{inti=0;

while(s[i]==t[i]||【】)i++;

return(【】?1:0);

}

31.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{infi,j,[13];charstr[]={"1234567"};

for(i=0,j=strlen(str)[14];i<j;i++,j--)

{k=str[i];str[i]=str[i];str[j]=k;}

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

32.下面程序的输出结果是【】。

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptr1=a,*ptr2=b;

intk;

for(k=0;k<7;k++)

if(*(ptr1+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

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

34.设有以下结构体类型:

structst

{charname[8];

intnum;

floats[4];

}student[50];

并且结构体数组student中的元素都已有值。若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:

fwrite(student,【】,1,fp);

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

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

}

main()

{intaa[5]={1,2,3,4,5),s;

s=f(aa,5);printf("%d\n",s);

}

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

voidfun()

{staticinta=0;

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

}

main()

{intcc;

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

printf("\n");

}

37.用以下程序计算1到100的整数的累加和。请填空。

main()

{inti,sum=【】;

i=1;

for(【】)

{sum+=j

i++;

}

printf("sum=%d\n",【】);

}

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

39.有以下程序:

voidf(intv,intw)

{intt;

t=v;v=w;w=t;

}

main()

{intx=1,y=3,z=2

if(x>y)f(x,y);

elseif(y>z)f(y,z);

elsef(x,z);

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

}

执行后的输出结果是【】。

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

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

三、1.选择题(20题)41.以下程序的输出结果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20

42.以下合法的字符型常量是

A.′\x13′B.′\081′C.′65′D.\n

43.设有定义inta=2,b=3,c=4;,则以下选项中值为0的表达式是______。A.(!a==1&&(!b==0)

B.(a<b)&&!c||1

C.a&&b

D.a||(b+b)&&(c-a)

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

A.用C语言实现的算法必须要有输入和输出操作

B.用C语言实现的算法可以没有输出但必须要有输入

C.用C语言程序实现的算法可以没有输入但必须要有输出

D.用C语言程序实现的算法可以既没有输入也没有输出

45.若有如下说明,则______的叙述是正确的。structst{inta;intb[2];}a;

A.结构体变量a与结构体成员a同名,定义是非法的

B.程序只在执行到该定义时才为结构体st分配存储单元

C.程序运行时为结构体st分配6个字节存储单元

D.类型名structst可以通过extern关键字提前引用(即引用在前,说明在后)

46.有以下程序main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}执行后输出结果是

A.456B.258C.369D.789

47.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是()A.1B.2C.2.0D.2.5

48.以下程序中C的二进制值是()。chara=2,b=4,c;c=a^b>>2

A.11B.10100C.111100D.000l1000

49.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d':ss(str1,C);printf("%s\n",str1);}程序运行后的输出结果是()

A.ABCDDEFEGDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

50.有以下程序main(){ihtm=3,n=r,x;x=-m++;X=x+8/++n;printf("%d\n",x);}程序运行后的输出结果是

A.3B.5C.-1D.-2

51.下列程序的输出结果是()。#include<stdio.h>intb=2;intfunc(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&a);printf("%d\n",res);}

A.4B.6C.8D.10

52.假定w,x,y,z和m均为int型变量,有如下程序段:w=1;x=2,y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m(m<2)?m:2;则该程序段执行后,m的值为()

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

53.运行下面程序时,从键盘输入字母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

54.在C语言中,函数的隐含存储类别是______。

A.autoB.staticC.externD.无存储类别

55.软件开发离不开系统环境资源的支持,其中必要的测试数据属于A.硬件资源B.通信资源C.支持软件D.辅助资源

56.有以下程序:#include<stdio.h>main()inti;for(i=0;i<3;i++)switch(i)case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);程序运行后的输出结果是()。

A.22111B.21021C.122D.12

57.下列属于不合法的main函数命令行参数表示形式的是()。

A.main(intargv,char*argc[])

B.main(intargv,char*argc)

C.main(intargv,char**arc)

D.main(intargc,char*argv[])

58.下面程序的输出是______。main(){intk=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}

A.k=11,k=12,k=11

B.k=11,k=13,k=13

C.k=11,k=013,k=0xb

D.k=11,k=13,k=B

59.若有如下程序:voids(char*m,intn){*m=*m+3;n=n+3;printf("%c,%c,",*m,n);}main(){charp='b',q='B';s(&q,p);printf("%c,%c\n",p,q);}则程序运行后的输出结果是()

A.E,e,b,EB.e,E,b,FC.E,e,e,ED.e,E,b,E

60.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

四、选择题(20题)61.设x=015,则x=x^017的值是()。A.00001111B.11111101C.00000010D.11000000

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

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

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

63.有以下程序:

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

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

64.有以下程序:

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

A.在给P和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B.由于P数组中没有字符串结束符,长度不能确定;但q数组中字符长度为3

C.由于q数组中没有字符串结束符,长度不能确定;但P数组中字符长度为3

D.由于P和q数组中没有字符串结束符,故长度都不能确定

65.

66.以下选项中可用做c程序合法实数的是()。、、

A.3.0e0.2B..1e0C.E9D.9.12E

67.一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为()。

A.16B.10C.6D.4

68.

69.

70.

71.

72.

73.以下不合法的字符常量是()。

A.

B.

C.

D.

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

A.m=6B.m=2C.m=4D.m=5

75.软件开发中需求分析的主要任务是()。

A.定义和描述目标系统“做什么”B.获取需求C.给出软件解决方案D.需求评审

76.

77.

78.设有定义:intx[2][3];,则以下关于二维数组X的叙述错误的是()。

A.x[0]可看做是由3个整型元素组成的一维数组

B.x[0]和x[l]是数组名,分别代表不同的地址常量

C.数组X包含6个元素

D.可以用语句x[o]=0;为数组所有元素赋初值0

79.数据流图中方框表示的是()。

A.数据流B.存储文件C.控制流D.源,潭

80.有以下程序段:

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

A.a=10b=50C=30

B.a=10b=50c=10

C.a=10b=30c=10

D.a=50b=30c:50

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用冒泡法对6个字符串进行升序排列。请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODIl.C中,不得增行或删行,也不得更改程序的结构!

六、程序设计题(1题)82.请编写函数voidproc(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶数、不为1的各整数,并按从大到小的顺序放在PP所指的数组中,这些除数的个数通过形参n返回。

例如,若x的值为30,则有3个数符合要求,它们是15,5,3。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

试题程序:

参考答案

1.C

2.C解析:字符串少一个结束标志,所以输出的结果不确定。

3.D解析:本题考核的知识点是在自加运算符的运算对象。自加运算对象可以是整型变量也可以是实型变量,但不能是表达式和常量。本题中,#defined2定义了d为常数2,不能在对d进行自加运算.故选项D是个不正确的语句,所以,4个选项中选项D符合题意。

4.B

5.Breturn语句又称为返回语句。该语句的格式如下:“return;”和“return(<表达式>);”。其中,return是关键字。该语句有两种格式:不带返回值格式和带返回值格式。该语句用在被调用函数中,在被调用函数中执行到该语句时,将结束对被调用函数的执行,并把控制权返回给调用函数,继续执行调用函数后边的语句。在带有返回值的情况下,将return语句所带的表达武的值返回给调用函数,作为被调用函数的值。在被调用函数中,可以用return语句,也可以不用return语句。如果要求被调用函数有返回值,则一定要用return语句,采用return(<表达式>);格式。如果被调用函数不需要返回值,并且当被调用函数的所有语句执行完后进行返回,则被调用函数可以不用return语句。

6.C解析:二叉树的遍历分为先序,中序、后序三种不同方式.本题要求先序遍历,其遍历顺序应该为:访问根结点->,先序遍历左子树->先序遍历右子树。按照定义,先序遍历序列是ABDECF,故答案为C。

7.D

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

9.D解析:数据库表中字段转化为属性,把记录的类型转化为关系模式。

10.D

\n全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序该变量是一个已在外部定义了的全局变量,这时全局变量的作用域从extern说明处起,延伸到该函数末尾。

\n

11.B

12.B

13.C解析:在格式化模型中,要事先根据应用的需要,确定数据之间的逻辑关系,即先对数据进行结构化。在关系模型中,不需要事先构造数据的逻辑关系,只要将数据按照一定的关系存入计算机,也就是建立关系。所以选项A错误。对于一个表示关系的二维表,其最基本的要求是表中元组的每一个分量必须是不可分的数据项,即不允许表中再有表。所以,选项B、D说法是错误的。一个关系的属性名表称为关系模式,也就是二维表的表框架,相当于记录型。因此,选项C说法正确。

14.B

15.B所谓常量,是指在程序运行的过程中,其值不能被改变的量。在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。选项A是字符串,需要使用双引号;选项C不是合法的常量形式;选项D为实型常量中的指数形式,但指数形式e(E)之前必须是数字,之后必须为整数。故本题答案为B选项。

16.B解析:条件表达式的形式为:“表达式1?表达式2:表达式3”。其含义为:当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值;当“表达式1”的值为零时,求出“表达式3”的值,此时“表达式3”的值就是整个条件表达式的值。对于本题来说,当表达式EXP为非0值时条件成立,即执行语句i++;当EXP等于0时,执行语句j--;这等同于条件表达式“(EXP!=0)?i++:i++;”。

17.C整型变量x、y的初值都为1,“x++,y++,++y”是一个逗号表达式,程序执行“z=x++,y++,++y”之后,x的值为2,y的值为3,z取逗号表达式中的第二个表达式的值,为1。因此本题的答案为选项C。

18.B选项A中,将二维数组a的6个元素都赋值为0,正确;选项B中,由于a包含2个元素,每个元素都是包含3个元素的一维数组,初始化列表中包含3个元素,每个元素是包含2个元素的数组,错误;选项C中,a的每个元素是包含3个元素的一维数组,初始化列表将a[0]的3个元素初始化为1,2,0,将a[1]的3个元素初始化为0,0,0,正确;选项D中,将a[0]初始化为1,2,3,将a[1]初始化为4,5,6,正确。本题答案为B选项。

19.C由于a小于b,所以所有选项中的条件都为假,c选项中实际执行了a=b;b=c;两个操作。而A、B、D选项由于条件不成立,所以什么也没有做,所以选择c选项。

20.A栈是限定只在一端进行插入与删除的线性表,按照“先进后出”或“后进先出”的原则组织数据。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。

21.(cosx)*(cosx)*(m+n)/(m-n)

22.x[i][i]x[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]解析:本题考核的知识点是函数与算法结合在一起的应用。在程序中用两重循环。在第一层循环中将每行的第0列赋值为1,对角线上的元素赋值为1显然在第一个空中应该填入对角线上的元素即x[i][i]在第2重循环中给每行其他元素赋值,而在每行中除了第0列和对角线的元素外其他元素为其对应的上一行中同列和同列的前一列的元素相加,所以在第二个空中应该填入x[i-1][j-1]+x[i-1][j]。

23.x+=1x+=1解析:本题考查'++'、'--'运算符。'++'、'--'只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增1或减1,后缀形式是先使用变量原来的值,使用完后再使其增1或减1。

24.n/=10或n=n/10n/=10或n=n/10解析:每次循环把n除以10所得的商赋给n。

25.相邻位置邻接指针相邻位置\r\n邻接指针

26.数据库管理系统数据库管理系统(DBMS)

27.AUTOEXEC.BAT

28.k=p;k=p;解析:为寻找数组中最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查通常从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k]更大时,应该用p更新k,所以在空框处应填入代码'k=p;'。

29.136136解析:本题考核的知识点是函数递归。主函数调用函数fun(6),由于6/2>0为真递归调用fun(3),接着递归调用fun(1),输出1,返回上一层输出3,在返回上一层输出6。故空格处应该填136。

30.s[i]!='\0'||t[i]!='\0's[i]=='\0'&&t[i]=='\0's[i]!='\\0'||t[i]!='\\0'\r\ns[i]=='\\0'&&t[i]=='\\0'

31.颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]位于str[j]的前面,即i<j字符串末元素的下标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和str[j],使用了变量k,该变量应在程序的变量定义部分中—起定义,所以在第—个空\r\n\r\n

32.gaga解析:考查了用字符指针处理字符串的方法。用字符指针处理字符串,首先要使指针指向这个字符串,即题中的ptr1=a和ptr2=b,然后就是通过指针的移动可以引用到字符串中的每一个字符。题中的*(ptr1+k)是使指针ptr1向后移动k个位置,然后取出指向的字符。

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

34.sizeof(structst)*50sizeof(structst)*50解析:fwrite函数的一般调用形式为:fwrite(buffer,size,count,fp);其中:buffer是一个指针变量,是要输出数据的起始地址;size是要写的字节数;count是要写多少个size字节的数据项;fp是文件指针。

35.1515解析:通过递归调用f函数实现了数组各元素之和,即a[4]+a[2]+a[1]+a[0]=15。

36.246

37.0i<=100;sum

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

39.1321,3,2解析:函数f的形参是简单变量,形参的改变不能影响实参,所以正确答案为1,3,2。

40.3131解析:在函数调用时,形参值和改变,不会改变实参的值。

41.B

42.A解析:C语言的字符常量是用单引号(即撇号)括起来的一个字符。除此之外,在C语言中还允许用一个'\\'开头的字符序列来表示字符常量。其中,形式'\\ddd'表示1到3位8进制数所代表的字符;形式'\\xhh'表示1到2位16进制数所代表的字符。在本题中,\'\\x13\'表示回车符,是一个字符常量;\'\\081\'用8进制数所代表的字符,但形式不正确,因为8进制数所代表的字符中不会出现数字'8';\'65\'不是一个字符,而是一个十进制数字;'\\n'是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。

43.A解析:选项A中(!a==1)&&(!b==0)→(!2==1)&&(!b==0)→(0==1)&&(!b==0)→0&&(!b==0)→0(&&右边表达式(!b==0)被“短路”):选项B中(a<b)&&!c||1→(2<3)&&!4||1→1&&0||1→0||1→1;选项C中a&&b→2&&3→1;选项Da||b+b)&&(c-a)→2||(b+b)&&(c-a)→1(||右边表达式(b+b)&&(c-a)被“短路”)。所以本题选A。

44.C解析:一个算法应该具有以下5个特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。因此一个算法可以没有输入(程序的功能确定),但必须要有输出,没有输出的算法是没有意义的。

45.D解析:结构体变量a与结构体成员a同名是合法的定义,引用成员a的方法是a.a,变量a处于不同的“层次”上,系统完全能够分情。st是—个结构体名,不会为结构体名分配存储空间,应该是在运行时为结构体变量a分配6个字节的存储单元,故选项B和选项C错误。

46.C解析:本题考核的知识点是二维数组的定义,赋值及数组元素的引用。变量k的初值为2,循环执行了3次,分别输出m[2][0]、m[2][1]和m[2][2],其值分别为3,6,9。所以,C选项为所选。

47.C解析:这是一个逗号表达式,它的值应为表达式y=x+3/2的值,而前一个表达式已给x赋值1,在没有进行类型转换的情况下,3/2的值为1,所以x+3/2的值应为2.0。

48.A

49.B

50.D解析:主函数中首先定义了整型变量m、n和x,并给m和n赋初值为3和4,接着执行两条赋值语句,第一条x=-m++等价于x=-(m++),其值即为-3,第二条x=x+8/++n等价于x=x+8/(++n),即为x=-3+8/5=-2,因此最后输出x的值为-2。

51.B解析:对于函数体中的语句b+=*a;其中的“*”是指针运算符,*a就是main函数中变量a的值。

52.D

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

54.C解析:C语言规定,只要在定义函数时不进行存储类型的显式说明,函数的存储类型就隐含为外部类型,即extern型,外部类型允许其他文件中的函数调用。

55.D软件开发离不开系统环境资源的支持,其中主要的资源有硬件资源、通信资源、辅助资源等。(1)硬件资源是指组成计算机及相关应用所需要的硬件,它是软件开发必不可少的资源,因为无论什么样的软件工具都需要在硬件上完成任务,它是其他资源的基础资源。(2)通信资源是指为软件开发提供通信支撑的资源,它与测试数据无关。(3)支持软件是指为软件开发提供操作平台的软件,如常用的面向对象开发的Rose软件,它主要是软件开发的工具。通过对上述分析的总结,可以知道本题的正确答案选D。

56.C解析:程序中没有使用break终止switch语句的执行。当i:0时,执行第一个case语句,因为它后面没有break,所以一直到执行完default语句结束,输出3个0,再执行下一循环。所以只有选项C)正确。

57.B解析:main函数通常可用两个参数,参数名可由用户自定,但类型是固定的,第一个参数必须是整型,第二个参数是一个指向字符型的指针数组的指针,可以表示为**arc或*argc[]。4个选项中只有选项B不符合。

58.D解析:在C语言格式字符的输出中,“%d”是以带符号的十进制形式输出整数;“%60”是以8进制无符号形式输出整数(不输出前导符o);“%x”是以16进制无符号形式输出整数(不输出前导符Ox)。

59.A

60.D解析:在格式输入中,要求给出的是编译的地址,而D)答案中给出的s[1]是一个值的表达式。

61.C

\n本题考查按位异或运算,异或就是相同为0,不同为1(化为二进制00001101),017的二进制为000001111,两者异或结果为00000010。

\n

62.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。

63.B第一次执行外循环i的值为1,满足条件,判断第一次内循环,j的值为3,不满足条件,跳出内循环。第二次执行外循环i的值为2,同理也不满足内循环条件,跳出内循环。第三次执行外循环i的值为3,此时进入内循环判断条件时,条件成立,执行m=m%j,m的值为1,跳出内循环,跳出外循环打印m的值。

64.B本题考查的是库函数的调用。Stden

65.D

66.BA选项中e后面的指数必须为整数,所以错误。C语言规定,E之前必须要有数字,所以c选项错误。E后面必须要有数字,且必须为整数,所以D选项错误。

67.A【答案】:A【知识点】:二叉树的性质

【解析】:由二叉树的性质3可知,度为0的结点数(即叶子结点数)=度为2的结点数+1。题目中给出叶子结点数为5个,利用性质3可计算出度为2的结点数为4个。在二叉树只有三种结点:度为0的、度为1的、度为2的,总数为25个,所以度为1的结点数即为25-5-4=16个,所以答案为A。

68.A

69.A

70.B

71.A

72.D\r\n

73.B在c语言中,用单引号扩起来的一个字符表示字符常量,转义字符由反斜扛”\”+特定字符组成。选项B)表示是8进制数码,出现8属于非法字符,所以正确答案是选项B)

74.A第一次外循环i的值为l,第一次内循环j的值为3,不满足条件,则执行m*=i*j,即m的值为3;第二次j的值为2,不满足条件,则执行m+=i+j,即m的值为6;第三次j的值为1,不满足条件,则执行m*=i*j,即m的值仍为6。第二次外循环i的值为2,j的值为3,满足条件,执行break语句,跳出循环。故本题答案为A)。

75.A需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求规格说明书和需求评审。需求分析的任务是发现需求、求精、建模和定义需求的过程,是描述“做什么”的软件开发阶段。故选A选项。

76.B

77.A

78.Dx[0]是不能赋值的。

79.D数据流图是描述数据处理过程的工具,\n它从数据传递和加工的角度,来刻画数据流从输入到输出的变化过程。数据流图中的主要图形元素有:圆形,表示加工;箭头,表示数据流;双杠,表示存储文件;方框,表示源、潭。

80.B本题中a>b的条件不满足,所以不执行逗号表达式a=b,b=c;的操作,而是执行c=a操作,即c的值勾10。

81.

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

(2)*(pstr+i)=}(pstr+j);

【考点分析】

本题考查:冒泡排序算法;for循环语句格式;指针数组。

【解题思路】

(1)此处考查for语句的格式,各表达式之间应用“;”隔开。

(2)此处考查用指针表示数组元素的方法,}(pstr+I)表示pstr所指向数组的第1个元素,同理}(pstr+j)表示pstr所指向数组的第j个元素。

【解题宝典】

冒泡排序算法,其基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。依次类推,完成排序。

用代码实现数组s[N]的升序排列为:for(i=0;i<N;i++)

for(j=i十1;j<N;j++)

if(s[i]>s[j]){t-s[i];s[i]=s[j]s[j]=t;}

82.

【解析】按照题目中要求,求出能整除x且不是偶数的各整数。首先判断小于等于整数x的所有奇数是否能被x整除,将能被x整除的奇数放入数组pp中。最后将数组pp中元素的个数返回到主函数中。

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

一、单选题(20题)1.下面不正确的字符赋值或赋初值的方式为()。

A.chars[10]=”hello!”

B.chars[10]={‘h’,‘e’,‘l’,‘l’,‘o’,‘!’}

C.chars[10];s=”hello”

D.char[]=”hello!”

2.下面程序的输出结果是main(){charstr[10],c='a';inti=0;for(;i<5;i++)str[i]=c++;printf("%s",str);}

A.abcdeB.aC.不确定D.bcdef

3.设有以下定义:inta=0;doubleb=1.25;charc='A';#defined2则下面语句中错误的是()。

A.a++;B.b++;C.c++;D.d++;

4.定义根节点深度为1,有n个元素的完全二叉树的深度是()

A.D(n)=log2(n)

B.D(n)=1+log2(n)

C.D(n)=n+log2(n)

D.D(n)=1+n*log2(n)

5.以下关于return语句的叙述中正确的是()。

A.一个自定义函数中必须有一条return语句

B.一个白定义函数中可以根据不同情况设置多条return语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

6.设有下列二叉树:

对此二叉树先序遍历的结果为

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

7.在排序方法中,元素比较次数与元素的初始排列无关的是()

A.Shell排序B.归并排序C.直接插入排序D.选择排序

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

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

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

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

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

9.在关系数据模型中,通常可以把()称为属性,其值称为属性值。

A.记录B.基本表C.模式D.字段

10.在一个C语言源程序文件中所定义的全局变量,其作用域为()。

A.所在文件的全部范围B.所在程序的全部范围C.所在函数的全部范围D.由具体定义位置和extern说明来决定范围

11.

12.在具有101个元素的顺序表中查找值为x的元素结点时,平均比较元素的次数为()。

A.50B.51C.100D.101

13.下列叙述中正确的是A.为了建立一个关系,首先要构造数据的逻辑关系

B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项

C.一个关系的属性名表称为关系模式

D.一个关系可以包括多个二维表

14.

15.以下选项中合法的C语言常量是()。

A.‘C-STR’B.2014.1C.”\1.0D.2EK

16.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

17.有以下程序:Main(){{intx,y,z;x=y=1;z=x++,y++,++y;print(“%d,%d,%d”,x,y,z);}程序运行后的输出结果是()。A.2,3,3B.2.3.2C.2,3.1D.2.2.1

18.以下不能对二维数组a进行正确初始化的语句是()。A.inta[2][3]={0};

B.inta[2][3]={{1,2},{3,4},{5,6}};

C.inta[][3]={{1,2},{0}};

D.inta[][3]={1,2,3,4,5,6};

19.设有定义:

inta=1,b=2,C=3;

以下语句中执行效果与其他三个不同的是()。

A.if(a>B.C=a,a=b,b=C;

B.if(a>B.{C=a,a=b,b=C;}

C.if(a>B.C=a;a=b;b=c;

D.if(a>B.{C=a;a=b;b=c;}

20.下列关于栈叙述正确的是A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.以上三种说法都不对

二、2.填空题(20题)21.把数学表达式改写成C语言的表达式是【】。

22.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下

1

11

121

1331

14641

其构成规律是:

(1)第0列元素和主对角线元素均为1

(2)其余元素为其左卜方和正上方元素之和

(3)数据的个数每行递增1

请将程序补充完整。

#defineN6

voidyanghui(intx[N][N])

{inti,j;

x[0][0]=1;

for(i=1;j<N;i++)

{x[i][0]=______=1;

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

x[i][j]=______;

}

}

23.语句:x++;++x;x=1/x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。

24.以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135则输出531。请填空。

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

25.性表的顺序存储中,元素之间的逻辑关系是通过【】决定的;性表的链接存储中,元素之间的逻辑关系是通过【】决定的。

26.数据库系统中实现各种数据管理功能的核心软件称为【】。

27.自动批处理文件名必须是【】。

28.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

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

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

30.函数compare的功能是比较两个字符串是否相等,若相等则函数返回值0,否则返回值1,请填空。

compare(chars[],chart[])

{inti=0;

while(s[i]==t[i]||【】)i++;

return(【】?1:0);

}

31.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{infi,j,[13];charstr[]={"1234567"};

for(i=0,j=strlen(str)[14];i<j;i++,j--)

{k=str[i];str[i]=str[i];str[j]=k;}

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

32.下面程序的输出结果是【】。

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptr1=a,*ptr2=b;

intk;

for(k=0;k<7;k++)

if(*(ptr1+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

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

34.设有以下结构体类型:

structst

{charname[8];

intnum;

floats[4];

}student[50];

并且结构体数组student中的元素都已有值。若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:

fwrite(student,【】,1,fp);

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

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

}

main()

{intaa[5]={1,2,3,4,5),s;

s=f(aa,5);printf("%d\n",s);

}

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

voidfun()

{staticinta=0;

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

}

main()

{intcc;

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

printf("\n");

}

37.用以下程序计算1到100的整数的累加和。请填空。

main()

{inti,sum=【】;

i=1;

for(【】)

{sum+=j

i++;

}

printf("sum=%d\n",【】);

}

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

39.有以下程序:

voidf(intv,intw)

{intt;

t=v;v=w;w=t;

}

main()

{intx=1,y=3,z=2

if(x>y)f(x,y);

elseif(y>z)f(y,z);

elsef(x,z);

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

}

执行后的输出结果是【】。

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

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

三、1.选择题(20题)41.以下程序的输出结果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20

42.以下合法的字符型常量是

A.′\x13′B.′\081′C.′65′D.\n

43.设有定义inta=2,b=3,c=4;,则以下选项中值为0的表达式是______。A.(!a==1&&(!b==0)

B.(a<b)&&!c||1

C.a&&b

D.a||(b+b)&&(c-a)

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

A.用C语言实现的算法必须要有输入和输出操作

B.用C语言实现的算法可以没有输出但必须要有输入

C.用C语言程序实现的算法可以没有输入但必须要有输出

D.用C语言程序实现的算法可以既没有输入也没有输出

45.若有如下说明,则______的叙述是正确的。structst{inta;intb[2];}a;

A.结构体变量a与结构体成员a同名,定义是非法的

B.程序只在执行到该定义时才为结构体st分配存储单元

C.程序运行时为结构体st分配6个字节存储单元

D.类型名structst可以通过extern关键字提前引用(即引用在前,说明在后)

46.有以下程序main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}执行后输出结果是

A.456B.258C.369D.789

47.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是()A.1B.2C.2.0D.2.5

48.以下程序中C的二进制值是()。chara=2,b=4,c;c=a^b>>2

A.11B.10100C.111100D.000l1000

49.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d':ss(str1,C);printf("%s\n",str1);}程序运行后的输出结果是()

A.ABCDDEFEGDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

50.有以下程序main(){ihtm=3,n=r,x;x=-m++;X=x+8/++n;printf("%d\n",x);}程序运行后的输出结果是

A.3B.5C.-1D.-2

51.下列程序的输出结果是()。#include<stdio.h>intb=2;intfunc(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&a);printf("%d\n",res);}

A.4B.6C.8D.10

52.假定w,x,y,z和m均为int型变量,有如下程序段:w=1;x=2,y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m(m<2)?m:2;则该程序段执行后,m的值为()

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

53.运行下面程序时,从键盘输入字母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

54.在C语言中,函数的隐含存储类别是______。

A.autoB.staticC.externD.无存储类别

55.软件开发离不开系统环境资源的支持,其中必要的测试数据属于A.硬件资源B.通信资源C.支持软件D.辅助资源

56.有以下程序:#include<stdio.h>main()inti;for(i=0;i<3;i++)switch(i)case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);程序运行后的输出结果是()。

A.22111B.21021C.122D.12

57.下列属于不合法的main函数命令行参数表示形式的是()。

A.main(intargv,char*argc[])

B.main(intargv,char*argc)

C.main(intargv,char**arc)

D.main(intargc,char*argv[])

58.下面程序的输出是______。main(){intk=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}

A.k=11,k=12,k=11

B.k=11,k=13,k=13

C.k=11,k=013,k=0xb

D.k=11,k=13,k=B

59.若有如下程序:voids(char*m,intn){*m=*m+3;n=n+3;printf("%c,%c,",*m,n);}main(){charp='b',q='B';s(&q,p);printf("%c,%c\n",p,q);}则程序运行后的输出结果是()

A.E,e,b,EB.e,E,b,FC.E,e,e,ED.e,E,b,E

60.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

四、选择题(20题)61.设x=015,则x=x^017的值是()。A.00001111B.11111101C.00000010D.11000000

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

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

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

63.有以下程序:

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

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

64.有以下程序:

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

A.在给P和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B.由于P数组中没有字符串结束符,长度不能确定;但q数组中字符长度为3

C.由于q数组中没有字符串结束符,长度不能确定;但P数组中字符长度为3

D.由于P和q数组中没有字符串结束符,故长度都不能确定

65.

66.以下选项中可用做c程序合法实数的是()。、、

A.3.0e0.2B..1e0C.E9D.9.12E

67.一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为()。

A.16B.10C.6D.4

68.

69.

70.

71.

72.

73.以下不合法的字符常量是()。

A.

B.

C.

D.

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

A.m=6B.m=2C.m=4D.m=5

75.软件开发中需求分析的主要任务是()。

A.定义和描述目标系统“做什么”B.获取需求C.给出软件解决方案D.需求评审

76.

77.

78.设有定义:intx[2][3];,则以下关于二维数组X的叙述错误的是()。

A.x[0]可看做是由3个整型元素组成的一维数组

B.x[0]和x[l]是数组名,分别代表不同的地址常量

C.数组X包含6个元素

D.可以用语句x[o]=0;为数组所有元素赋初值0

79.数据流图中方框表示的是()。

A.数据流B.存储文件C.控制流D.源,潭

80.有以下程序段:

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

A.a=10b=50C=30

B.a=10b=50c=10

C.a=10b=30c=10

D.a=50b=30c:50

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用冒泡法对6个字符串进行升序排列。请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODIl.C中,不得增行或删行,也不得更改程序的结构!

六、程序设计题(1题)82.请编写函数voidproc(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶数、不为1的各整数,并按从大到小的顺序放在PP所指的数组中,这些除数的个数通过形参n返回。

例如,若x的值为30,则有3个数符合要求,它们是15,5,3。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

试题程序:

参考答案

1.C

2.C解析:字符串少一个结束标志,所以输出的结果不确定。

3.D解析:本题考核的知识点是在自加运算符的运算对象。自加运算对象可以是整型变量也可以是实型变量,但不能是表达式和常量。本题中,#defined2定义了d为常数2,不能在对d进行自加运算.故选项D是个不正确的语句,所以,4个选项中选项D符合题意。

4.B

5.Breturn语句又称为返回语句。该语句的格式如下:“return;”和“return(<表达式>);”。其中,return是关键字。该语句有两种格式:不带返回值格式和带返回值格式。该语句用在被调用函数中,在被调用函数中执行到该语句时,将结束对被调用函数的执行,并把控制权返回给调用函数,继续执行调用函数后边的语句。在带有返回值的情况下,将return语句所带的表达武的值返回给调用函数,作为被调用函数的值。在被调用函数中,可以用return语句,也可以不用return语句。如果要求被调用函数有返回值,则一定要用return语句,采用return(<表达式>);格式。如果被调用函数不需要返回值,并且当被调用函数的所有语句执行完后进行返回,则被调用函数可以不用return语句。

6.C解析:二叉树的遍历分为先序,中序、后序三种不同方式.本题要求先序遍历,其遍历顺序应该为:访问根结点->,先序遍历左子树->先序遍历右子树。按照定义,先序遍历序列是ABDECF,故答案为C。

7.D

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

9.D解析:数据库表中字段转化为属性,把记录的类型转化为关系模式。

10.D

\n全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序该变量是一个已在外部定义了的全局变量,这时全局变量的作用域从extern说明处起,延伸到该函数末尾。

\n

11.B

12.B

13.C解析:在格式化模型中,要事先根据应用的需要,确定数据之间的逻辑关系,即先对数据进行结构化。在关系模型中,不需要事先构造数据的逻辑关系,只要将数据按照一定的关系存入计算机,也就是建立关系。所以选项A错误。对于一个表示关系的二维表,其最基本的要求是表中元组的每一个分量必须是不可分的数据项,即不允许表中再有表。所以,选项B、D说法是错误的。一个关系的属性名表称为关系模式,也就是二维表的表框架,相当于记录型。因此,选项C说法正确。

14.B

15.B所谓常量,是指在程序运行的过程中,其值不能被改变的量。在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。选项A是字符串,需要使用双引号;选项C不是合法的常量形式;选项D为实型常量中的指数形式,但指数形式e(E)之前必须是数字,之后必须为整数。故本题答案为B选项。

16.B解析:条件表达式的形式为:“表达式1?表达式2:表达式3”。其含义为:当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值;当“表达式1”的值为零时,求出“表达式3”的值,此时“表达式3”的值就是整个条件表达式的值。对于本题来说,当表达式EXP为非0值时条件成立,即执行语句i++;当EXP等于0时,执行语句j--;这等同于条件表达式“(EXP!=0)?i++:i++;”。

17.C整型变量x、y的初值都为1,“x++,y++,++y”是一个逗号表达式,程序执行“z=x++,y++,++y”之后,x的值为2,y的值为3,z取逗号表达式中的第二个表达式的值,为1。因此本题的答案为选项C。

18.B选项A中,将二维数组a的6个元素都赋值为0,正确;选项B中,由于a包含2个元素,每个元素都是包含3个元素的一维数组,初始化列表中包含3个元素,每个元素是包含2个元素的数组,错误;选项C中,a的每个元素是包含3个元素的一维数组,初始化列表将a[0]的3个元素初始化为1,2,0,将a[1]的3个元素初始化为0,0,0,正确;选项D中,将a[0]初始化为1,2,3,将a[1]初始化为4,5,6,正确。本题答案为B选项。

19.C由于a小于b,所以所有选项中的条件都为假,c选项中实际执行了a=b;b=c;两个操作。而A、B、D选项由于条件不成立,所以什么也没有做,所以选择c选项。

20.A栈是限定只在一端进行插入与删除的线性表,按照“先进后出”或“后进先出”的原则组织数据。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。

21.(cosx)*(cosx)*(m+n)/(m-n)

22.x[i][i]x[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]解析:本题考核的知识点是函数与算法结合在一起的应用。在程序中用两重循环。在第一层循环中将每行的第0列赋值为1,对角线上的元素赋值为1显然在第一个空中应该填入对角线上的元素即x[i][i]在第2重循环中给每行其他元素赋值,而在每行中除了第0列和对角线的元素外其他元素为其对应的上一行中同列和同列的前一列的元素相加,所以在第二个空中应该填入x[i-1][j-1]+x[i-1][j]。

23.x+=1x+=1解析:本题考查'++'、'--'运算符。'++'

温馨提示

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

评论

0/150

提交评论