2018年4月高等教育自学考试 2018年4月高等教育自学考试《计算机软件基础(一)》试题 课程代码:02243 一、单项选择题 1.语句x=4%5+(5/4);运行之后,整型变量x的值为 A.1 B.4 C.5 D.5.25 2.若有定义:inta=5,b=2;则表达式b=(a!-5)的值为 A.0 B. 1 C.2 D.5 3.下列程序执行后输出结果是 void main( ) {int i; for(i= 1;i <=3;i++ ) switch ( i ) {case 1: printf(" % d" , i); break; case 2: prinff( "% d", i); default: prinff( "% d", i); } } A. 123 B. 132 C. 1223 D. 111223 4.下列不能对二维数组a进行正确初始化的语句是 A. int a[3][2]={{1,2,3}, {4,5,6}}; B. int a[3][2]={{1},{2,3},{4,5}}; C. int a[][2]={{1,2},{3,4},{5,6}}; D. int a[3][2]={1,2,3,4,5}; 5.下列程序的输出结果是 #include < stdio, h > int num: 10; int func ( ) {int num: 4; return++nam; } void main( ) { prinff( "% d\n", func( ) ); } A. 1 B.4 C. 5 D. 10 6.下列程序段运行后,表达式*(p+4)的值为 char a[ ]: "china"; char *p; p=a; A.'a' B.'n' C.存放'n'的地址 D.存放'a'的地址 7.一个结构体变量占用的内存大小是 A.占内存容量最大的成员所需容量 B.各成员所需内存容量之和 C.第一个成员所需内存容量 D.最后一个成员所需内存容量 8.某程序的时间复杂度为(5n+nlog2n+n2),其数量级表示为 A.O(n) B. O(log2n) C. O(nlog2n) D. O(n2) 9.下列程序段的时间复杂度为 i=1; while ( i<=n) i=i*3; A. O(n) B. O(3n) C. O(log3n) D. O(n3) 10.从表中任一结点出发,都能扫描整个表的是 A.静态链表 B.单链表 C.顺序表 D.循环单链表 11.设计一个判别表达式中左右括号是否配对出现的算法,采用的最佳数据结构是 A.栈 B.队列 C.线性表的顺序存储结构 D.线性表的链式存储结构 12.在一棵具有5层的满二叉树中结点总数为 A.16 B.31 C.32 D.33 13.采用邻接表存储的图,其深度优先遍历类似于二叉树的是 A.中序遍历 B.先序遍历 C.后序遍历 D.层次遍历 14.对于一个有向图,若一个顶点的人度为k1,出度为k2,则对应邻接表中该顶点单链表中的结点数为 A.k1 B.k2 C.k1+k2 D.k1-k2 15.大型软件系统的测试通常由四个步骤组成,这些测试方法应用的先后顺序是 A.确认测试→单元测试→集成测试→系统测试 B.单元测试→系统测试→确认测试→集成测试 C.系统测试→集成测试→单元测试→确认测试 D.单元测试→集成测试→确认测试→系统测试 二、填空题 16.int a=24;pfintf("%o",a);输出结果是 。 17.若int a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是 。 18.在C语言中,允许函数的嵌套调用,但不允许函数的嵌套 。 19.数组在内存中占用一段连续的存储空间,它的首地址由 表示。 20.判断带头结点的单链表head为空的条件是 。 21.由3个结点所构成的二叉树有 种形态。 22.对一个二叉排序树进行 遍历,结果是一个递增序列。 23.已知有序表为(12,18,24,35,47,50,62,83,90,115,134),当用折半查找90这个元素,需进行 次查找可确定成功。 24.计算机科学技术领域引入的工程化方法来缓解 ,从而逐步形成了计算机软件工程学。 25.能方便清晰地表达复杂条件组与其应做动作之间的对应关系的详细设计工具是 。 三、简答题 26.写出二叉树后序遍历的定义。 27.已知图的邻接表如题27图所示,绘制出该图,并给出从顶点。出发按深度优先遍历的结点序列。 28.试构造一个有13个节点的折半查找判定树,并求成功的平均查找次数ASL。 29.有一组关键字值为:{40,17,18,7,85,32,60,65,73}。试用直接选择排序的方法进行排序,写出前4趟排序结果。 四、程序分析题 请将划线部分的程序代码补充完整。 30.下面程序用于计算n!的值。 #include < stdio, h > void main( ) { ihti,s,n; printf( "enter n:"); scanf( "% d", &n); ; for(i: 1;i <:n;i++ ) ; printf( "s = %d" ,s); } 31.输入三位正整数,分解为各个位数之和,例如423分解为4+2+3之和,输出为: s=9。 #include < stdio, h > void main( ) { intn,c,cl,c2,c3; printf( "Enter n = "); scanf( "% d", &n ); printf(" n :%d" ,n); c=0;cl :0;c2'-0;c3 --0; cl: ;/* 求百位* / c2:n/10% 10; c3: ;/* 求个位*/ c:el +c2 +c3; prinff( "s = % d\n" ,c); } 32.以下程序的功能是:输出一组无重复数据中的最小数min与次小数scn_min。 #include < stdio, h > void main( ) { inta[10]; intmin, scn_min, i; for(i=0;i < 10;i++ ) scanf( "% d", &a[i] ); if(a[0] <a[1]) { min =a[0]; scn_min =a[1]; } else { min =ail]; scn_min =a[0]; } for(i=2;i <10;i++) { if(alii <min) { ; min = a [i]; } else if(a[i] < ) scn_min = a[i]; } printf( "min = % d, scn_min = % d \n", min, scn_min); } 33. 以下程序的功能是:输出满足约束条件的整数n的最大值。 //include < stdio, h > void main( ) { intn. sum; n=0; ; while ( sum < 10000) { ; sum+:n, (2,n-1) *(2*n-1); printf( "n= % d\n" .n-1 ); } 五、程序设计题 34.写一段c语言程序实现:从键盘上输人10个学生某门课的成绩,计算平均成绩,统计并输出所有高于平均分的学生成绩及人数。 35.编程统计带头结点的单链表中结点的个数(包括数据结构的定义)。 课程代码:02243 一、单项选择题 1.语句x=4%5+(5/4);运行之后,整型变量x的值为 A.1 B.4 C.5 D.5.25 2.若有定义:inta=5,b=2;则表达式b=(a!-5)的值为 A.0 B. 1 C.2 D.5 3.下列程序执行后输出结果是 void main( ) {int i; for(i= 1;i <=3;i++ ) switch ( i ) {case 1: printf(" % d" , i); break; case 2: prinff( "% d", i); default: prinff( "% d", i); } } A. 123 B. 132 C. 1223 D. 111223 4.下列不能对二维数组a进行正确初始化的语句是 A. int a[3][2]={{1,2,3}, {4,5,6}}; B. int a[3][2]={{1},{2,3},{4,5}}; C. int a[][2]={{1,2},{3,4},{5,6}}; D. int a[3][2]={1,2,3,4,5}; 5.下列程序的输出结果是 #include < stdio, h > int num: 10; int func ( ) {int num: 4; return++nam; } void main( ) { prinff( "% d\n", func( ) ); } A. 1 B.4 C. 5 D. 10 6.下列程序段运行后,表达式*(p+4)的值为 char a[ ]: "china"; char *p; p=a; A.'a' B.'n' C.存放'n'的地址 D.存放'a'的地址 7.一个结构体变量占用的内存大小是 A.占内存容量最大的成员所需容量 B.各成员所需内存容量之和 C.第一个成员所需内存容量 D.最后一个成员所需内存容量 8.某程序的时间复杂度为(5n+nlog2n+n2),其数量级表示为 A.O(n) B. O(log2n) C. O(nlog2n) D. O(n2) 9.下列程序段的时间复杂度为 i=1; while ( i<=n) i=i*3; A. O(n) B. O(3n) C. O(log3n) D. O(n3) 10.从表中任一结点出发,都能扫描整个表的是 A.静态链表 B.单链表 C.顺序表 D.循环单链表 11.设计一个判别表达式中左右括号是否配对出现的算法,采用的最佳数据结构是 A.栈 B.队列 C.线性表的顺序存储结构 D.线性表的链式存储结构 12.在一棵具有5层的满二叉树中结点总数为 A.16 B.31 C.32 D.33 13.采用邻接表存储的图,其深度优先遍历类似于二叉树的是 A.中序遍历 B.先序遍历 C.后序遍历 D.层次遍历 14.对于一个有向图,若一个顶点的人度为k1,出度为k2,则对应邻接表中该顶点单链表中的结点数为 A.k1 B.k2 C.k1+k2 D.k1-k2 15.大型软件系统的测试通常由四个步骤组成,这些测试方法应用的先后顺序是 A.确认测试→单元测试→集成测试→系统测试 B.单元测试→系统测试→确认测试→集成测试 C.系统测试→集成测试→单元测试→确认测试 D.单元测试→集成测试→确认测试→系统测试 二、填空题 16.int a=24;pfintf("%o",a);输出结果是 。 17.若int a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是 。 18.在C语言中,允许函数的嵌套调用,但不允许函数的嵌套 。 19.数组在内存中占用一段连续的存储空间,它的首地址由 表示。 20.判断带头结点的单链表head为空的条件是 。 21.由3个结点所构成的二叉树有 种形态。 22.对一个二叉排序树进行 遍历,结果是一个递增序列。 23.已知有序表为(12,18,24,35,47,50,62,83,90,115,134),当用折半查找90这个元素,需进行 次查找可确定成功。 24.计算机科学技术领域引入的工程化方法来缓解 ,从而逐步形成了计算机软件工程学。 25.能方便清晰地表达复杂条件组与其应做动作之间的对应关系的详细设计工具是 。 三、简答题 26.写出二叉树后序遍历的定义。 27.已知图的邻接表如题27图所示,绘制出该图,并给出从顶点。出发按深度优先遍历的结点序列。 28.试构造一个有13个节点的折半查找判定树,并求成功的平均查找次数ASL。 29.有一组关键字值为:{40,17,18,7,85,32,60,65,73}。试用直接选择排序的方法进行排序,写出前4趟排序结果。 四、程序分析题 请将划线部分的程序代码补充完整。 30.下面程序用于计算n!的值。 #include < stdio, h > void main( ) { ihti,s,n; printf( "enter n:"); scanf( "% d", &n); ; for(i: 1;i <:n;i++ ) ; printf( "s = %d" ,s); } 31.输入三位正整数,分解为各个位数之和,例如423分解为4+2+3之和,输出为: s=9。 #include < stdio, h > void main( ) { intn,c,cl,c2,c3; printf( "Enter n = "); scanf( "% d", &n ); printf(" n :%d" ,n); c=0;cl :0;c2'-0;c3 --0; cl: ;/* 求百位* / c2:n/10% 10; c3: ;/* 求个位*/ c:el +c2 +c3; prinff( "s = % d\n" ,c); } 32.以下程序的功能是:输出一组无重复数据中的最小数min与次小数scn_min。 #include < stdio, h > void main( ) { inta[10]; intmin, scn_min, i; for(i=0;i < 10;i++ ) scanf( "% d", &a[i] ); if(a[0] <a[1]) { min =a[0]; scn_min =a[1]; } else { min =ail]; scn_min =a[0]; } for(i=2;i <10;i++) { if(alii <min) { ; min = a [i]; } else if(a[i] < ) scn_min = a[i]; } printf( "min = % d, scn_min = % d \n", min, scn_min); } 33. 以下程序的功能是:输出满足约束条件的整数n的最大值。 //include < stdio, h > void main( ) { intn. sum; n=0; ; while ( sum < 10000) { ; sum+:n, (2,n-1) *(2*n-1); printf( "n= % d\n" .n-1 ); } 五、程序设计题 34.写一段c语言程序实现:从键盘上输人10个学生某门课的成绩,计算平均成绩,统计并输出所有高于平均分的学生成绩及人数。 35.编程统计带头结点的单链表中结点的个数(包括数据结构的定义)。 2018年10月高等教育自学考试《计算机软件基础(一)》试题 课程代码:02243 一、单项选择题 1.下列不是合法常量的是 A.325 B.-234 C.e3 D.0X123 2.下列语句中,符合C语言语法的语句是 A.inta=b=6; B.a=3+5,4+6; C.3++; D.int a,3; 3.若有定义inta,x;则语句a=(x=5,x+5);运行后,变量a、x的值依次为 A.5,5 B.5,10 C.10,5 D.10,10 4.下列表达式可用于判断整型变量x中的值是否为3的倍数的是 A.x/3!=0 B. x/3 ==0 C.x%3!=0 D. x%3 ==0 5.下列程序段运行后,x[1]的值为 int x[5] ={5,4,3,2,1}; x[1] =x[3] +x[2+2]-x[3-1]; A. 0 B.1 C. 5 D. 6 6.下列程序运行后输出结果是 #include < stdio, h > int a=2,b=3,c=5; int fun( int a, int b) { int c; c=a>b? a:b; return(c);} void main ( ) { iht a =6; prinff( "%d" ,fun(fun(a,b) ,e));} A. 5 B.3,5 C. 6,5 D. 6 7.下列程序段的运行结果是 int a[]={1,2,3,4,5},*p=a; int n, sum = 0; for(n=1;n<4;n++) sum+ =pin]; printf( "% d", sum ); A. 6 B. 9 C. 10 D. 15 8.插入和删除操作分别在两端进行的线性表是 A.栈 B.串 C.队列 D.数组 9.设一个顺序表中有n个节点,插人或删除一个节点,平均需移动线性表中节点的数量是 A.1 B. C. D.n 10.在具有2个叶子的二叉树中,度数为2的节点个数有 A.1 B.2 C.3 D.4 11.若已知一个栈的人栈序列是1、2、3、4,其出栈序列不可能为 A.1、4、3、2 B.2、3、4、1 C.3、4、1、2 D.4、3、2、1 12.在对10个元素进行冒泡排序的过程中,需要排序的趟数是 A.1 B.5 C.9 D.10 13.在对一组记录{44,36,76,23,15,72,30,40,21l进行直接插入排序时,当把第7个记录30插入到有序表时,为寻找插入位置需比较次数是 A.1 B.3 C.5 D.6 14.深度为4的二叉树,第4层最多的节点数是 A.1 B.4 C.8 D.16 15.软件生存周期组成不包括 A.软件定义 B.软件开发 C.软件维护 D.软件评估 二、填空题 16.在C语言中,字符串的结尾有个字符'\0',它的作用是字符串的 。 17.已知i=3,写出语句a=i++;执行后整型变量a的值是 。 18.逗号表达式(a=3*5,a*4),a+5的值为 。 19.在C语言程序中,转义字符“\n”的功能是 。 20.若需存储的数据需要频繁的进行插入/删除操作,则应选择的存储结构是 。 21.n阶三对角阵压缩存储至少需要的空间是 个。 22.设某棵完全二叉树中有10个节点,则该二叉树中有 个叶子节点。 23.设二叉排序树的高度为h,则在该树中查找关键字key最多需要比较 次。 24.在成功的测试之后,还必须进一步诊断和改正错误,称这过程为 。 25.等价划分、边界值分析以及错推测法都称为 。 三、简答题 26.有5项任务,每项要求的前驱活动如下: V1:无 V2:V1,V4 V3:V1 V4:V3,V5 V5:V3 要求:(1)画出相应的AOV网络图;(2)给出一个拓扑序列。 27.已知权值集合为{12,4,5,6,1,2},要求构造哈夫曼树,并计算带权路径长度WPL。 28. 假设一棵二叉树的中序遍历序列为DBEACGHF,后序遍历序列为DEBHGFCA。 (1)画出该二叉树;(2)写出先序遍历序列。 29.有一组关键字{14,45,13,22,5,7},写出对其进行直接插入排序(从小到大)前四趟的结果。 四、程序分析题 30.以下fun函数的功能是:输出数组中大于0的数组元素个数。n为数组中元素的个数,请补充划线部分的程序代码。 fun( int b[ ] ,int n) { intk, r=0: for(k=0; k<n;k++) if(b[k]>0) printf("%d", ); } 31.以下程序的功能是计算n的阶乘,即n!=1×2×3×…×(n-1)×n,请补充划线部分的程序代码。 #include < stdio, h > void main( ) { int n,i,s; scanf( "%d" ,&n); ; for(i=1;i<=n;i++) s= ; printf("n!=%d\n",s); } 32.下面程序的执行结果是 。 #include < stdio, h > void main ( ) { char si ]="ABCD", * p; p=s; while( *p!='\0' ) { printf("%s \n" ,p); p++; } } 33.以下程序的功能是找到数组中最大的元素,让它与数组第一个元素交换,然后输出数组。请补充划线部分的程序代码。 #include < stdio, h > void main( ) { iht a[10] = 11,5,7,6,9,3,2,4,8,01 ,i; int max,t; max =0; for(i=1 ;i<9 ;i ++ ) if(a[i]>a[max] ) ; t=a[max]; ; a[0]=t; for(i=0;i<9;i++) prinff("%d", a[i]); } 五、程序设计题 34.编写C语言程序,其中fun函数的功能是:求n以内(包括n)同时能被3和7整除的所有自然数之和;主函数的功能是输入n的值,调用fun函数,并输出结果。 35.编程实现在带头结点的单链表中查找内容为x的节点,若找到,返回该点地址;否则返回NULL。(包括数据结构的定义) 2019年4月高等教育自学考试《计算机软件基础(一)》试题 课程代码:02243 一、单项选择题 1.属于合法的变量名是 A.305L B.-ab C.k_5 D.AK-45 2.下列语句中,符合C语言语法的语句是 A. floatz=28, int x,y=18; B. intx=25,y=25,z=25; C. int x=25: y=25: z=25; D. int x+y=z; 3.若有定义:inta=6;则语句a/=3;运行后,a的值是 A.1 B.2 C 3 D.6 4.下列程序运行结果是 int min (float a ,float b) { int c; if(a<b) c=a; else c=b; return(c);} void main( ) { float x,y; x=4.6;y =3.7; printf("%d\n" ,min(x,y));} A. 3 B.3.7 C. 4 D. 4.6 5.下列能正确判定数学关系式0≤s<10为“真”的C表达式是 A. 0<= s<10 B. (s>=0)and(s<10) C. ((s>=0)&(s<10) D. (s>=0)&&(s<10) 6.下列程序段运行后x的值为 int a[5]={1,2,3,4,5} ,i,x=0; for(i=0;i<5;i++) x=x+a[i]; A. 1 B. 6 C. 10 D. 15 7.下列程序段运行后变量ans的值为 int a[]:{1,2,3},b[]={3,2,1}; int* p=a, *q=b; int k,ans=0; for(k=0;k<3;k++ ) if(,(p+k):=,(q+k)) ans=ans+*(p+k)*2; A. 2 B. 4 C. 6 D. 12 8.栈和队列的共同点是 A.进出原则都是先进先出 B.进出原则都是后进先出 C.都是插入删除操作受限的线性表 D.不允许在任意端点处插入和删除元素 9.在一个长度为n的链式队列中,人队操作的时间复杂度为 A.O(1) B.O(logn) C.O(n) D.0(n2) 10.按照二叉树的定义,具有3个节点的不同形态的二叉树有 A.3种 B.4种 C.5种 D.6种 11.要实现对图的深度优先遍历,要用到的数据结构是 A.队列 B,栈 C.二叉树 D.数组 12.不断把新的数据元素插入到已排好序的序列中去的排序方法是 A.插入排序 B.冒泡排序 C.希尔排序 D.选择排序 13.若数组a有m列,则a[i][j]之前的数组元素个数为 A.(i-1)*(j-1) B.i*m+j+1 C.i*m+j-1 D.i*m+j 14.对节点个数为20的顺序存储有序表,若采用折半查找,则查找第15个节点的成功查找次数为 A.2 B.3 C.4 D.5 15.在软件工程中,下列测试技术中属于白盒测试的是 A.逻辑覆盖法 B.等价划分 C.边界值分析 D.错误推测法 二、填空题 16.若int a,b;,则表达式(a=2,b=5,a++,a+b)的值为 。 17.在C语言中,表达式值为 代表“假”。 18.当a=3,b=2,c=1,f=a>b>c时,f的值为 。 19.设y为int型变量,请写出描述“y是偶数”的表达式 。 20.设顺序队列的头尾指针为front和rear,则队列空的判定条件是 。 21.链式存储一个具有n个节点的二叉树,其中有 个指针域为空。 22.设一棵二叉树的先序序列为ABC,则有 种不同的二叉树可以得到这种序列。 23.设无向图G中有n个顶点,则该无向图中每个顶点的度数最多是 。 24.软件生存周期由软件定义、软件开发和 三个时期组成。 25.需求分析子阶段产生的结果是 。 三、简答题 26.已知如图26所示的无向网,请画出:最小生成树。 27.已知权值集合为{4,2,3,5,6},要求构造哈夫曼树,并计算带权路径长度WPL。 28.已知二叉树的先序遍历序列为ABCDEFGH,中序遍历序列为CBEDFAGH,画出二叉树。 29.有一组关键字{14,15,30,28,5,10},写出对其进行直接选择排序(从小到大)前四趟的结果。 四、程序分析题 30.函数fun的功能是:使数组a逆序存放,n为数组a的长度。请补充划线部分的程序代码。 fun( int a[ ],int n) { int temp,i,j; for( i=0,j=n-1;i < ;i++,j--) { temp=a[i]; a[i]= ; a[j]=temp; } } 31.下面程序的执行结果是 。 {finclude <stdio.h> #define N 4 void main( ) {int i,j; for(i=1;i<=N;i++) {for(j=1;j<i;j++) prinff("#"); printf(" *"); printf("\n" ); } } 32.函数power的功能是:求x的n次方,并返回结果。请补充划线部分的程序代码。 double power( double x, int n) { double p=1.0; if(n>0) for(;n>0;n--) ; else p=1.0; return ; } 33.以下程序的功能是:输出N×N数组每一行的最小值。请补充划线部分的程序代码。 #include < stdio, h > #define N 4 void main( ) { inta[N][N],m[N],i,j; for (i=0;i<N; i+ +) for (j=0;j<N; j++) scanf("%d",&a[i][j]) ; for(i=0;i<N; i++) { m[i]= ; for(j=1;j<N;j++) if( ) re[i] =a[i][j]; } prinff( "Min is: "); for(i=0; i<N; i++) printf("%d",m[i]); } 五、程序设计题 34.编程实现把十六进制数转换为十进制数。如输入5AE,则输出1454。 35.编程实现:输出100以内能被3整除且个位数为6的所有整数。 2019年10月高等教育自学考试《计算机软件基础(一)》试题 课程代码:02243 一、单项选择题 1.下列关于C程序运行说法正确的是 A.从程序中的main函数开始 B.按程序结构顺序执行 C.从用户指定的地方开始 D.由函数说明部分决定 2.若变量a,b,c已正确定义并赋值,下列合法的C语言表达式是 A.a:=b+1 B.a=b=c+2 C.18.5%3 D.a=a+7=c+b 3.设有变量定义:inti=010,j=10; 则执行语句:printf("%d,%d\n",++i,j--);结果为: A.11,10 B.9,10 C.010,9 D.10,9 4.若变量a,b,t已正确定义,不能实现将a和b的值进行交换的选项是 A.t=a,a=b,b=t B.a=a+b,b=a-b,a=a-b C.t=b,b=a,a=t D. a=t,t=b,b=a 5.设m、n、a、b、c、d均为2,执行(m=a=b)||(n=c=d)后,m,n的值分别是 A.2,2 B.2,1 C.1,2 D.1,1 6.下列程序的运行结果是 #include<stdio. h> Void main( ) { int i; for(i=1;i<=5;i++) { if( i%2==0)printf("Y"); elsecontinue; prinff("N"); } } A.YNYNYN B. NYNYNY C. YNYN D. NYNY 7.下列程序的运行结果是 void main( ) { iht a[3] [3]-{1,2,3,4,5,6,7,8,9t; int i; for(i=0;i<3;i++) { printf("%d", a[i] [2-i]); } } A. 357 B. 369 C. 159 D. 147 8.下列程序的运行结果是 void main( ) { int x=2,i; for(i=1;i<=2;i++) printf("%d", Fun (x)); int Fun( int x){ int a=0; static intb=1; ++a;++b; return(x+a+b); } A. 56 B. 55 C. 34 D. 33 9.若已定义一维数组:inta[10];则在下列表达式中不能表示a[1]的地址是 A. a+1 B. a++ C. &a[0]+1 D. &a[1] 10.设有一结构体类型变量Person定义如下: struct date struct stu {int year;//年 {char name[20] ;//姓名 int month;//月 char sex;//性别 int day ;//日 structdate birthday; }; }; struet stu person; //定义结构体变量person 若要对结构体变量pexson的出生月份进行赋值,下列语句能正确赋值的是 A.month=8 B.birthday.month=8 C.person.birthday.month=8 D.person. month=8 11.树最适合用来表示 A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据 12.二叉树的第k层的节点数最多是 A.2k-1 B.2k+1 C.2k-1 D.2k-1 13.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二 分查找,则查找A[3]的比较序列的下标依次是 A.1,2,3 B.9,5,2,3 C.9,5,3 D.9,4,2,3 14.设有6个节点的无向图,为了确保该图是一个连通图,边数至少应有 A.5条 B.6条 C.7条 D.8条 15.软件设计包括两个阶段,分别是 A.接口设计和结构设计 B.数据设计和概要设计 C.结构设计和过程设计 D.总体设计和详细设计 二、填空题 16.能正确表示“当x的取值在[10,20]的范围内为真,否则为假”的表达式是 。 17.表达式3*9%2+9/2*5的值为 。 18.设i,j,k均为血型变量,则执行完下列的for语句后,k的值为 。 for(i=0,j=5;i<=j;i++,j--) k=i+j; 19.在C语言中,二维数组元素在内存中的存放顺序是 。 20.C语言规定,如果简单变量作为实参时,它和对应的形参之间的数据传递方式 。 21.设有如下变量定义及赋值语句: inta[10]={10,20,30,40},*p; p=&a[1]; 则p[1]的值是 。 22.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为 。 23.在线性结构中,元素之间存在 的对应关系。 24.在树形结构中,叶节点没有后续节点,其余每个节点可以有 的后续节点。 25.已知二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单元,并且第一个元素的存储地址是LOC(A[0][0]),则A[i][j]的地址是 。 三、简答题 26.请写出算法的定义,并说明算法描述的方法。 27.请写出数据结构中逻辑结构的定义,并说明数据结构中逻辑结构的分类。 28.设有一个输入数据的序列是{46,25,78,62,12,80},请画出从空树起,逐个输入各个数据而生成的二叉搜索树。 29.什么是软件危机?软件危机主要包含哪两项问题? 四、程序分析题 30.写出下列程序的运行结果 void main( ) { int num, i; for( num=2;num<=8; num++) { for(i=2;i<=num-1 ;i++) if(num%i==0) break; if(i==num) printf("%4d" ,num); } } 31.写出下列程序的运行结果 void main( ){ int a[ ][3]={9,8,7,3,6,2,4,6,8}; int i,j, sum1=0,sum2=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { if(i==j) { sum1=sum1+a[i][j]; if(i+j==2) { sum2=sum2+a[i][j]; } } printf("sum1=%d,sum2=%d\n",sum1,sum2); } 32.写出下列程序的运行结果 #include<string. h> void Fun ( char * s, int n) { char t, ~ p, *q; p=s;q=s+n-1; while(p<q) { t=*p; *p=*q;*q=t; p++; q--; } } void main( ) { char s[ ]--"abcdefg"; Fun (s,strlen(s)); puts(s); } 33.以下为二叉树中序遍历算法,左子节点用Lchild表示,右子节点用Rchild表示,请将程序补充完整。 void FunTree ( struct node*p) if(p!=NULL) { ① ; printf("%c",p->data); ② ; } } 五、程序设计题 34.编程完成如下图形,变量n和ch分别表示金字塔层数和输出的字符。 如果输入:4*,则输出如题34图a所示;如果输入5A,输出如题34图b所示。 4 * 5 A * A *** AAAAA ***** AAAAAAA ******* AAAAAAAAA 题34图a 题34图b 35.函数CountX的功能是返回单链表HL中节点数据域data值等于x的节点数,请补充完整CountX函数。 //include" stdio, h" street LNode { char data; streetLNode*next; }; struct LNode nd[10]; int a[] = {'a', 'b', 'e', 'd', 'a', 'e', 'a', 'f','g','h'}; int CountX( LNode * HL,char x) { 请编写本函数 } void main( ) { int i, countX; char X; struct LNode *head, * p; printf("Input X please:"); X=getchar( ); head=&nd [0]; nd[0], data=a[0]; p=head; for(i=1;i<10;i++) { nd[i].data:a[i]; p->next=&nd [i]; p=p-> next; } countX: CountX (head, X); printf("总共有%d个%c字符\n",X,countX); } |
|