1、二级 C语言笔试-194 及答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.在设计程序时,应采纳的原则之一是(分数:2.00)A.不限制 goto语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解2.以下程序的运行结果是int k=0;void fun(int m)m+=k;k+=m;printf(“m=%d k=%d“,m,k+);main()int i=4;fun(i+); printf(“i=%d k=%d/n“,i,k);(分数:2.00)A.m=4 k=5 i=5 k=5B.m=4 k=4 i=5 k=5C.m
2、=4 k=4 i=4 k=5D.m=4 k=5 i=4 k=53.数据库、数据库系统和数据库管理系统之间的关系是(分数:2.00)A.数据库包括数据库系统和数据库管理系统B.数据库系统包括数据库和数据库管理系统C.数据库管理系统包括数据库和数据库系统D.三者没有明显的包含关系4.若有定义:int a23;,以下选项中对 a数组元素正确引用的是(分数:2.00)A.a2!1B.a23C.a03D.a12!15.树是结点的集合,它的根结点数目是(分数:2.00)A.有且只有 1B.1或多于 1C.0或 1D.至少 26.下列叙述中正确的是(分数:2.00)A.程序执行的效率与数据的存储结构密切相关
3、B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上三种说法都不对7.有以下程序#include stdio.hmain()int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i;for(i=0;i12;i+) csi+;for(i=1;i5;i+) printf(“%d“,ci);printf(“/n“);程序的运行结果是(分数:2.00)A.1 2 3 4B.2 3 4 4C.4 3 3 2D.1 1 2 38.若变量已正确定义并赋值,以下符合 C语言语法的表达式是(分数:2.00)A.a:=b+1B.a=b=c+2C.int 18
4、.5%3D.a=a+7=c+b9.有以下程序#include stdio.h#include string.htypedef strtlct char name9; char sex;floatscore2; STU;void f(STU(分数:2.00)A.STU b=“Zhao“,m,85.0,910.下列有关数据库的描述,正确的是(分数:2.00)A.数据库是一个 DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件11.数据结构中,与所使用的计算机无关的是数据的(分数:1.00)A.存储结构B.物理结构C.逻辑结构D.物理和存储结构12.有以下程序#inc
5、ludestdio.hmain()FILE*fp;int i,a6=1,2,3,4,5,6;fp=fopen(“d3dat“,“w+b“);fwrite(a,sizeof(int),6,fp);fseek(fp,sizeof(int),3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动 3个 int型数据*/fread(a,sizeof(int),3,fp);fclose(fp);for(i=0;6;+)printf(“%d,“,ai);程序运行后的输出结果是(分数:1.00)_13.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=ab)6;+)pri
6、ntf(“%d,“,ai);程序运行后的输出结果是(分数:1.00)_解析:解析 首先利用 fwrite函数将数组 a中的数据写到文件中,接着 fseek函数的功能是读文件的位置,指针从文件头向后移动 3个 int型数据,这时文件位置指针指向的是文件中的第 4个 int数据“4”,然后 fread函数将文件 fp中的后 3 个数据 4,5,6 读到数组 a中,这样就覆盖了数组中原来的前 3 项数据。最后数组中的数据就成了4,5,6,4,5,613.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=ab)&(n=cd)后,n 的值是(分数:1.00)A.1B.2 C.3D.
7、4解析:解析 本题考查逻辑与运算的运算规则。其规则是:当运算符前后两个条件表达式都满足时,其最终结果才为真。当发现第一个表达式的值为假,计算机将不再执行后面表达式的运算。本题中;由于前一个表达式的值为“假”,所以,后面的表达式不再进行运算,因而 n的值保持不变,仍为 2。14.以下描述中正确的是(分数:1.00)A.由于 do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B.do-while循环由 do开始,用 while结束,在 while(表达式)后面不能写分号C.在 do-while循环体中,是先执行一次循环,再进行判断 D.do-while循环中,根据情
8、况可以省略 while解析:解析 do-while 语句的一般形式为:do 循环体语句 while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while 后必须要有分号作为语句的结束,在 do-while 循环中,不可以省略 while。15.在 16位 IBM-PC机上使用 C语言,若有如下定义stmct datainti;char ch;double fb;则结构变量 b占用内存的字节数是(分数:1.00)A.1B.2C.7D.11 解析:解析 结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量 i所占用的内存是 2字节,字符型变量 ch所
9、占用的内存是 1字节,双精度型变量 f所占用的内存是 8字节,三者相加即可。16.阅读下列程序,则运行结果为#include“stdio.h“fun()static int x=5;x+;return x;main()int i,x;for(i=0;i3;i+)x=fun();printf(“%d/n“,x);(分数:1.00)A.5B.6C.7D.8 解析:解析 在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,即使退出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储单元,静态局部变量的初值是在编译的时候赋予的,在程序执行期间不再赋予初值。本题由于连续三次调
10、用函数 fun(),三次对静态变量 x进行操作,x 的值应依次为 6,7,8。17.已有定义:char c;,程序前面已在命令行中包含 ctype.h文件,不能用于判断 c中的字符是否为大写字母的表达式是(分数:1.00)A.isupper(c)B.A=c=Z C.A=c&c=ZD.c=(z-32)&(a-32)=c解析:解析 在本题中,选项 B)实际是先计算关系表达式“A=c”的值是 0还是 1再比较该值与字符z之间的大小关系,显然不能实现题目所要求的功能,而选项 A)、C)、 D)都可以。18.线性表的顺序存储结构和线性表的链式存储结构分别是(分数:1.00)A.顺序存取的存储结构、顺序存
11、取的存储结构B.随机存取的存储结构、顺序存取的存储结构 C.随机存取的存储结构、随机存取的存储结构D.任意存取的存储结构、任意存取的存储结构解析:解析 顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式 LOC(ai)=LOC(a1)+(i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。19.下列程序的运行结果为#includestdio.hvoid abc(char*str)int a,b;for(a=b=0;stra!=/0;a+)if(stra!=c)strb+=str
12、a;strb=/0;void main()char str=“abcdef“;abc(str);printf(“str)=%s“,str);(分数:1.00)A.str=abdef B.str=abcdefC.str=aD.str=ab解析:解析 本题考查了用字符指针引用字符数组中的字符及对字符的操作。函数 abc()的 for语句执行过程是:从字符指针 str所指向的字符数组的第一个元素开始,逐一判断字符是否为c,若不是就执行一次数组元素的赋值过程,若字符为c就不执行。20.软件是指(分数:1.00)A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整集合 解析:解析 软件
13、是程序、数据与相关文档的集合,相对于计算机硬件而言,软件是逻辑产品而不是物理产品,是计算机的无形部分。21.有以 F程序#include stdio.hmain()int y=9;for( ;y0;y-)if(y%3=0) printf(“%d“,-y);程序的运行结果是(分数:2.00)A.741B.963C.852 D.875421解析:解析 本题考查变量的自加“+”和自减“-”问题。当 y的值为 9、6 或 3时,if 语句的条件成立,执行输出语句,输出表达式-y 的值,y 的自减要先于输出语句执行,故输出结果为 8 5 2。22.以下函数返回 a所指数组中最小的值所在的下标值fun(i
14、nt *a,int n)int i,j=0,p;p=jfor(i=j;in;i+)if(aiap)_;return(p);在横线处应填入的是(分数:2.00)A.i=pB.ap=aiC.p=jD.p=i 解析:解析 该程序先判断 aiap,如果条件为真,则 ai比当前设定的最小值小(p 保留的当前最小元素的下标),那么将 i赋给 p,即将比较过的最小元素下标保留在 p中,作为下面判断的标准。23.已知 int a=1,b=3 则 ab的值为(分数:2.00)A.3B.1C.2 D.4解析:解析 是按位异或运算,如果对应位不同则结果为 1,相同则为 0。24.下面四个选项中,均是不合法的用户标识
15、符的选项是(分数:2.00)A.AP_0 doB.float 1a0_AC.b-a goto int D.123 temp int解析:解析 C 语言规定的标识符只能由字母、数字和下划线 3种字符组成,第一个字符必须为字母或下划线,并且不能使用 C语言中的关键字作为标识符。选项 C)中 goto和 int 是关键字,b-a 中-不是组成标识符的 3种字符之一;选项 D)中 int是关键字,所以,均是不合法用户标识符的选项是 C)。25.有以下程序#include stdio.hvoidfun(char*t,char*s)while(*t!=0) t+;while(*t+=*s+)!=0);ma
16、in()char ss10=“acc“,aa10=“bbxxyy“;fun(ss,a(分数:2.00)A.; printf(“%s,%s/n“,ss,aa);&n解析:解析 本题中 fun函数实现丁字符串函数 str-eat的功能,将字符串 aa连接到字符串 ss的末尾。调用 fun函数时,形参 t和 s分别指向了字符串 ss和 aa,然后通过一个 while循环使 t指向字符串 ss的结束符的位置,第二个 while循环将字符串 aa中的字符(包括结束符/0)逐个复制到字符串 ss的末尾处。26.若要求从键盘读入含有空格字符的字符串,应使用函数(分数:2.00)A.getc()B.gets(
17、) C.getchar()D.scanf()解析:解析 scanf()语句用“空格”区别不同的字符串;getc()与 getchar()语句不能用于字符串的读入。27.阅读下列程序段,则程序的输出结果为#include“stdio.h“#defineM(X,Y)(X)*(Y)#defineN(X,Y)(X)/(Y)main()f int a=5,b=6,c=8,k;k=N(M(a,b),c);printf(“%d/n“,k);(分数:2.00)A.3 B.5C.6D.8解析:解析 带参数的宏定义命令行形式如下:#de-fine 宏名(形参表)替换文本。首先进行 M的宏替换,之后再进行 N的宏替
18、换,替换后的表达式为(a)*(b)/(c)。28.检查软件产品是否符合需求定义的过程称为(分数:2.00)A.确认测试 B.集成测试C.验证测试D.验收测试解析:解析 确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。29.以下 4个选项中,不能看成一条语句的是(分数:2.00)A.;B.a=5,b=2.5,c=3.6;C.if(a5);D.if(b!=5)x=2;y=6; 解析:解析 选项 D)为两条语句。30.有以下程序#include stdio.hvoid fun(int *a,int n)/*fun 函数
19、的功能是将 a所指数组元素从大到小排序*/int t,i,j;for(i=0;in-1;j+)for(j=i+1;jn;j+)if(aiaj) t=ai;ai:aj;aj=t;main()int c10=1,2,3,4,5,6,7,8,9,0,ifun(c+4,6);for(i=0;i10;+) printf(“%d,“,ci);printf(“/n“);程序的运行结果是(分数:2.00)_解析:解析 在本题中,主函数在调用 fun()函数进行排序时,传递的参数是 c+4和 6,fun()函数实现的功能是将数组 c的第 5个元素开始的 6个元素依次进行从大到小的顺序排列。排序之后,数组 c的内
20、容变为1,2,3,4,9,8,7,6,5, 031.若有定义:float x=1.5;int a=1,b=3,c=2;,则正确的 switch语句是(分数:2.00)A.switch(x)case 1.0:printf(“*/n“);case 2.0:printf(“*/n“);B.switch(int)x);case 1:printf(“*/n“);case 2:printf(“*/n“);C.switch(a+b)case 1:printf(“*/n“);case 2+1:printf(“*/n“); D.switch(a+b)case 1:printf(“*/n“);case c:pri
21、ntf(“*/n“);解析:解析 C 语言中,switch 语句专用于实现多分支结构程序,其特点是各分支清晰而直观。switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。32.以下选项中不属于字符常量的是(分数:2.00)A.CB.C C./xCCD./072解析:解析 在 C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项 A)、C)和 D)为正确的字符常量,而选项 B)是用双引号括起来的字符,表示一个字符串常量。33.下面程序的输出结果是#includ
22、estdio.h#includestring.hmain()char *pl=“abc“,*p2=“ABC“,str50=“xyz“;strcpy(str+2,strcat(p1,p2);printf(“%s/n“,str);(分数:2.00)A.xyzabcABCB.zabcABCC.xyabcABC D.yzabcABC解析:解析 本题考查的重点是拷贝字符串使用 strcpy()函数,该函数的调用方式是:strcpy(字符数组,字符串),其中”字符串”可以是字符串常量,也可以是字符数组。函数的功能是:将“字符串”完整地复制到“字符数组”中,字符数组中原有的内容被覆盖。使用该函数时注意:字符
23、数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志/0一起复制;不能用赋值运算符“:”将一个字符串直接赋值给一个字符数组,只能用 strcpy()函数处理。另外,本题还考查连接字符串的 strcat()函数,其调用方式是:strcat(字符数组,字符串)。功能是把”字符串”连接到”字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题;连接前两个字符串都有结束
24、标志/0,连接后“字符数组”中存储的字符串的结束标志/0铍舍弃,只在目标串的最后保留一个/0。34.有以下程序#include stdio.hmain()int a=1,2,3,4,y,*p=&a3;-p; y=*p;printf(“y=%d/n“,y);程序的运行结果是(分数:2.00)A.y=0B.y=1C.y=2D.y=3 解析:解析 在程序中指针变量 P初始指向 a3,执行 p减 1后,P 指向 a2,语句 y=*p的作用是把a2的值赋给变量 y,所以输出为 y=3。35.有以下程序#include stdio.hmain()FILE *fp; int a10=1,2,3,i,n;fp
25、=fopen(“d1.daf“,“w“);for(i=0;i3;i+) fprintf(fp,“%d“,ai);fprintf(fp,“/n“);fclose(fp);fp=fopen(“d1.dat“,“r“);fscanf(fp,“%d“,&n);fclose(fp);printf(“%d/n“,n);程序的运行结果是(分数:2.00)A.12300B.123 C.1D.321解析:解析 在函数中首先把整型数组 a10中的每个元素写入文件 d1.dat中,然后再次打开这个文件,把文件 d1.dat中的内容读入到整型变量 n中,最后输出变量 n的值。36.设变量已正确定义并赋值,以下正确的表
26、达式是(分数:2.00)A.x=y*5=x+ZB.int(15.8%5)C.x=y+z+5,+y D.x=25%5.0解析:解析 求余运算符“%“两边的运算对象必须是整型,而选项 B)和 D)中“%“两边的运算对象有浮点整数据,所以选项 B)和 D)是错误的表达式。在选项 A)中赋值表达式的两边出现相同的变量 x,也是错误的。选项 C)是一个逗号表达式,所以正确答案为 C)。37.以下数组定义中错误的是(分数:2.00)A.intx3=0;B.intx23=1,2,3,4,5,6; C.intx3=1,2,3,4,5,6;D.intx23=1,2,3,4,5,6;解析:解析 二维数组的初始化有
27、以下几种形式:分行进行初始化;不分行进行初始化;部分数组元素进行初始化;省略第一维的定义,不省略第二维的定义。选顷 B)等号右边分了 3行,大于等号左边数组的行数 2。38.以下不属于对象的基本特点的是(分数:2.00)A.分类性B.多态性C.继承性 D.封装性解析:解析 对象的基本特点:标志唯一性、分类性、多态性、封装性和模块独立性。39.若变量已正确定义,有以下程序段int a=3,b=5,c=7;if(ab) a=b; c=a;if(c! =(分数:2.00)A.c=b;printf(“%解析:解析 两个 if语句的判断条件都不满足,程序只执行了 c=a这条语句,所以变量 c的值等于 3
28、,变量 b的值没有变化,程序输出的结果为 3,5,3。40.下面说明不正确的是(分数:2.00)A.char a10=“china“;B.char a10,*p=a;p=“china“C.char*a;a=“china“;D.chara10,*P;P=a=“china“ 解析:解析 C 语言中操作一个字符串常量的方法有:将字符串常量存放在一个字符数组之中;用字符指针指向字符串,然后通过字符指针来防问字符串存储区域。当字符串常量在表达式中出现时,根据数组的类型转换规则,将其转换成字符指针。本题 D)项中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。二、填空题
29、(总题数:14,分数:28.00)41.需求分析的最终结果是产生 1。(分数:2.00)填空项 1:_ (正确答案:需求规格说明书)解析:解析 软件需求规格说明书是需求分析阶段的最后成果,是软件开发小的重要文档之一。需求规格说明书包括正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性等。42.为了便于对照检查,测试用例应由输入数据和预期的 1 两部分组成。(分数:2.00)填空项 1:_ (正确答案:输出结果)解析:解析 测试用例(Text Case)是为测试设计的数据。测试用例由测试输入数据和与之对应的预期输出结果两部分组成。43.数据结构分为逻辑结构与存储结构,线性链
30、表属于 1。(分数:2.00)填空项 1:_ (正确答案:存储结构)解析:解析 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存睹空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。44.某二叉树中度为 2的结点有 18个,则该二叉树中有 1 个叶子结点。(分数:2.00)填空项 1:_ (正确答案:19)解析:解析 在任意一棵二叉树中,度为 0的结点(即叶子结点)总是比度为 2的结点多一个。45. 1是数据库设计的核心。(分数:2.00)填空项 1:_ (正确答案:数据模型)解析:解析
31、数据模型是对客观事物及联系的数据描述,它反映了实体内部及实体与实体之间的联系。因此,数据模型是数据库设计的核心。46.已有定义:char c= ;int a=1,b;(此处 c的初值为空格字符),执行 b=!c&a;后 b的值为_。(分数:2.00)填空项 1:_ (正确答案:1)解析:解析 字符空格的 ASCII码不为 0,所以本题中表达式!c 的值为 0,b=0&1 的结果显然为 0。47.设变量已正确定义为整型,则表达式 n=i=2,+i,i+的值为 1。(分数:2.00)填空项 1:_ (正确答案:3)解析:解析 本题考查的是 C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到
32、右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先 i被赋值为2,再自加 1,最后 i+的值计算为 3。48.下面程序的功能是:计算 110 之间的奇数之和与偶数之和,请填空。#includestdio.hmain()int a,b,c,i;a=C=0;for(i=0;i=10;i+=2)a+=i;_;c+=b;printf(“偶数之和=%d/n“,a);printf(“奇数之和=%d/n“,c-11);(分数:2.00)填空项 1:_ (正确答案:b=i+1)解析:解析 本题考查了 for循环语句的执行过程。i+=2 是修正表达式,执行一次循环体后 i的
33、值就增加 2,i 的初始值为 0,每次加 2后的和累加至 a,所以 a的值就是 110 之间的偶数之和;b 的值是111 之间的奇数和,但在输出 b值时,c 去掉多加的 11,即为 110 之间的奇数之和。49.以下函数 rotate的功能是:将 a所指 N行 N列的二维数组中的最后一行放到 b所指二维数组的第 0列中,把 a所指二维数组中的第 0行放到 b所指二维数组的最后一列中,b 所指二维数组中其他数据不变。#define N 4void rotade(int aN,int bN)int i,j;for(i=0;iN;i+)biN-1= 9 ; 10 :aN-1i;(分数:2.00)填空
34、项 1:_ (正确答案:9 a0)i10 bi0)解析:解析 biN-1;s0i实现把 a所指二维数组中的第 0行放到 b所指二维数组的最后一列中,bi0= aN-1i门实现将 a所指 N行 N列的二维数组中的最后一行放到 b所指二维数组中的第 0列。50.以下程序的输出结果是_。#include stdio.hvoid swap(int *a, int *b)int *tt=a; a=b; b=tmain()int i=3,j=5,*p=&i,*q=&j;swap(p,q); printf(“%d %d/n“,*p,*q);(分数:2.00)填空项 1:_ (正确答案:3 5)解析:解析 函
35、数 swap(int*a,int*b)的功能是实现*a 和*b,中两个数据的交换,在主函数中调用swap(p,q)后,参形指针变量 a和 b分别指向 i和 j,在 swap(int*a,int*b)执行完后,指针变量 a和 b分别指向 j和 i,而指针变量 p,q 所指向变量的值没有发生变化,所以输出结果为 3 5。51.下面程序的运行结果是_。#includestdio.h#define SIZE 12main()char sSIZE;int i; for(i=0;iSIZE;i+) si=A+i+321;sub(s,7,SLZE-1);for(i=0;iSIZE;i+) printf(“%
36、c“,si);printf(“/n“);sub(char*a,int tl,int t2)char Ch;while (t1t2)ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch;t1+;t2-;(分数:2.00)填空项 1:_ (正确答案:a b c d e f g l k j i h)解析:解析 本题主要考查了字符变量可参与的运算。因为字符在计算机中是以 ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大写字母的 ASCII 码值比它对应的小写字母 ASCII码值小 32。52.以下程序的输出结果是_。#include std
37、io.hmain()int a5=2,4,6,8,10,*p;p=a; p+;printf(“%d“,*p);(分数:2.00)填空项 1:_ (正确答案:4)解析:解析 在主函数中,语句 p=a;p+使用指针 p指向数组 a1,所以输出结果为 4。53.设有定义“stmctint a;float b;char cabc,*p_abc=&abc;”,则对结构体成员 a的引用方法可以是 abc.a和 p_abc 1。(分数:2.00)填空项 1:_ (正确答案:-)解析:解析 若结构体变量 abc有成员 a,并有指针 p_abc指向结构变量 abe,则引用变量 abe成员 s的标记形式有 abe
38、.a和 p_abc-a。54.以下程序的运行结果是_。#include stdio.hmain()FILE *fp; int a10=1,2,3,0,0,i;fp=fopen(“d2dat“,“wbt“);fwtite(a,sizeof(int),5,fp);fwlite(a,sizeof(int),5,fp);fclose(fp);fp=fopen(“d2dat“,“rb“);fread(a,sizeof(int),10,fp);fclose(fp);for(i=0;i10;i+)printf(“%d“,ai);(分数:2.00)_解析:解析 本题考查文件读写函数 fread和 fwrite的用法。fwrite 函数将数组 a的前 5个元素输出到文件 fp中两次,共 10个字节,再调用 fread函数从文件 fp中读取这 10个字节的数据到数组 a中,此时数组 a的内容就变为1,2,3,0,0,1,2,3,0, )