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

下载本文档

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

文档简介

2021年河南省濮阳市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若有以下说明和定义:则对函数fun的正确调用语句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);

2.下列定义数组的语句中,正确的是()。

A.intN=10;intx[N]:

B.#defineNl0;intx[N];

C.intx[0..10];

D.intx[];

3.在含有n个项点有e条边的无向图的邻接矩阵中,零元素的个数为________。

A.eB.2e9C.n2-eD.n2-2e

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

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

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

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

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

5.有以下程序段:main(){intx[M][N];...Arrlet(x);...}则作为函数Arrlet的形参,以下表示形式非法的是()。

A.intx[M][]B.int(*x)[N]C.intx[][N]D.intx[M][N]

6.下列各排序法中,最坏情况下的时间复杂度最低的是()

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

7.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。

A.模拟现实世界中不同事物之间的联系

B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题

D.不强调模拟现实世界中的算法而强调概念

8.判断char型变量c1是否为小写字母的正确表达式为()。

A.'a'<=c1<='Z'

B.(c1>=A)‖c1<=z)

C.('a'=>c1‖("z"<=c1)

D.(c1>='a')&&(c1<='z')

9.字符(char)型数据在微内存中的存储形式是______。

A.反码B.补码C.EBCDIC码D.ASCII码

10.有以下程序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i+=2)for(j=i+2;j<n;j+=2)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);for(i=0;i<10;i++)printf("%d.",aa[i]);printf("\n");}其输出结果是()。

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

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

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

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

11.执行以下程序后,a,b的值分别为main(){ina,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}

A.-1,5B.1,6C.0,7D.4,10

12.具有20个结点的二叉树,其深度最多为_______。

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

13.

14.

15.

16.待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第()个位置。

A.3B.5C.7D.9

17.按照“先进先出”组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

18.

19.已知广义表:A=(a,b),B=(A,A),C=(a,(b,A),B),tail(head(tail(C)))的运算结果是()。

A.(a)B.AC.aD.(A)

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

B.操作数除以2

C.操作数除以4

D.操作数乘以4

二、2.填空题(20题)21.下面程序的运行结果是:【】。

typedefunionstudent

{charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{STUa[5];

Printf(“%d\n”,sizeof(a));

}

22.在算法的4个特性中,算法必须能在执行有限个步骤之后终止指的是算法的______特性。

23.对于图书管理数据库,将图书表中"人民邮电出版社"的图书的单价涨价5%。请对下面的SQL语句填空:UPDATE图书【】WHERE出版单位="人民邮电出版社"

24.调用C语言标准库函数时要求用【】命令。

25.在面向对象方法中,对象之间进行通信的构造称为()。

26.表示条件:10<x<100或x<0的C语言表达式【】。

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

28.源程序文档化要求程序应加注释。注释一般分为序言性注释和【】。

29.若x为int类型,请写出与!x等价的C语言表达式______。

30.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));}

31.有以下程序

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

执行后输出结果是【】。

32.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。

33.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

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

printf("%x\n,p+9);

}

34.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。

35.若变量n中的值为24,则print函数共输出【】行,最后一行有【】个数。

voidprint(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if(!(i%5))

printf("\n");

}

printf("\n");

}

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

fun(intx,inty,intz)

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

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

37.以下程序从终端输入一行字符放在s数组中,输入以回车符作为结束,函数fun统计存放在s数组中每个数字字符的个数。形参ch指向s数组,形参n给出了s数组中字符的个数。在acc数组中用下标为0的元素统计字符“0”的个数,下标为1的元素统计字符“1”的个数,…。请填空。

#include<stdio.h>

voidfun(int*,char*,int);

main()

{chars[80],c;intacc[10],i=0;

printf("Entercharacters:\n");

while((c=getchar())!='\n')s[【】]=c;

fun(【】);

for(i=0;i<10;i++)printf("%c:%d\n",'0'+i,acc[i]);

printf("\n\n");

}

voidfun(int*a,char*ch,intn)

{inti,d;

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

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

{d=【】;a[d]++;}

}

38.阅读下面程序段,则执行后输出的结果是【】。

#include"stdio.h"

main()

