• 回答数

    5

  • 浏览数

    239

蓝莓嘉人
首页 > 考试培训 > c期末考试题库

5个回答 默认排序
  • 默认排序
  • 按时间排序

璐璐308738

已采纳

《数据结构》期末考试试卷( A )一、 选择题(每小题2分,共24分)1.计算机识别、存储和加工处理的对象被统称为( A )A.数据 B.数据元素C.数据结构 D.数据类型2.栈和队列都是( A )A.限制存取位置的线性结构 B.顺序存储的线性结构C.链式存储的线性结构 D.限制存取位置的非线性结构 3.链栈与顺序栈相比,比较明显的优点是( D )A.插入操作更加方便 B.删除操作更加方便C.不会出现下溢的情况 D.不会出现上溢的情况4.采用两类不同存储结构的字符串可分别简称为( B )A.主串和子串 B.顺序串和链串C.目标串和模式串 D.变量串和常量串5. 一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是:BA. 110 B .108C. 100 D. 120 6.串是一种特殊的线性表,其特殊性体现在:BA.可以顺序存储 B .数据元素是一个字符C. 可以链接存储 D. 数据元素可以是多个字符7.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为: CA. 2h B .2h-1C. 2h+1 D. h+1软件开发网 8.树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。这里,我们把 由树转化得到的二叉树叫做这棵树对应的二叉树。下列结论哪个正确? AA. 树的先根遍历序列与其对应的二叉树的先序遍历序列相同B .树的后根遍历序列与其对应的二叉树的后序遍历序列相同C. 树的先根遍历序列与其对应的二叉树的中序遍历序列相同D. 以上都不对9.一个有n个顶点的无向图最多有多少边?CA. n B .n(n-1)C. n(n-1)/2 D. 2n10.在一个图中,所有顶点的度数之和等于所有边数的多少倍?CA. 1/2 B .1C. 2 D. 4 11.当在二叉排序树中插入一个新结点时,若树中不存在与待插入结点的关键字相同的结点,且新结点的关键字小于根结点的关键字,则新结点将成为( A )A.左子树的叶子结点 B.左子树的分支结点C.右子树的叶子结点 D.右子树的分支结点软件开发网 12.对于哈希函数H(key)=key%13,被称为同义词的关键字是( D )和41 和和44 和51 二、已知某棵二叉树的前序遍历结果为A,B,D,E,G,C,F,H,I,J,其中中序遍历的结果为D,B,G,E,A,H,F,I,J,C。请画出二叉的具体结构。(注意要写出具体步骤)(10分)原理见课本128页三、有图如下,请写出从顶点c0出发的深度优先及宽度优先遍历的结果。(10分) 深度优先;C0-C1-C3-C4-C5-C2宽度优先:C0-C1-C2-C3-C4-C5四、有图如下,按Kruskal算法求出其最小生成树。要求写出完整的步骤。(10分)原理见课本250页五、给定线性表(12,23,45,66,76,88,93,103,166),试写出在其上进行二分查找关键字值12,93,166的过程。并写出二分查找的算法。(20分)0 1 2 3 4 5 6 7 812 23 45 66 76 88 93 103 166过程:mid=(0+8)/2=4high=3,low=0 mid=1high=0,low=0 mid=0(找到12)high=8,low=5,mid=6(找到93)high=8,low=7,mid=7high=8 low=8 mid=8算法:见课本84页上六、知单链表的结点结构为Data next下列算法对带头结点的单链表L进行简单选择排序,使得L中的元素按值从小到大排列。请在空缺处填入合适的内容,使其成为完整的算法。 (可用文字说明该算法的基本思想及执行的过程,10分)void SelectSort(LinkedList L){ LinkedList p,q,min; DataType rcd; p= (1) ; while(p!=NULL) { min=p; q=p->next; while(q!=NULL){ if( (2) )min=q; q=q->next; } if( (3) ){ rcd=p->data; p->data=min->data; min->data=rcd; } (4) ; }} 本题不会。嘿嘿。。。。七、一个完整的算法应该具有哪几个基本性质?分别简要说明每一性质的含意。(5分) 输入:四个基本性质:1.输入:有零个或多个有外部提供的量作为算法的输入 2:输出:算法产生至少一个量作为输出 3.:确定性:组成算法的每条指令是清晰的,无歧异的。 4.:有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的八、何谓队列的"假溢"现象?如何解决?(5分)队列的假溢现象是指数组实现的顺序队列中,队尾指针已到达数组的下表上界产生上溢而队头指针之前还有若干 空间闲置的现象。解决的办法之一是利用循环队列技术使数组空间的首尾相连。 九、说明并比较文件的各种物理结构。(6分)

