1、国家二级(C 语言)机试模拟试卷 134及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.关于计算机算法的时间复杂度的叙述中正确的是( )。(分数:2.00)A.算法的时间复杂度与算法程序中的撰写细节有关B.算法的时间复杂度与计算机的运行速度有关C.算法的时间复杂度与运行算法时特定的输入有关D.算法的时间复杂度与算法程序编制者的水平有关2.下列各排序算法中,最坏情况下的时间复杂度最低的是( )。(分数:2.00)A.快速排序B.冒泡排序C.堆排序D.希尔排序3.下列叙述中正确的是( )。(分数:2.00)A.有一个以上根节点的数据结构不一定是非
2、线性结构B.只有一个根节点的数据结构不一定是线性结构C.循环链表是非线性结构D.双向链表是非线性结构4.某二叉树共有 121个节点,其中有 78个度为 2的节点,则该二叉树中的叶子节点数为( )。(分数:2.00)A.不存在这样的二叉树B.79C.120D.495.在设计计算机程序时,结构化程序的三种基本结构是( )。(分数:2.00)A.跳转、迭代和回溯B.跳转、函数和子程序C.顺序、选择和循环D.调用、返回和选择6.下面描述中错误的是( )。(分数:2.00)A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.
3、PAD图是软件详细设计的表示工具7.计算机软件设计过程中,不属于需求规格说明的是( )。(分数:2.00)A.运行环境B.算法详细设计C.软件的性能D.软件的主要功能8.不属于数据库管理技术发展的三个阶段的是( )。(分数:2.00)A.人工管理阶段B.文件系统阶段C.数据库阶段D.面向对象阶段9.建立表示学生借书活动的实体联系模型,其中的两个实体分别是( )。(分数:2.00)A.书号和学号B.学生和图书C.学生和学号D.书名和书号10.一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的关系是( )。(分数:2.00)A.1:1 关系B.1:m 关系C.m:1 关系D.m
4、:n 关系11.关于计算机算法的叙述中不正确的是( )。(分数:2.00)A.只要能够成功编译和运行的算法都会得到期望的结果B.算法的操作步骤应该是有限的C.算法中每一条指令必须有确切的含义D.算法可以用各种描述方法来进行描述12.若有定义语句:int x=l;则表达式 x一=x+2 的值为( )。(分数:2.00)A.2B.2C.0D.一 113.若有定义:float a=22;int i=0,k=18;下列选项中不合法的 C语言表达式是( )。(分数:2.00)A.a=a+=3,i+;B.i=(a+i)=(a+k);C.i=a3;D.i=!k;14.关于科学计数法,下列选项中合法的 C语言
5、实数是( )。(分数:2.00)A.2e0B.02e02C.E21D.3E15.以下 C语言表达式中,与 k=i+完全等价的表达式是( )。(分数:2.00)A.k=i,i=i+1B.i=i+1,k=iC.k=+iD.k+=i+116.关于 C语言用户标识符的叙述中,错误的是( )。(分数:2.00)A.若用户标识符的命名与预定义标识符相同,命名无效B.若用户标识符的命名与关键字相同将产生编译错误C.若用户标识符的命名与预定义标识符相同。预定义标识符失去原有含义D.若用户标识符的命名与预定义标识符相同,可能引发运行错误17.设有定义:double x;,以下选项中不能将输入数据 0681 读入
6、赋给变量 x的是( )。(分数:2.00)A.scanf(51f,&x);B.scanf(lf,&x);C.scanf(le,&x);D.scanf(53f,&x);18.若有定义:double x=15;int a=1,b=3,c=2;则关于 C语言中的 switch语句,下列选项中正确的是( )。(分数:2.00)A.switch(a+b) case 1:printf(*n); case 2+1:printf(*n);B.switch(x); case 1:printf(*n); case 2+1:printf(*n);C.switch(x) case10:printf(*n); case
7、 20:printf(*n);D.switch(a+b) case 1:printf(*n); case c 一 1:printf(*n);19.有以下程序段: #include int a,b,C; a=1;b=5;c=3; if(ab)a=b,b=c;c=a; printf(a=d b=d e=dn,a,b,c); 程序的输出结果是( )。(分数:2.00)A.a=1 b=5 c=1B.a=1 b=5 c=3C.a=1 b=3 c=1D.a=5 b=3 c=520.关于 C语言中循环语句的叙述中正确的是( )。(分数:2.00)A.for语句的循环体至少执行一次B.while语句的循环体至
8、少执行一次C.dowhile语句的循环体至少执行一次D.上述说法均正确21.有以下程序: #include main() int m,x=0,y=0,t; do scanf(d,&m); t=m0; switch(t) case 0:break; case 1:x+=m;continue; y+=m; while(m); printf(d,dn,x,y); 程序运行时输入:一 1 12 2 0,则输出结果是( )。(分数:2.00)A.0,0B.3,0C.3,一 3D.0,一 322.有以下程序: #include main() int a33=1,2,3,4,5,6,7,8,9,i,j,t=
9、0; for(i=0;i3;i+) for(j=i;j3;j+)t+=aij; printf(dn,t); 程序运行后的输出结果是( )。(分数:2.00)A.15B.6C.16D.2623.下列 C语言语句能正确定义二维数组的是( )。(分数:2.00)A.float a2:1,4;B.float a2=1,2,3;C.float a2=;D.float a23=10,20,30,40;24.若有函数定义如下:int fun(int x,int y)return 2*x*y;则以下涉及上述函数的说明语句错误的是( )。(分数:2.00)A.int fun(int x,y);B.int fun
10、(int,int);C.int fun(int a,int B);D.int fun(int x,int y);25.有以下程序:#includestdioh#define N 4main()int xNN=0,i,j,k;for(i=0;iN2;i+)for(j=i;jN 一 i;j+)xij=xN 一 i一 1j=i+1;for(k=i+l;kNi 一 1;k+)xki=xkNi 一 1=i+1;for(j=0;jN;j+)printf(2d,x1j);printf(n);执行后的输出结果是( )。(分数:2.00)A.2 2 2 2B.2 1 1 2C.1 1 1 1D.1 2 2 12
11、6.有以下程序: #include int fun(int n); main() int a=3,s; s=fun(a);s=s+fun(a);printf(dn,s); int fun(int n) static int a=1: n+=a+; return n; 程序运行后的输出结果是( )。(分数:2.00)A.17B.8C.9D.2627.有以下程序: #include main() char cha6=1234,123,12;int i; for(i=0;i3;i+)puts(chai); 执行后的输出结果是( )。(分数:2.00)A.1234 121B.11231C.1234 3
12、43D.1234228.若有以下函数:int fun(char *a,char*b)int flag=0;while(*a!=0)&(*b!=0)&strlen(a)=strlen(b)if(*b!=*a)flag=0;break;a+;b+;flag=1;return flag;此函数的功能是( )。(分数:2.00)A.判断 a和 b两个字符串的长度是否相等B.将字符串 a改名为字符串 bC.将字符串变量 a的值赋给字符串变量 bD.判断 a和 b两个字符串是否相等29.设有如下定义和语句:1char*s;s=China;2chars7;s=China;3chars=China;4char
13、s;s=China;其中定义项可以作为字符串使用的是( )。(分数:2.00)A.1和2B.1和3C.1和4D.3和430.有以下程序: #lnclude #include int f(int n) int*P; p=(int*)malloc(sizeof(int); *P=n;return *P; main() int a; a=f(5);printf(dn,a+f(10); 程序的运行结果是( )。(分数:2.00)A.15B.20C.0D.出错31.有以下程序: #include struct ST int a,b;data2=10,100,20,200; main() struct S
14、T p=data0; printf(dn,+(pa); 程序运行后的输出结果是( )。(分数:2.00)A.10B.11C.20D.2132.关于 C语言中对文件操作叙述中正确的是( )。(分数:2.00)A.C语言中的文件是流式文件,因此只能顺序存取数据B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失33.有以下程序: #include main() FILE*fp; int i,a6=a,b,c,d,e,f,k; fp=f
15、open(datadat,w+b); fwrite(&a0,sizeof(int),1,fp); for(i=1;i6;i+) fseek(fp,0L,0); fwrite(&ai;sizeof(int),1,fp); fseek(fp,0L,0); fread(&k,sizeof(int),1,fp); fclose(fp); pfintf(cn,k); 程序运行后的输出结果是( )。(分数:2.00)A.abcdefB.abC.fD.fedcba34.有以下程序:#lncludestdioh#define F(x)(xx)*xmain()int k=4,j=2;printf(d,dn,F(
16、k+j),F(j+k);程序运行后的输出结果是( )。(分数:2.00)A.26,6B.28,6C.6,6D.26,2635.下列选项中结果为 0的是( )。(分数:2.00)A.a=a&0;B.a=a0;C.a=a 0:D.a=!a;36.程序中若有以下的说明定义和语句: #include #include struct ST char num10;int s; main() struct ST t,*p; p=&t; 下列语句不能正确赋值的是( )。(分数:2.00)A.(*p)s=2;pnum0=0;B.ps=12;pnum0=0;C.(*p)s=12;(*p)num= ;D.ps=12
17、;strcpy(*p)mum, );37.有以下程序: #include intg(int a) int b=2; static int c=2; b+;c;return(a+b+c); main() int k,a=5; for(k=0;k3;k+)printf(d,g(a); printf(n); 执行后的输出结果是( )。(分数:2.00)A.987B.888C.678D.66638.设已定义 int i和 char cl10,c210=Chinese;则能正确赋值的语句是( )。(分数:2.00)A.c1=c2;B.for(i=0;i=7;i+)cli=c2i;C.while(c2)c
18、1+=c2+;D.for(i=0;c2i;i+)cli=c2i;39.以下程序拟读取一个学生结构体中的人名,查找其年龄并输出: #include #include #include struct stuchar name10;int age; struct stu team6=zhangli,18, wangtao,20, limei,19, zhaodong,18, liuxiu,19 ,*P; main() inti,flag=0; p=(struct stu *)malloc(sizeof(struct stu); gets(&pname); for(i=0;i6;i+) if(strc
19、mp(pname,teaminame)=0) pfintf(dn,teamiage); flag=1; if(flag=0)printf(No find!n); 程序有语法错误,出错的是( )。(分数:2.00)A.pfintf(dn,teamiage)B.p=(struct stu*)malloc(sizeof(structstu)C.if(strcmp(pname,teaminame)=0)D.gets(&pname);40.有以下程序: #include #include main() FILE*fp; char ch,str5; if(fp=fopen(datadat,wb+)=NUL
20、L) printf(error!n);exit(0); ch=getchar();while(ch!=!) fputs(ch,fp); ch=getchar(); rewind(fp); do fgets(str,4,fp); puts(str); while(!feof(fp); felose(fp); 程序运行时输入:hello!,则程序的输出结果是( )。(分数:2.00)A.helloB.he 1loC.hell oD.hell二、程序填空题(总题数:1,分数:2.00)41.下列给定程序中,函数 fun的功能是:在形参 ss所指字符串数组中查找与形参 t所指字符串相同的串,找到后返回
21、该串在字符串数组中的位置(即下标值),若未找到则返回一 1。ss 所指字符串数组中共有 N个内容不同的字符串,且串长小于 M。 请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANKlC 中。不得增行或删行,也不得更改程序的结构! #include #include #define N 5 #define M 8 int fun(char(*ss)M,char*t) int i: *found* for(i=0;i【1】;i+) *found* if(strcmp(ssi,t)=0)return【2】; return 一 1: main()
22、char chNM=if,while,switch,int,for,tM; int n,i; printf(nnThe original stringnn); for(i=0;iN;i+)puts(chi); printf(n); printf(nEnter a string for search:);gets(t); n=fun(ch,t); *found* if(n=【3】printf(nDont found!n); else printf(nThe position isdn,n); (分数:2.00)_三、程序修改题(总题数:1,分数:2.00)42.给定程序 MODi1C 中,函数
23、fun的功能是:判断输入的任何一个正整数 n,是否等于某个连续正整数序列之和。若是,则输出所有可能的序列,否则输出“不能分解”。例如:当输入 100时,输出:100=9+10+11+12+13+14+15+16100=18+19+20+21+22请改正函数 fun中指定部位的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includestdiohvoid fun(int n)int j,b,c,m,flag=0;for(b=1,bn2;b+)*found*n=m;c=b;while(m!=0&m=c)*found*m=m一 c;c+
24、*found*if(m!=0)printf(d=,n);for(j=b;jc 一 1;j+)printf(d+,j);printf(dn,j);flag=1;if(flag=0)printf(不能分解n);main()int n:printf(请输入一个整数:);scanf(dt,&n);fun(n);(分数:2.00)_四、程序设计题(总题数:1,分数:2.00)43.学生记录由学号和成绩组成,N 名学生的数据已放入主函数中的结构体数组中,请编写函数 fun,其功能是:把分数最高的学生数据放入 b所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生人数。 注意:部分源程序在
25、文件 PROG1C 中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #define N 16 typedef struct char num10; int s; STREC; int fun(STREC*a,STREC*b) main() STREC sN=GA05,85,GA03,76,GA02,69,GA04,85, GA01,91,GA07,72,GA08,64,GA06,87, GA015,85,GA013,91,GA012,64,GA014,91, GA011,91,GA017,64,GA018,64,GA016
26、,72; STREC hN; int i,n;FILE*out; n=fun(s,h); printf(Thed highest score:n,n); printf(s4dn,hinum,his); printf(1n); out=fopen(outdat,w); fprintf(out,dn,n); for(i=0;in;i+) fprintf(out,4dn,his); fclose(out); (分数:2.00)_国家二级(C 语言)机试模拟试卷 134答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.关于计算机算法的时间复杂度的叙述中正
27、确的是( )。(分数:2.00)A.算法的时间复杂度与算法程序中的撰写细节有关B.算法的时间复杂度与计算机的运行速度有关C.算法的时间复杂度与运行算法时特定的输入有关 D.算法的时间复杂度与算法程序编制者的水平有关解析:解析:计算机算法的时间复杂度是指执行算法所需要的计算工作量,它不仅应该与所使用的计算机、程序、设计语言以及程序编制者无关,而且与算法实现过程中的许多细节也无关。可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。算法所执行的基本运算次数还与问题的规模有关,对应一个固定的规模,算法所执行的基本运算次数还可能与特定的输入有关。所以本题答案为选项 C。2.下列各排序算法中
28、,最坏情况下的时间复杂度最低的是( )。(分数:2.00)A.快速排序B.冒泡排序C.堆排序 D.希尔排序解析:解析:堆排序最坏情况下的时间复杂度为 O(nlog 2 n),希尔排序最坏情况下的时间复杂度为 O(n 2 ),快速排序、冒泡排序最坏情况下的时间复杂度为 O(n 2 )。所以本题答案为 C选项。3.下列叙述中正确的是( )。(分数:2.00)A.有一个以上根节点的数据结构不一定是非线性结构B.只有一个根节点的数据结构不一定是线性结构 C.循环链表是非线性结构D.双向链表是非线性结构解析:解析:C 和 D选项均是线性结构,有一个以上根节点的数据结构一定是非线性结构,所以只有选项B正确
29、。4.某二叉树共有 121个节点,其中有 78个度为 2的节点,则该二叉树中的叶子节点数为( )。(分数:2.00)A.不存在这样的二叉树B.79 C.120D.49解析:解析:根据二叉树的基本性质,对任何一棵二叉树,度为 O的节点(即叶子节点)总是比度为 2的节点多一个。题目中度为 2的节点为 78个,则叶子节点为 78+1=79个。所以本题答案为 B选项。5.在设计计算机程序时,结构化程序的三种基本结构是( )。(分数:2.00)A.跳转、迭代和回溯B.跳转、函数和子程序C.顺序、选择和循环 D.调用、返回和选择解析:解析:结构化程序的三种基本结构是顺序、选择和循环,这三种基本控制结构就足
30、以表达出各种其他形式结构的程序设计方法。6.下面描述中错误的是( )。(分数:2.00)A.系统总体结构图支持软件系统的详细设计 B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD图是软件详细设计的表示工具解析:解析:系统总体结构图不支持详细设计,所以选项 A的描述错误,其他选项均正确。7.计算机软件设计过程中,不属于需求规格说明的是( )。(分数:2.00)A.运行环境B.算法详细设计 C.软件的性能D.软件的主要功能解析:解析:软件需求规格说明应重点描述软件的目标,软件的功能需求、性能需求和运行环境等。功能需求是软件需求规格说明。给出软件要执
31、行什么功能的详尽描述。性能需求是指定量地描述软件系统应满足的具体性能需求,即各种软件功能的速度、响应时间、恢复时间。外部接口指软件如何与人、系统的硬件及其他硬件和其他软件进行交互。属性是指与软件有关的质量属性,如正确性、可用性、可靠性、安全性、可维护性等。约束条件包括影响软件实现的各种设计约束,如使用的标准、编程语言、数据库完整性方针、资源限制、运行环境等方面的要求。8.不属于数据库管理技术发展的三个阶段的是( )。(分数:2.00)A.人工管理阶段B.文件系统阶段C.数据库阶段D.面向对象阶段 解析:解析:数据库管理技术的三个阶段是人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段没有
32、专门的软件对数据进行管理。9.建立表示学生借书活动的实体联系模型,其中的两个实体分别是( )。(分数:2.00)A.书号和学号B.学生和图书 C.学生和学号D.书名和书号解析:解析:实体是概念世界中的基本单位,是客观存在并可以相互区别的事物。要建立表示学生借书活动的实体联系模型。能互相区别并可以联系起来的实体是学生和图书。10.一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的关系是( )。(分数:2.00)A.1:1 关系B.1:m 关系C.m:1 关系D.m:n 关系 解析:解析:一个教师可讲授多门课程,一门课程可由多个教师讲授,所以实体教师和课程间的关系是m:n 的关
33、系。11.关于计算机算法的叙述中不正确的是( )。(分数:2.00)A.只要能够成功编译和运行的算法都会得到期望的结果 B.算法的操作步骤应该是有限的C.算法中每一条指令必须有确切的含义D.算法可以用各种描述方法来进行描述解析:解析:计算机算法应该具有有穷性、确定性和有效性。有穷性是指一个算法应该包含有限的操作步骤而不能是无限的,所以选项 B正确;确定性是指算法中每一个步骤应当是确定的,而不能是含糊的、模棱两可的,所以选项 C正确;算法可以使用自然语言、流程图、伪代码等多种描述方法来进行描述,所以选项 D正确;算法的有效性是指算法中每一个步骤应当能有效地执行,并得到确定的结果,但算法设计有Bu
34、g也可能得不到预期结果,所以 A选项错误。12.若有定义语句:int x=l;则表达式 x一=x+2 的值为( )。(分数:2.00)A.2B.2 C.0D.一 1解析:解析:表达式 x=x+2 等价于 x=x(x+2),x=1,所以结果为:13=一 2。13.若有定义:float a=22;int i=0,k=18;下列选项中不合法的 C语言表达式是( )。(分数:2.00)A.a=a+=3,i+;B.i=(a+i)=(a+k);C.i=a3; D.i=!k;解析:解析:求模运算符“”的操作数只能是整数,所以 C选项不合法。14.关于科学计数法,下列选项中合法的 C语言实数是( )。(分数:
35、2.00)A.2e0 B.02e02C.E21D.3E解析:解析:C 语言中,实数的指数形式一般为:aEn,其中 a为十进制数,n 为十进制整数,表示的值为:a10 n ;B、C 选项错在阶码必须是整数,D 选项错在无阶码,所以答案为 A项。15.以下 C语言表达式中,与 k=i+完全等价的表达式是( )。(分数:2.00)A.k=i,i=i+1 B.i=i+1,k=iC.k=+iD.k+=i+1解析:解析:本题考查自加 1运算符,i+表示 i的当前值参与运算后,再自增 1,所以表达式 k=i+等价于 k=i,i=i+1,所以答案选 A。16.关于 C语言用户标识符的叙述中,错误的是( )。(
36、分数:2.00)A.若用户标识符的命名与预定义标识符相同,命名无效 B.若用户标识符的命名与关键字相同将产生编译错误C.若用户标识符的命名与预定义标识符相同。预定义标识符失去原有含义D.若用户标识符的命名与预定义标识符相同,可能引发运行错误解析:解析:标识符分为关键字、预定义标识符、用户标识符,关键字不可以作为用户标识符,预定义标识符可以作为用户标识符,原来的预定义标识符将会被用户标识符覆盖,预定义标识符的原意失效,所以选项 A错误。17.设有定义:double x;,以下选项中不能将输入数据 0681 读入赋给变量 x的是( )。(分数:2.00)A.scanf(51f,&x);B.scan
37、f(lf,&x);C.scanf(le,&x);D.scanf(53f,&x); 解析:解析:scanf()将严格按照格式规范接收输入的数据,51f。表示用小数形式输入宽度为 5的双精度浮点数,所以选项 A正确;lf 表示用小数形式输入双精度浮点数,满足条件,所以选项 B正确;le表示用指数形式输入双精度浮点数,满足条件,所以选项 C正确;输入的数据宽度必须是十进制的整数,没有精度控制,所以53f 是错误的格式控制符,所以选项 D错误。18.若有定义:double x=15;int a=1,b=3,c=2;则关于 C语言中的 switch语句,下列选项中正确的是( )。(分数:2.00)A.s
38、witch(a+b) case 1:printf(*n); case 2+1:printf(*n); B.switch(x); case 1:printf(*n); case 2+1:printf(*n);C.switch(x) case10:printf(*n); case 20:printf(*n);D.switch(a+b) case 1:printf(*n); case c 一 1:printf(*n);解析:解析:switch 语句后的表达式只能是整型或字符型,所以 C选项错误;case 后面必须是常量表达式,所以 D选项错误;switch()右括号后面不能有分号,所以选项 B错误。
39、19.有以下程序段: #include int a,b,C; a=1;b=5;c=3; if(ab)a=b,b=c;c=a; printf(a=d b=d e=dn,a,b,c); 程序的输出结果是( )。(分数:2.00)A.a=1 b=5 c=1 B.a=1 b=5 c=3C.a=1 b=3 c=1D.a=5 b=3 c=5解析:解析:if 分支语句的作用到语句的第一个分号结束,所以本题中 if语句的作用范围为 a=b,b=c;由于 if条件为 false,所以这两条语句不执行,程序仅执行后面的 c=a语句,所以程序最终输出结果:1,5,1。20.关于 C语言中循环语句的叙述中正确的是(
40、)。(分数:2.00)A.for语句的循环体至少执行一次B.while语句的循环体至少执行一次C.dowhile语句的循环体至少执行一次 D.上述说法均正确解析:解析:for(表达式 1;表达式 2;表达式 3)语句,当表达式 2为 false时,循环体一次都不执行,所以选项 A错;while(表达式)当表达式为 false时,循环体一次都不执行,所以选项 B错误;do 一while语句循环体至少执行一次,所以 C选项正确。21.有以下程序: #include main() int m,x=0,y=0,t; do scanf(d,&m); t=m0; switch(t) case 0:brea
41、k; case 1:x+=m;continue; y+=m; while(m); printf(d,dn,x,y); 程序运行时输入:一 1 12 2 0,则输出结果是( )。(分数:2.00)A.0,0B.3,0C.3,一 3 D.0,一 3解析:解析:在 dowhile循环中,嵌套了一个 sWitch语句,switch 语句中两个 case语句分别执行break和 continue,其中 break语句是跳出 switch语句,接着执行 dowhile循环体剩下的部分:而continue语句是直接进入 dowhile的下一次循环。当输入一 1、一 2、0 时,y+=(一 1一 2+0)=一
42、 3;当输入 1、2 时,x 值累加为 3,所以输出 x,y 值分别为 3、一 3。22.有以下程序: #include main() int a33=1,2,3,4,5,6,7,8,9,i,j,t=0; for(i=0;i3;i+) for(j=i;j3;j+)t+=aij; printf(dn,t); 程序运行后的输出结果是( )。(分数:2.00)A.15B.6C.16D.26 解析:解析:分析程序段,功能是累加数组右上部分的元素,所以 t=1+2+3+5+6+9=26。23.下列 C语言语句能正确定义二维数组的是( )。(分数:2.00)A.float a2:1,4; B.float
43、a2=1,2,3;C.float a2=;D.float a23=10,20,30,40;解析:解析:二维数组在定义时,第一维的长度可以不指定,但必须在定义的同时需要完成初始化,另外,第二维长度必须指定,所以选项 B、C 错误;二维数组 a23中定义了两行,但初始化的数值中有三行,所以选项 D错误。24.若有函数定义如下:int fun(int x,int y)return 2*x*y;则以下涉及上述函数的说明语句错误的是( )。(分数:2.00)A.int fun(int x,y); B.int fun(int,int);C.int fun(int a,int B);D.int fun(in
44、t x,int y);解析:解析:C 语言中函数的说明时形参名可以省略,也可以不同于实参的任何合法标识符,所以选项B、C、D 正确;选项 A中的第 2个形参没有类型,所以错误。25.有以下程序:#includestdioh#define N 4main()int xNN=0,i,j,k;for(i=0;iN2;i+)for(j=i;jN 一 i;j+)xij=xN 一 i一 1j=i+1;for(k=i+l;kNi 一 1;k+)xki=xkNi 一 1=i+1;for(j=0;jN;j+)printf(2d,x1j);printf(n);执行后的输出结果是( )。(分数:2.00)A.2 2 2 2B.2 1 1 2C.1 1 1 1D.1 2 2 1 解析:解析:本题程序需要输出二维数组 x中第二行的各个元素值,即 x1这个一维数组的元素值。只有在两种情况下才会对 x1中的元素赋值:外层 for循环中 i=0时,内层第二个 for循环的 k取值为1此时 xki=x10=i,xkNi 一 1=x13=1;外层 for循环中 i=1时,内层第一个 for循