{charfun(char,int);

chara=′A′;

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

39.与结构化需求分析方法相对应的是【】方法。

40.请读程序片段:

inta=17;

printf("%d,%o\n",a,a);

以上程序片段的输出结果是【】。

三、1.选择题(20题)41.为了避免嵌套的if-else的二义性,C语言规定:else与______配对。

A.缩排位置相同的ifB.其之前最近的ifC.其之后最近的ifD.同一行上的if

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

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

43.以下程序的输出结果是unionmyun{struct{intx,y,z;}u;intk;}a;main(){a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf("%d\n",a.u.x);}

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

44.以下不是网络操作系统的是()

A.Windows3.1B.WindowsNTC.NetWareD.UNIX

45.执行下面程序段的结果是()。intx=23;do{printf("%2d",x--);}while(!x);

A.输出321B.输出23C.不输出任何内容D.陷入死循环

46.有以下程序:main(){chara='a',b;printf("%c,",++a);printf("%c\n",b=a++);程序运行后的输出结果是______。

A.b,bB.a,bC.b,cD.a,c

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

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

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

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

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

48.执行以下程序段时,输出结果为()。doublea;a=333.721568;printf("%-62e\n",a);

A.输出格式描述符的域宽不够,不能输出B.33.721568e+01C.3.3e+02D.-3.33e2

49.有以下函数定义:intfun(doublea,doubleB){returna*b;}若以下选项中所用变量都已正确定义并赋值,错误的函数调用是()。

A.if(fun(x,y)){……}

B.z=fun(fun(x,y),fun(x,y));

C.z=fun(fun(x,y)x,y);

D.fun(x,y);

50.设q1和q2是指向一个float型一维数组的指针变量,k为float型变量,则不能正确执行的语句是()。

A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);

51.下面程序的运行结果是()。#include<stdio.h>main(){staticchara[]="Languagef",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}

A.gaeB.gaC.LanguageD.有语法错

52.有以下程序main(){intc=35;printf("%d\n",c&c);}程序运行后的输出结果是______。

A.0B.70C.35D.1

53.下述关于数据库系统的叙述中,正确的是()。

A.数据库系统减少了数据冗余

B.数据库系统避免了一切冗余

C.数据库系统中数据的一致性是指数据类型一致

D.数据库系统比文件系统能管理更多的数据

54.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。

A.函数的实参和其对应的形参共占同一存储单元

B.形参只是形式上的存在,不占用具体存储单元

C.同名的实参和形参占同一存储单元

D.函数的形参和实参分别占用不同的存储单元

55.设有以下语句

charx=3,y=6,z;

z=x^y<<2;

则z的二进制值是

A.00010100B.00011011C.00011100D.00011000

56.有下列程序:

fun(intx)

{intp;

if(x==0‖x==1)return(3);

p=x-fun(x-2);

returnp;

}

main()

{printf("%d\n",fun(7));}

执行后的输出结果是()。

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

57.下列程序的输出结果是______。main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}

A.非法B.a[4]的地址C.5D.3

58.有以下程序

intadd(inta,intb){return(a+b);}

main()

{intk,(*f)(),a=5,b=10;

f=add;

}

则以下函数调用语句错误的是A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);

59.程序设计方法要求在程序设计过程中,()。

A.先编制出程序,经调试使程序运行结果正确后再画出程序的流程图

B.先编制出程序,经调试使程序运行结果正确后再在程序中的适当位置处加注释

C.先画出流程图,再根据流程图编制出程序,最后经调试使程序运行结果正确后再在程序中的适当位置处加注释

D.以上3种说法都不对

60.有以下程序:#include<stdio.h>floatf1(floatn){returnn*n;}floatf2(floatn){return2*n;}main(){float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;p1=f1;p2=f2;y1=p2(p1(2.0));t=p1;p1=p2;p2=t;y2=p2(p1(2.0));prinff("%3.0f,%3.Of\n",y1,y2);}程序运行后的输出结果是()。

A.8,16B.8,8C.16,16D.4,8

四、选择题(20题)61.

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

main

{charst[20]="hello\0\t\\\";

printf("%d%d\n",strlen(st).sizeof(st));

}

A.99B.520C.1320D.2020

62.有以下程序:

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

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

63.(3)在一棵二叉树上第5层的结点数最多是______。

A.8

B.16

C.32

D.15

64.设有定义:

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

A.data2=(2,6);

B.data2=datal;

C.data;real=datal.real;

D.data2.real=datal.unreal;

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