c期末考试题库

259 评论(10)

等于个圈圈

附件上传失败...C语言期末考试题及答案(1)1、构成C语言的基本单位是___B____。过程?函数?语句?命令?2、设x为整型变量,不能正确表达数学关系:55&&x<10?x==6||x==7||x==8||x==9?!(x<=5)&&(x<10)?3、在C语言中,逻辑运算符的优先级从高到低的排列顺序为__D___。&&、||、!?||、&&、!?&&、!、||?!、&&、||?4、下面语句中,正确的是__D___。printf("%c\n","student");?printf("%c\n","c");?printf("%s\n",&a);?printf("%s\n","hello");?5、对于for(表达式1;;表达式3)可以理解为__B___。for(表达式1;0;表达式3)?for(表达式1;1;表达式3)?for(表达式1;表达式1;表达式3)?for(表达式1;表达式3;表达式3)?6、执行下面程序段的结果是__B___。 main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d",a,b); }a=1,b=1?a=2,b=1?a=1,b=0?a=2,b=2?7、执行下面程序段的结果是__D___。 int x=0; do { printf(“%2d”,x--); }while(x);打印出321?打印出23?不打印任何结果?陷入死循环?8、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___。 If(x>y) if(y>z)x=y; else z=y;7?6?5?4?9、如果一个函数被说明为static,那么__B___。该函数只能被main函数调用?该函数能被当前文件的函数调用,但不能被其他文件的函数调用?该函数不能被当前文件的函数调用,可以被其他文件的函数调用?任何文件的函数都可以调用该函数?10、下面关于局部变量的描述中,错误的是__D___。函数的局部变量的有效范围只能在本函数?函数的形式参数也是局部变量?局部变量的名称不能和函数同名称?不同的函数中不能定义相同名称的局部变量?11、下列初始化字符数组的语句中,错误的是__A___。char str[5]="hello";?char str[]={'h','e','l','l','o','\0'};?char str[5]={"hi"};?char str[100]="";?12、引用数组元素时,数组下标可以是__D___。整型常量?整型变量?整型表达式?以上均可?13、 已知:char str[10],*p=str; 下面的语句中正确的是__B___。str="ABC";?p="ABC";?*str="ABC";?*p="ABC";?14、下面语句中,错误的是___D__。int i;int *p;p=&i;?int i,*p;p=&a;?int i,*p=&a;?int i,*p;*p=i;?15、下面对于结构体类型的描述正确的是__A___。结构体类型的大小为各成员变量所占内存的总和?结构体类型变量与简单数据类型变量的引用规则一致。?结构体类型的大小为其成员中所占内存空间最大的变量的大小?结构体类型的大小为其最后一个成员中所占内存空间的大小?16、C语言规定:在一个源程序中,main函数的位置____C____。必须在最开始?必须在系统调用的库函数的后面?可以任意?必须在最后?17、表达式18/4*sqrt()/8值的数据类型是 ___C____。int?float?double?不确定?18、在c语言中,char型数据在内存中的存储形式是 ___D___。补码?反码?原码?ASCII码?19、阅读以下程序,当输入的数据形式为:25,13,10时,正确的输出结果为___D___。 main() { int x,y,z; scanf("%d%d%d",&x,&y,&z); printf("x+y+z=%d\n",x+y+z); }x+y+z=48?x+y+z=35?x+z=35?不能确定?20、有如下程序 void main() { float x=; if(x<) y=; else if(x<) y=; else y=; printf(“%f\n”,y); } 该程序的输出结果是( C )。、判断char型变量s是否为小写字母的正确表达式是__C____。'a'<=s<='z'?(s>='a')&(s<='z')?(s>='a')&&(s<='z')?('a'<=s)and('z'>=s)?22、执行以下语句后,y 的值为___A___。 int x,y,z; x=y=z=0; ++x || ++y && ++z;0?1?2?不确定值?23、有如下程序段: int number=0; while(number++<=3) printf(“%d\n”,number++); 则正确的执行结果是___C___。2 3 4?0 1 2?1 3?2 4?24、有如下程序 void main() { int n=9; while(n>6) { n--; printf(“%d”,n); } } 该程序段的输出结果是__B___。987?876?8765?9876?25、要使以下程序段输出10个整数,请在空格中填入一个整数。 for(i=0;i<=___B___;printf("%d\n",i+=2));15?18?20?10?26、设函数fun的定义形式为: fun(char ch,float x){…} 则以下对函数fun的调用语句中正确的是___B___。fun(“abc”,3)?t=fun(‘D’,5)?fun(‘ab’,3)?fun(‘78’,1)?27、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 Main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i<=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。s=s+n;return s;?s=s+i;return s;?return s;?return s+=I;?28、设函数fun的定义形式为 int fun(int a[],int n) { int s=0,i=0; for(i=0;i #include <> void f (char *s, int n) { char a,*q1,*q2; q1=s;q2=s+n-1; while(q110) printf(“%d\n”,++a); else printf("%d\n",a--); }12?11?10?9?2、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x);打印出321?打印出23?不打印任何结果?陷入死循环?3、执行与句:for(n=0;n++<4; ); 后,变量n的值是__C__。3?4?5?不定?4、以下关于循环的描述中,错误的是__D___。可以用for语句实现的循环一定可以用while语句实现?可以用while语句实现的循环一定可以用for语句实现?可以用do…while语句实现的循环一定可以用while语句实现?do…while语句与while语句的区别仅仅是关键字while的位置不同?5、下面的描述错误的是__C__。函数可以有多个形式参数?函数可以没有返回值?函数内可以嵌套定义函数?函数可以被其他函数调用?6、函数返回值的类型是由__A__决定的。定义函数时指定的返回类型?函数中return语句的表达式类型?主调函数的实际参数类型?主调函数的返回值类型?7、定义了一维int型数组a[10]后,下面错误的引用是__B__。a[0]=1;?a[10]=2;?a[0]=5*2;?a[1]=a[2]*a[0];?8、定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为__B__。24?25?18?17?9、下面语句中,错误的是__D__。int i; int *p; p=&i;?int i,*p; p=&a;?int i,*p=&a;?int i,*p; *p=i;?10、 已知int型二维数组a[3][4],数组元素a[1][2]的地址不能表达为__C__。&a[1][2]?a[1]+2?*a[1]+2?*(a+1)+2?11、C语言中,5种基本数据类型的存储空间长度的排列顺序为___A___。charchar=intcharchar=int=long int<=float12、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是 ___B___。7?8?6?2?13、若有说明语句:char c='\72';则变量c ___A___。包含1个字符?包含2个字符?包含3个字符?说明不合法,c的值不确定?14、若x,y均定义为整型,z定义为double型,以下不合法的scanf函数调用语句是___C___。scanf("%d%lx,%le",&x,&y,&z);?scanf("%2d * %d%lf",&x,&y,&z);?scanf("%x%*d%o",&x,&y,&z);?scanf("%x%o%",&x,&y,&z);?15、若输入字符串:abcde<回车>,则以下while循环体将执行___A___次。 while((ch=getchar())=='e') printf("*");1次?死循环?0次?5次?16、执行下面的程序段后,k的值是___C___。 k=1;n=263; do{k*=n%10;n/=10;}while(n);3?63?36?2?17、下面程序段中循环的执行次数是___B___。 a=10;b=0; do{b+=2;a-=2+b;}while(a>=0);10?3?5?4?18、下面程序段的运行结果是__D____。 x=2; do{printf("*");x--;}while(!x==0);*?***?没有输出?**?19、下面程序段的运行结果是___B___。 i=1;s=1;a=0; do{a=a+s*i;s=-s;i++;}while(i<=10); printf("%d",a);2?-2?3?0?20、有如下程序 void main() { int a=2,b=-1,c=2; if(a) if(b<0) c=0; else c++; printf("%d\n",c); } 该程序的输出结果是___A___。0?1?2?3?21、程序中对fun函数有如下说明 void fun(); 下面说明是错误的是___B___。fun函数无返回值?fun函数的返回值可以是任意的数据类型?fun函数没有形式参数?void 可以省略?22、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i<=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。s=s+n; return s;?s=s+i; return s;?return s;?return s+=i;?23、 有以下程序 int f1(int x,int y){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf()__A___4,3,7?3,4,7?5,2,7?2,5,7?24、若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维的大小是___B___。2?3?4?无确定值?25、判断字符串s1是否大于字符串s2,应当使用___D____。if(s1>s2)?if(strcmp(s1,s2))?if(strcmp(s2,s1)>0)?if(strcmp(s1,s2)>0)?26、当运行以下程序时,从键盘输入:AhaMA Aha 表示回车,则下面程序的运行结果是___A____。 #include "" main() { char s[80],c='a'; int i=0; scanf("%s",s); while(s[i]!='\0') { if(s[i]==c)ahAMa?AhAMa?AhAMa ahA?ahAMa ahA?27、以下程序执行后a的值为___C____。main( ) { int a,m=2, k=1, *p=&k; a=p!=&m; printf("%d\n",a); }-1?0?1?2?28、以下能正确读入字符串的程序段是____C___。char *p;scanf("%s", p);?char str[10];scanf("%s", &str);?char str[10], *p;p=str; scanf("%s", p);?char str[10], *p=str;scanf("%s", p[1]);?29、若有定义:int i, x[3][4];,则不能将x[1][1]的值赋给变量i的语句是___B___。i=x[1][1] ?i=*(*(x+1))?i=*(*(x+1)+1)?i=*(x[1]+1)?30、下面程序的运行结果是____A___。 # include <> # include <> fun(char *s) { char t,*a,*z; a=s; z=s+strlen(s)-1; while(a++y) if(y>z)x=y; else z=y;7?6?5?4?36、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x);打印出321?打印出23?不打印任何结果?陷入死循环?37、以下关于switch语句和break语句的描述正确的是__D___在switch语句中必须使用break语句?break语句只能用于switch语句体中?break语句只能用于循环语句中?在switch语句中可以使用break语句?38、与语句while(!x)等价的语句是__A___while(x==0)?while(x!=0)?while(x!=1)?while(~x)?39、下面的描述错误的是__C___?函数可以有多个形式参数??函数可以没有返回值??函数内可以嵌套定义函数??函数可以被其他函数调用?40、 下面关于局部变量的描述中,错误的是__D___?函数的局部变量的有效范围只能在本函数??函数的形式参数也是局部变量??局部变量的名称不能和函数同名称??不同的函数中不能定义相同名称的局部变

179 评论(11)

惠跳舞的鱼

我给你了,ok 记得采纳

292 评论(14)

卓木木收藏

你哪里的?我有一份.

149 评论(12)

蛋蛋love祺祺

百度文库上很多,没有号注册一个吧

288 评论(8)

相关问答