




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2007年4月全国等级考试题目第25次(已经修改)一、选择题下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。(1-11题,软件技术基础单向选择题目)1. 下列叙述中正确的是( )A) 算法的效率只与问题的规模有关,而与数据的存储结构无关 B) 算法的时间复杂度是指执行算法所需要的计算工作量 C) 数据的逻辑结构与存储结构是一一对应的 D) 算法的时间复杂度与空间复杂度一定相关 B解析 根据时间复杂度和空间复杂度的定义可知,算法的时间复杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间关系的,是独立于计算机中的,数据的存储结构是研究数据元素和数据元素之间的关系如何在计算机中表示,它们并非一一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。 2. 在结构化程序设计中,模块划分的原则是( )A) 各模块应包括尽量多的功能 B) 各模块的规模应尽量大 C) 各模块之间的联系应尽量紧密 D) 模块内具有高内聚度、模块间具有低耦合度 D解析 在结构化程序设计中,一般较优秀的软件设计尽量做到高内聚、低耦合,这样有利于提高软件模块的独立性,这也是模块划分的原则。 3. 下列叙述中正确的是( )A) 软件测试的主要目的是发现程序中的错误 B) 软件测试的主要目的是确定程序中错误的位置 C) 为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作 D) 软件测试是证明软件没有错误 A解析 软件测试是为了发现错误而执行程序的过程,且为了达到好的测试效果,应该由独立的第三方来构造测试,程序员应尽量避免检查自己的程序。 4. 下面选项中不属于面向对象程序设计特征的是( )A) 继承性 B) 多态性 C) 类比性 D) 封装性 C解析 面向对象程序设计的3个主要特征是:封装性、继承性和多态性。 5. 下列对队列的叙述正确的是( )A) 队列属于非线性表 B) 队列按“先进后出”原则组织数据 C) 队列在队尾删除数据 D) 队列按“先进先出”原则组织数据 D解析 队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾(rear),允许删除的一端称为队首(front)。队列具有先进先出的特点,它是按“先进先出”的原则组织数据的,故本题答案为D)。 6. 对下列二叉树 进行前序遍历的结果为( )A) DYBEAFCZX B) YDEBFZXCA C) ABDYECFXZ D) ABCDEFXYZ C解析 二叉树前序遍历的含义是:首先访问根结点,然后按前序遍历根结点的左子树,最后按前序遍历根结点的右子树,前序遍历二叉树的过程是一个递归的过程。根据题目中给出的二叉树的结构可知前序遍历的结果是:ABDYECFXZ。 7. 某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为( )A) n+l B) n-1 C) 2n D) n/2 A解析 对于任何一棵二叉树T,如果其终端结点(叶子)数为n1,度为2的结点数为n2,则n1= n2+1。所以该二叉树的叶子结点数等于n+1。 8. 在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是( )A) 并 B) 交 C) 投影 D) 笛卡儿乘积 B解析 在关系运算中,“交”的定义如下:设 R1和R2为参加运用算的两个关系,它们具有相同的度n,且相对应的属性值取自同个域,则R1R2为交运算,结果仍为度等于n的关系,其中的元组既属于R1又属于R2。 根据定义可知,不改变关系表的属性个数但能减少元组个数的是交运算,故本题答案为B)。 9. 在E-R图中,用来表示实体之间联系的图形是( )A) 矩形 B) 椭圆形 C) 菱形 D) 平行四边形 C解析 E-R模型可用E-R图来表示,它具有3个要素:实体(型)用矩形框表示,框内为实体名称。属性用椭圆型来表示,并用线与实体连接。属性较多时也可以将实体及其属性单独列表。实体间的联系用菱形框表示。用线将菱形框与实体相连,并在线上标注联系的类型。 10. 下列叙述中错误的是( )A) 在数据库系统中,数据的物理结构必须与逻辑结构一致 B) 数据库技术的根本目标是要解决数据的共享问题 C) 数据库设计是指在已有数据库管理系统的基础上建立数据库 D) 数据库系统需要操作系统的支持 A解析 数据库设计(Database Design)是指根据用户的需求,在某一具体的数据库管理系统上设计数据库的结构并建立数据库的过程;数据库技术的根本目标是要解决数据共享的问题;数据库需要操作系统的支持;数据的物理结构又称数据的存储结构,就是数据元素在计算机存储器中的表示及其配置。数据的逻辑结构是指数据元素之间的逻辑关系,它是数据在用户或程序员面前表现的方式,在数据库系统中,数据的物理结构不一定与逻辑结构一致。 11. 算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的( )A) 正当性 B) 可行性 C) 确定性 D) 有穷性 C解析 一个算法应当具有5个特性,即有穷性、确定性、可行性、有零个或多个输入以及有一个或多个输出。算法的确定性是指:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。并且在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的执行结果。 (12-50),C语言综合单向选择题12. 以下叙述中错误的是( )A) 计算机不能直接执行用C语言编写的源程序 B) C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件 C) 后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D) 后缀为.obj和.exe的二进制文件都可以直接运行 D解析 一个C语言的源程序(后缀名为. c)在经过编译器编译后,先生成一个汇编语言程序,然后由编译程序再将汇编语言程序翻译成机器指令程序,即目标程序(后缀名为.obj),目标程序不可以直接运行,它要和库函数或其它目标程序连接成可执行文件(后缀名为.exe)后方可运行。故本题答案为D)。 13. 按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( )A) 大写字母 B) 连接符 C) 数字字符 D) 下划线 B解析 在C语言中,用户标识符命令规则规定:变量名只能由字母、数字或下划线3种字符组成,且第一个字符必须为字母或下划线。在C语言中,大写字母和小写字母被认为是两个不同的字符。据此规定A)、D)、C)三个选项是正确的,而B)选项是连字符,不在C语言规定的命名变量标识符的范围内。 14. 以下叙述中错误的是( )A) C语言是一种结构化程序设计语言 B) 结构化程序由顺序、分支、循环三种基本结构组成 C) 使用三种基本结构构成的程序只能解决简单问题 D) 结构化程序设计提倡模块化的设计方法 C解析 结构化程序设计是指在程序的构成上只使用顺序、选择(即分支)和循环3种结构组成的编程方式。它强调程序设计风格和程序结构的规范化,提倡清晰的结构。结构化程序设计方法的基本思路,是把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。结构化程序设计提倡模块化的设计方法。 15. 对于一个正常运行的C程序,以下叙述中正确的是( )A) 程序的执行总是从main函数开始,在main函数结束 B) 程序的执行总是从程序的第一个函数开始,在main函数结束 C) 程序的执行总是从main函数开始,在程序的最后一个函数中结束 D) 程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束 A解析 一个C程序总是从main函数开始执行,而不论其在程序中的位置。在main函数中可以调用程序中的其他函数,而其他函数却不可以调用 main函数。程序最后再从main函数中结束。 16. 设变量均已正确定义,若要通过scanf(%d%c%d%c,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值 10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:口代表空格字符) ( )A) 10口X口20口Y B) 10口X20口Y C) 10口X 20口Y D) 10X 20Y 不需要加空格! D解析 本题中,scanf函数的格式控制没有空格,所以,对于选项A)、B)、C),输入的第一个空格会作为字符赋值给变量c1,而不会被解释成分隔符。 17. 若有代数式 (其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是( )A) sqrt(abs(nx+eX) B) sqrt(fabs(pow(n,x)+pow(x,e) C) sqrt(fabs(pow(n,x)+exp(X) D) sqrt(fabs(pow(x,n)+exp(x) C解析 本题主要考查C语言的库函数。 abs求整数的绝对值,fabs求双字节型的绝对值,pow函数的原形是double pow(double X,double Y),计算x的y次方;exp函数的原形是double exp(double X),求10的 X次方;sqrt函数的原形是double sqrt(double x),为x的平方根。故本题答案为C)。 18. 设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是( )A) k+ B) k+=1 C) +k D) k+1 A解析 因为“int k=0;”,所以B)、C)、D)三个选项的表达式的值都等于1,而A)选项的表达式的值等于0。这是因为“k+”这个表达式先进行取k值的运算,然后是k值自加1。故本题答案为A)。 19. 有以下程序,其中%u表示按无符号整数输出 main() unsigned int x=0xFFFF;/* x的初值为+六进制数 */ printf(%un,x); 程序运行后的输出结果是( )A) -1 B) 65535 C) 32767 D) 0xFFFF B解析 “%u”格式符用来以+进制形式输出无符号整型变量,其取值范围是065535。本题中无符号整型变量x=0xFFFF(+六进制)表示的是无符号整型变量的最大值65535。 20. 设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是( )A) if(x+); B) if(xy&y!=0); C) if(x0)x- else y+; D) if(y0&n5); 程序运行后的输出结果是( )A) 235 B) 0235 C) 02356 D) 2356 A解析 因为变量的初始值分别为“k=5,n =0”,所以程序第一次进入循环时,执行default语句,这时k=4,执行case 4:”这个分支,结果是“n=2,k= 3”,打印出2;程序然后进行第二次循环,这时“n=2,k =3”,执行case 3:”这个分支,结果是“n=3,k=2”,打印出3;程序进行第三次循环,这时“n=3,k=2”,执行“case 2:case 4:”这两个分支,结果是“n=5,k=1”,打印出5,这时因为n=5不满足n5的循环条件,因此退出循环,程序运行结束。因此输出结果是235。 24. 有以下程序 main() int i,j; for(i=1;i4;i+) for(j=i;j4;j+)printf(%d*%d=%d ,i,j,i*j); printf(n); 程序运行后的输出结果是( )A) 1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3 B) 1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9 C) 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 D) 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 B解析 本题主要考查了for循环的嵌套。外层for循环的自变量i从1开始,每次循环后增l,至到i等于3结束。内层循环的自变量j每次从i开始,每次循环后增1,至到j等于3结束。在每次外循环开始后,内层循环在一行上先打印“i*j=两个乘数的积”,然后换行,下次循环从下一行开始打印。 25. 以下合法的字符型常量是( )A) x13 B) 081 C) 65 D) n A解析 C语言的字符常量是用单引号(即撇号)括起来的一个字符。除此之外,在C语言中还允许用以一个“”开头的字符序列来表示字符常量。其中,形式“ddd”表示1到3位8进制数所代表的字符;形式“xhh”表示1到2位16进制数所代表的字符。在本题中x13表示回车符,是一个字符常量;081用 8进制数所代表的字符,但形式不正确,因为8进制数所表示的字符中不会出现数字“8”;65不是一个字符,而是一个+进制数字;“n”是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。 26. 在C语言中,函数返回值的类型最终取决于( )A) 函数定义时在函数首部所说明的函数类型 B) return语句中表达式值的类型 C) 调用函数时主调函数所传递的实参类型 D) 函数定义时形参的类型 A解析 在C语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律自动按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数类型为主。即函数类型决定返回值的类型。 27. 已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是( )A) c=(c-A)%26+a B) c=c+32 C) c=c-A+a D)c=(A+c)%26-a D解析 C语言中,字符数据参加运算时,实际上是其ASCII码参与计算。大写字母的ASCII码比其对应的小写字母的ASCII码小31。因此要将大写字母转化为小写字母只需将其加上32即可。所以选项 B)、C)都符合条件,因为变量C中存储的是大写字母,所以“c-A”的值一定小于26,故选项A)与选项C)的含义相同。故本题答案为D)。 28. 有以下函数 int fun(char *s) char *t=s; while(*t+); return(t-s); 该函数的功能是 A) 比较两个字符串的大小 B) 计算s所指字符串占用内存字节的个数 C) 计算s所指字符串的长度 D) 将s所指字符串复制到字符串t中 B解析 循环语句while(*t+);执行完时,指针变量t就指向了字符中结束符o之后的位置,所以语句return(t-s);返回的就是字符串s所用内存的字节个数。 29. 设已有定义:float x;,则以下对指针变量p进行定义且赋初值的语句中正确的是( )A) float *p=1024; B) int *p=(float)x; C) float p=&x; D) float *p=&x; D解析 指针变量只能存储地址,选项A)错误。只有浮点型指针才能指向浮点型数据,选项B)错误。在定义指针变量时必须加上星号“*”,选项C)错误。故本题答案为D)。 30. 有以下程序 #include main() int n,*p=NULL; *p=&n; printf(Input n:);scanf(%d,&p);printf(output n:);printf(%dn,p); 该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是( )A) int n,*p=NULL; B) *p=&n; C) scanf(%d,&p) D) printf(%dn,p); A解析 指针变量在定义时需要加星号,而在赋值时则不用,故选项B)错误。本题中,scanf()函数和printf()函数都是要对指针变量p指向的地址处的数据进行访问,不是变量本身。选项C)中多了取地址运算符,选项D)中少了指针运算符。 31. 以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序。 void f(int b,int n,int flag) int i,j,t; for(i=0;in-1;i+) for(j=i+1;jbj:bibj) t=bi;bi=bj;bj=t; main() int a10=5,4,3,2,1,6,7,8,9,10,i; f(&a2,5,0);f(a,5,1); for(i=0;i10;i+)printf(%d,ai); 程序运行后的输出结果是( )A) 1,2,3,4,5,6,7,8,9,10, B) 3,4,5,6,7,2,1,8,9,10, C) 5,4,3,2,1,6,7,8,9,10, D) 10,9,8,7,6,5,4,3,2,1, B解析 在main()中,“f(&a2,5,0);”语句的功能是对数组a10中从a2到a6的数宇(即3,2,1, 6,7)进行从大到小排序,这时数组a10中的数字序列变为5,4,7,6,3,2,1,8,9,10。“f(a,5,1);”语句的功能是对数字序列5,4,7,6,3,2,1,8,9,10中的5,4,7,6,3进行从小到大的排序,所以数组a10中的数字序列最终变为3, 4,5,6,7,2,1,8,9,10。 32. 有以下程序 void f(int b) int i; for(i=2;i6;i+) bi*=2; main() int a10=1,2,3,4,5,6,7,8,9,10),i; f(a); for(i=0;i10,i+)printf(%d,ai); 程序运行后的输出结果是( )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, B解析 在main()中,f(a)语句的作用是对数组a10中从a2到a5的各个数字乘以2,所以数组a10中的数字就变成了1,2,6,8,10,12,7,8, 9,10,最后在屏幕上输出。 33. 有以下程序 typedef structint b,p;A; void f(A c) /* 注意:c是结构变量名 */ int j; c.b+=1;c.p+=2; main() int i; A a=1,2; f(a); printf(%d,%dn,a.b,a.p); 程序运行后的输出结果是( )A) 2,3 B) 2,4 C) 1,4 D) 1,2 D解析 本题考查的是函数调用时的数据传递问题。因为在调用函数f()时只是进行的值传递,即单向传递,函数的调用及对形参的处理过程并不会引起实参数值的变化。故本题答案为D)。 34. 有以下程序main() int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,j,k,t; for(i=0;4:i+) for(j=0;j3;j+) for(k=j+1;kakit=aji;aji=aki=aki=t; /*按列排序*/ for(i=0;i4;i+)printf(%d,aii); 程序运行后的输出结果是( )A) 1,6,5,7, B) 8,7,3,1, C) 4,7,5,2, D) 1,6,2,1, A解析 本题利用多重for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列。最后输出对角线上的元素值。故本题答案为A)。 35. 有以下程序 main() int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,k,t; for(i=0;i3;i+) for(k=i+1;k4;k+)if(aiiakk)t=aii;aii=akk;akk=t; for(i=0;i4;i+)printf(%d,a0i); 程序运行后的输出结果是( )A) 6,2,1,1, B) 6,4,3,2, C) 1,1,2,6, D) 2,3,4,6, B解析 本题使用选择法对二维数组对角线上的元素按从大到小的顺序进行排列。最后输出数组第一行的数据。故本题答案为B)。 36. 有以下程序 void f(int *q) int i=0; for(;i5;i+) (*q)+; main() int a5=1,2,3,4,5,i; f(a); for(i=0;i5;i+)printf(%d,ai); 程序运行后的输出结果是 A) 2,2,3,4,5, B) 6,2,3,4,5, C) 1,2,3,4,5, D) 2,3,4,5,6, B解析 调用函数f( )时,将数组a的地址传递给了指针q,此时q指向的就是数组a的第一个元素a0。在5次循环过程中,q始终指向a0,因此a 0的值增加了5。最后的输出结果为“6,2,3,4,5”。 37. 有以下程序 #include main() char p20=a,b,c,d,q=abc,r =abcde; strcpy(p+strlen(q),r);strcat(p,q); printf(%d%dn,sizeof(p),strlen(p); 程序运行后的输出结果是( )A) 20 9 B) 9 9 C) 20 11 D) 11 11 C解析 函数strlen()返回的是数组的实际长度,而sizeof返回的是数组定义的总长度。因为字符数组p20定义为20字节长度,所以sizeof(p)的值为 20。“strcpy(p+strlen(q),r);”语句的功能把字符数组 r拷贝到字符数组p从p3开始到p7的位置中,这时字符数组p的有效字符长度为8。然后再执行strcat (p,q);”语句(字符串连接),即把字符数组q连接到字符数组p后面,这时字符数组p的有效长度为11。 38. 有以下程序 #include main() char p20=a,b,c,d,q =abc,r =abcde; strcat(p,r);strcpy(p+strlen(q),q); printf(%dn,strlen(p); 程序运行后的输出结果是( )A) 9 B) 6 C) 11 D) 7 B解析 strcpy()函数的功能是将字符串q复制到从p3位置开始的存储单元,同时复制字符串结束标志0到p6中。函数strlen()返回的是字符串中不包括0在内的实际长度,故本题答案为B)。 39. 有以下程序 #include void f(char p10,int n)/*字符串从小到大排序*/ char t10;int i,j; for(i=0;in-1;i+) for(j=i+1;j0) strcpy(t,pi);strcpy(pi,pj);strcpy(pj,t); main() char p510=abc,aabdfg:,abbd,dcdbe,cd; f(p,5); printf(%dn,strlen(p0); 程序运行后的输出结果是( )A) 2 B) 4 C) 6 D) 3 C解析 本题中函数f()利用选择法对字符串数组p中的字符中按从小到大排序,字符串比较的方法是:依次对S1和S2所指字符串对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符(ASCII码值)决定所在串的大小,因此最后在 p0中存储的是最小的字符串是“aabdfg”。最后用 strlen()函数求得该字符串的长度为6。 40. 有以下程序 void f(int n,int *r) int r1=0; if(n%3=0) r1=n/3; else if(n%5=0) r1=n/5; else f(-n,&r1); *r=r1; main() int m=7,r; f(m,&r);printf(%d,r); 程序运行后的输出结果是( )A) 2 B) 1 C) 3 D) 0 A解析 本题考查了函数的递归调用。在f函数中,当m=7时,程序执行“f(-n,&r1);”语句,递归调用f(6,&r1),程序执行“r1=n/3;”语句,即r1= 6/3=2,然后执行“*r=r1;”语句,所以输出结果为2。 41. 有以下程序 main(int argc,char *argv ) int n=0,i; for(i=1;iargc;i+) n=n*10+ *argv i - 0; printf(%dn,n); 编译连接后生成可执行文件tt.exe。若运行时输入以下命令行tt 12 345 678 。程序运行后的输出结果是( )A) 12 B) 12345 C) 12345678 D) 136 D解析 运行时输入该命令后,参数argc的值为4,字符串数组argv1、argv2、argv3分别为“12”、“345”、“678”,然后取这3个参数的第一个字符,将其转化成原来的数字并组合成一个新的三位数。 42. 有以下程序 int a=4; int f(int n) int t=0;static int a=5; if (n%2) int a=6;t+=a+; else int a=7;t+=a+; return t+a+; main() int s=a,i=0; for(;i2;i+) s+=f(i); printf(%dn,s); 程序运行后的输出结果是( )A) 24 B) 28 C) 32 D) 36 B解析 本题考查的是变量的作用域问题。程序中定义了多个变量a,全局变量、静态变量和局部变量分别在自己的作用域中参与运算。在main()函数中首先执行“s+=f(0);”语句,而f(0)返回值为12,所以第一次循环结束s的值等于4+12=16;第二次开始时,当执行f(1)时,在f(1)中执行“if(n%2)int a=6; t+=a+;”和“return t+a+;”这两条语句,所以f (1)的返回值等于12。再在主函数中执行“s+=f (1);”语句,也就是16+12=28。 43. 有一个名为init.txt的文件,内容如下: #define HDY(A,B) A/B #define PRINT(Y) printf(y=%dn,Y) 有以下程序 #includeinit.txt main() int a=1,b=2,c=3,d=4,k; k=HDY(a+c,b+d); PRINT(k); 下面针对该程序的叙述正确的是( )A) 编译出错 B) 运行出错 C) 运行结果为y=0 D) 运行结果为y=6 D解析 本题考查的是带参数的宏定义。不仅要进行简单的字符替换,还要进行参数替换。根据宏替换的规则,本题在进行替换宏HDY时,没有像所希望的那样将HDY(a+c,b+d)替换成(a+c)/(b+ d),而是替换成了“a+c/b+d”,因此结果k为6。 44. 有以下程序 main() char ch=uvwxyz,*pc; pc=ch;printf(%cn,*(pc+5); 程序运行后的输出结果是( )A) z B) 0 C) 元素ch5的地址 D) 字符y的地址 A解析 将字符串的地址赋值给字符指针变量后,指针就指向了该字符串的第一个字符,即“*p =u”,所以*(p+5)指向的字符是z。 45. 有以下程序 struct S int n;int a20; void f(struct S *p) int i,j,t; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(p-aip-aj) 从小到大t=p-ai;p-ai=p-aj;p-aj=t; main() int i;struct S s=10,2,3,l,6,8,7,5,4,10,9; f(&s); for(i=0;is.n;i+)printf(%d,s.ai); 程序运行后的输出结果是( )A) 1,2,3,4,5,6,7,8,9,10, B) 10,9,8,7,6,5,4,3,2,1, C) 2,3,1,6,8,7,5,4,10,9, D) 10,9,8,7,6,1,2,3,4,5, A解析 本题中,在调用函数f()时,实参是结构体变量s的地址,所以在函数中对形参的改变会影响到实参的数值。函数f()实现的功能是把结构体的成员数组中的值按从小到大顺序进行排列。 46. 有以下程序 struct S int n;int a20; void f(int *a,int n) int i; for(i=0;in-1;i+) ai+=i; main() int i;struct S s=10,2,3,1,6,8,7,5,4,10,9; f(sa,sn); for(i=0;is.n;i+)printf(%d,s.ai); 程序运行后的输出结果是( )A) 2,4,3,9,12,12,11,11,18,9, B) 3,4,2,7,9,8,6,5,11,10, C) 2,3,1,6,8,7,5,4,10,9, D) 1,2,3,6,8,7,5,4,10,9, A解析 本题中,在调用函数时将结构体变量的两个成员作为实参,其中的成员数组a实际向函数f()传递的是该数组的地址,因此在函数f()中所对应的形参发生改变时,该数组内的数据也会发生改变。函数f()实现的功能是将成员数组中的前9个元素分别加上该元素的下标,作为新的元素。 47. 有以下程序段 typedef struct node int data;struct node *next; *NODE; NODE p; 以下叙述中正确的是( )A) p是指向struct node结构变量的指针的指针 B) NODE p;语句出错 C) p是指向struct node结构变量的指针 D) p是struct node结构变量 C解析 在C语言中,typedef用于说明一种新的类型名,本题中的node被定义为一种结构体类型名,NODE被定义为指向这种结构体变量的指针,我们可以用它来定义一个指向该类型结构体变量的指针。 48. 有以下程序 main() unsigned char a=2,b=4,c=5,d; d = a|b;d &=c;printf(%dn,d); 程序运行后的输出结果是( )A) 3 B) 4 C) 5 D) 6 B解析 本题考查的内容是按位与和按位或运算符的使用,由运算规则可知,d的最终结果为4。 49. 有以下程序 #include main() FILE *fp;int k,n,a6=1,2,3,4,5,6; fp=fopen(d2.dat,w); fprintf(fp,%d%d%dn,a0,a1,a2);fprintf(fp,%d%d%dn,a3,a4,a5); fclose(fp); fp=fopen(d2.daf,r); fscanf(fp,%d%d,&k,&n);printf(%d%dn,k,n); fclose(fp); 程序运行后的输出结果是( )A) 1 2 B) 1 4 C) 123 4 D) 123 456 D解析 将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。故本题答案为D)。 50. 有以下程序 #include main() FILE *fp;int i,a6=1,2,3,4,5,6; fp=fopen(d3.dat,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;i6;i+)printf(%d,ai); 程序运行后的输出结果是( )A) 4,5,6,4,5,6, B) 1,2,3,4,5,6, C) 4,5,6,1,2,3, D) 6,5,4,3,2,1, A解析 首先利用fwrite函数将数组a中的数据写到文件中,接着fseek函数的功能是读文件的位置,指针从文件头向后移动3个int型数据,这时文件位置指针指向的是文件中的第4个int数据“4”。然后 fread函数将文件fp中的后3个数据4,5,6读到数组a中,这样就覆盖了数组中原来的前3项数据。最后数组中的数据就成了4,5,6,4,5,6,故本题答案为A)。 二、填空题请将每一个空的正确答案写在【1】至【20】序号的横线上。(1-5,软件技术基础填空题)1. 在深度为7的满二叉树中,度为2的结点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025新人教版三年级数学下册评估与反馈计划
- 客户检验标准培训
- 成人教育副校长年度工作计划
- 2025小学教育课外活动创新计划
- 2025年小学四年级社会实践教学计划
- 2025年宠物训导师职业能力测试卷:宠物训练团队协作与沟通技巧案例分析报告篇试题
- 小学五年级英语学习计划
- 体育赛事安全检测试验项目计划
- 六年级语文经典文学赏析计划
- 2025-2030中国废钢行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 发热病人中医护理
- 捕鼠公司合同协议
- 2025-2030中国煤化工行业发展分析及投资风险与战略研究报告
- 四川自贡九鼎大楼“7·17”重大火灾事故调查报告学习警示教育
- 小学生国家安全教育日学习课件
- 2025标准金融服务合同范本
- 农业环境与可持续发展试题及答案
- 洗涤机械生产过程质量控制考核试卷
- 2025年中国安防视频监控镜头市场竞争态势及投资方向研究报告
- 画龙点睛成语故事
- 电信行业用户欠费催收策略与措施
评论
0/150
提交评论