A.y=一1B.y=oC.y=1D.while构成无限循环

66.有如下程序段

int*p,a=10,b=1;

p=&a;a=*p+b;

执行该程序段后,a的值为

A.12B.10C.11D.编译出错

67.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}执行后的输出结果是()。A.6B.7C.8D.9

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

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

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

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

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

69.若变量已正确定义,有以下程序段其输出结果是()。

A.0,1B.0,0C.1,1D.程序进入无限循环

70.设有说明double(*p1)[N];其中标识符p1是()。

A.N个指向double型变量的指针。

B.指向N个double型变量的函数指针。

C.一个指向由N个double型元素组成的一维数组的指针。

D.具有N个指针元素的一维指针数组,每个元素都只能指向double型量。

71.有以下程序:

voidswap(char*x,char*y)

{chart;

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

}

main

{char*s1="abe",*s2="123":

swap(s1,s2);

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

}

程序执行后的输出结果是()。A.A.123,abeB.abc.123C.1bc,a23D.321,cba

72.

73.(70)需求分析阶段的任务是确定()

A.软件开发方法

B.软件开发工具

C.软件开发费用

D.软件系统功能

74.软件按功能可以分为:应用软件、系统软件和支撑软件(工具软件)。下面属于应用软件的是().

A.编译程序B.操作系统C.教务管理系统D.汇编程序

75.结构化程序设计的3种结构是()。

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

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

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

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

76.(23)在深度为5的满二叉树中,叶子结点的个数为______。

A.32

B.31

C.16

D.15

77.

78.有以下程序执行程序时,给变量X输入l0,程序的输出结果是()。

A.55B.54C.65D.45

79.有以下说明和定义语句

structstudent

{

intage;charnum[8];

};

structstudentstu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}};

structstudent*p=stu;

以下选项中引用结构体变量成员的表达式错误的是

A.(p++)->numB.p->numC.(*p).numD.stu[3].age

80.

有下列程序:

voidsort(inta[],intn)

{inti,j,t;

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

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

if(a[i]<a[j]){t=a[i];a[i]一a[j];a[j]=t;}

}

main

{intaa[10]:{1,2,3,4,5,6,7,8,9,10),i;

sort(aa+2,5);

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

printf("\n");

}

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

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

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

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

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

五、程序改错题(1题)81.下列给定程序中,proc()函数的功能是:根据形参m,计算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若输入10,则应输出2.928968。请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

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

参考答案

1.A题干中,函数fun接收一个整型指针参数,返回值为int类型。main函数首先定义一个函数指针a,将函数fun的地址赋给a,所以a是指向函数fun的指针,可以通过a调用函数fun。选项A中,通过a调用函数fun,可以使用(*a),接收的参数是整型变量c的地址,正确;选项B中,参数x是一个数组,错误;选项C中,调用b函数,由于程序没有给出函数b的定义,因此这里调用b是错误的,而且函数b是没有参数的,这里调用b的时候传入了参数,所以C错误;选项D中,由于b是一个函数,不能作为整型指针变量传给fun函数,因此D错误。本题答案为A选项。

2.D选项A、B中n为变量,C语言中不允许动态定义数组维数,即维数不能是变量。选项C无此语法。

3.D

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

5.AC语言规定二维数组作为实参传递时,形参必须要指明二维数组的列数,否则函数内无法识别数组的宽度,行数提供没有任何作用。“(*x)[N]”与“x[][N]”以及“x[M][N]”效果一样。通过排除法选择A选项。故本题答案为A选项。

6.C

7.C\n面向对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。

\n

8.D解析:C语言规定,字符常量在程序中要用单引号括起来。判断c1是否为小写字母的充要条件c1>='a'和c1<='z',用逻辑与(&&)来表示。A选项的这种形式在C语言中没有,所以选项D)正确.

9.D解析:将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。

10.C解析:sort函数的功能实际上是对数组中奇数位置上的数进行从大到小排序。排序后的结果应该为9,2,7,4,5,6,3,8,1,10。

11.C解析:inta,b,k=4,m=6,*p1=&k,*p2=&m;声明整型变量a,b,k,m和指针p1,p2,并分别将4和6赋给k和m,将k和m的地址赋给P1和p2;a=p1==&m;等价于a=(p1==&m);将p1是否等于地址m的值(0)赋给变量a,b=(*p1)/(*p2)+7;该句的含义是将后面表达式的的值7赋给变量b。

12.D

13.D

14.B

15.A

16.BB.【解析】快速排序的基本思想是:从表中选取一个元素(如本题中的33),将表中小于此元素的移到前面,大于此元素的移到后面,结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表再次分割……本题中33作为分割的中界线,第一趟排序后排在比它小的18、9、25、12后面。

17.A队列是一种特殊的线性表,只允许在表的一端插八元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”。先插入的元素先被删除,是按“先进先出”的原则组织数据的。

【知识拓展】“队列”和“栈”都是一种特殊的线性表。之所以称之为“队列”,其形式如“排队”。要讲究“先来后到”,先进先出,后进后出。

18.B

19.D

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

21.8080解析:数组a是共用体变量,共用体类型变量所占的内存长度为最大成员的长度,即单精度数组的长度,为4×4=16,因此,数组a所占的内存长度为5×16=80,所以最后输出的s的值为80。

22.有穷性有穷性解析:算法的4个基本特性包括:可靠性、确定性、有穷性和拥有足够的情报,其中,算法的有穷性指的是算法必须在有限的时间内完成,即算法必须在执行有限个步骤之后终止。

23.SET单价=单价*1.05SET单价=单价*1.05解析:更新表中元组的值,使用UPDATE命令,一次可以更新表中的一个或多个属性值。UPDATE短语之后指定更新数据所属的表,将新的属性值或表达式赋值给对应的属性名(SET单价=单价*1.05),并置于SET短语之后。要求对人民邮电出版社的图书涨5%,需要用WHERE短语对元组进行限制,即对符合条件的元组进行更新。

24.includeinclude解析:include命令可调用标准的C语言库函数,可以用一对尖括号或一对双引号将“.h”文件括起来,在include前面要加“#”。

25.消息消息解析:对象之间进行通信的构造叫做消息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

26.(X>10&&x<100)||x<0或(10<x&&x<100)||x<0或x<0||(x>10&&x<100)或0>x||(10<x&&x<100)或(括号有无都可以)(X>10&&x<100)||x<0\r\n\u3000\u3000或(10<x&&x<100)||x<0或x<0||(x>10&&x<100)\r\n\u3000\u3000或0>x||(10<x&&x<100)或(括号有无都可以)

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

28.功能性注释功能性注释解析:注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,它给出程序的整体说明;功能性注释的位置一般嵌在源程序体之中户主要描述其后的语句或程序做什么。

29.x==0x==0解析:!x的逻辑意思就是x为非,即x==0。

30.structst或exstructst或ex解析:结构体类型数据,其数据成员各自占据不同的存储空间,整个结构体变量所占存储单元的字节数为每一个数据成员所占的存储空间的和。注意:共用体变量所占存储单元字节数的计算。

31.-4-4解析:if…else构造了一种二路分支选择,是一种最基本的选择结构,if(条件)S1(if分结构)elseS2(else分结构),它的工作过程是:先对条件表达式进行判断,若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行else分结构(S2)。本题中,n=0,可以判断(!n)为真,执行x=x-1=2-1=1;m=1,可以判断(m)为真,执行x=x-2=1-2=-1进而可以判断(x)为真,执行x=x-3=-1-3=-4。

32.完整性控制完整性控制

33.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。

34.x<z‖y<zx<z‖y<z解析:本题考查逻辑运算符和逻辑表达式。x或y中至少有一个小于z,即x<z或y<z,是“或”的关系。

35.54

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

37.i++accsi0ch[i]-'0'

38.NN解析:函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符'A'的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。

39.结构化设计结构化设计解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。

40.1721

41.B解析:在if语句中又包含—个或多个if语句称为if语句的嵌套。应当注意if与else的配对关系,在C语言中,从最内层开始,else总是与它上面最近的(未曾配对的)if配对。

42.B解析:012是八进制数,转换成十进制为10,12&10转换成二进制为00001100&00001010=00001000,00001000转换成十进制为8。

43.D解析:本题考查共用体变量起作用的范围。共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用,在本题中,当对a.u.y成员赋值时,a.u.x的值就不存在了,当对a.u.2赋值时,a.u.y的值就不存在了。

44.A

45.B解析:x--是先使用x的值,后进行自减运算,所以输出的结果应当为23。

46.A解析:本题同样考查++运算的执行次序。第一个prantf输出的是'b',并且变量a='b';第二个printf输出的是赋值语句b=a++最终的结果,该语句首先将a的值赋给b,然后a++,因此第二个printf输出也是'b'。

47.C解析:计算机语言分为低级语言、汇编语言和高级语言,C语言属于高级语言,但并不是说C语言比其他语言高级,所以选项A错误;除了低级语言外,其他各种语言都必须编译成能被计算机识别的二进制数才能执行,选项B错误;C语言出现从1972年到1973年间,并不是出现最晚的语言,所以选项D也是错误的。

48.C解析:格式输出符为e,数据将按科学计数形式输出。-控制数据左对齐。所以,选项C正确。

49.C

50.B解析:选项A)是将指针q1和q2所指向的变量值相加,然后赋给k;选项B)中,float型数据和指针型数据之间不能进行赋值运算:选项C)中,是两个指针变量之间的赋值:选项D)中,是两个指针型变量所指向的两个float型数据相乘。

51.A解析:指针p1+k相当于指针P1向后移动了k个字符的位置,指针p2同理。

52.C解析:位与运算是将两个运算分量看作两个二进制数,然后对两个二进制数的相应位进行与运算,若同时为1则结果相应位为1,否则结果相应位为0。因此,当两个运算分量相同时,它们的相应位肯定也相同,即不同为1就同为0。所以得到的结果和运算分量也相同。所以,4个选项中选项C)符合题意。

53.A解析:数据库是一个通用化的、综合性的数据集合,它可以为各种用户所共享,具有最小的冗余度和较高的数据与程序的独立性,而且能并发地为多个应用服务,同时具有安全性和完整性。即数据库系统减少了数据冗余,但不能避免一切冗余。所以选项A正确,选项B错误。在数据库管理阶段中,数据是结构化的,面向系统,数据冗余度小,从而节省了数据的存储空间,也减少了对数据的存取时间,提高了访问效率,避免了数据的不一致性。数据的不一致性,是指对数据的存取方式,选项C错误。数据库系统比文件系统能管理更多的数据,并非是数据库系统的特点,选项D错误。本题正确答案是A。

54.D解析:在定义函数时函数名后面括弧中的变量名称为“形式参数”(简称形参),在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称实参)。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。故本题应该选择D。

55.B本题主要考查位运算。“按位异或”运算(^)是双目运算符,其功能是把参与运算的两数各对应的二进制位相异或,它在操作时,两对应位相同结果为0,不同则为1。“左移”运算(<<)的功能是把“<<”左边的运算数的各二进制位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。左移时,若左端移出的部分不包含有效二进制数1,则每左移一位,相当于移位对象乘以2。

本题中,有三个字符型的变量x,y,z,其中x和y的值分别为3和6。先转换为二进制数分别为00000011和00000110。本题中需要注意的是逻辑左移运算符的优先级比按位异或运算符的优先级高,因此,先将y进行运算逻辑左移2位操作,得到的结果为00011000,然后进行按位异或运算,得到最后的结果是00011011。本题正确的答案选B。

56.C解析:因为在函数fun(intx)中,如果参数x等于0或1时,返回值3。否则p=x-fun(x-2)这是一个递归函数,所以在主函数调用fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1))=7-(5-(3-3))=7-5=2”,所以最后的输出结果为2。

57.C解析:本题中char*p=a+5;即相当于p=&a[5],而--p,是先要减1,则printf语句要输出的值就是a[4]。

58.C答案C

解析:在语句“k=*f(a,b)”中,由于“()”的优先级高于“*”,所以“*f(a,b);”表示其返回类型为指针的带有两个整型参数的函数。

59.D解析:程序设计的过程应是先画出流程图,然后根据流程图编制出程序,所以选项A错误。程序中的注释是为了提高程序的可读性,注释必须在编制程序的同时加入,所以,选项B和选项C错误。综上所述,本题的正确答案为选项D。

60.A解析:程序中定义了三个指向函数的指针变量p1、p2、t,函数返回值均是float类型。在main函数中,p1指向了函数f1,p2指向了函数f2。语句y1=p2(p1(2.0));先调用f1函数,将其返回值4.000000传递给f2的形参n,并将其函数返回值8.00000

温馨提示

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

最新文档

评论

0/150

提交评论