最新专升本C语言程序设计模拟试卷_第1页
最新专升本C语言程序设计模拟试卷_第2页
最新专升本C语言程序设计模拟试卷_第3页
最新专升本C语言程序设计模拟试卷_第4页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机科学与技术专业基础知识模拟试卷(考试时间150 分钟,满分300 分,共三部分)第一部分 C 语言程序设计(共100 分)一、单项选择题(本大题共 30 小题,每小题2 分,共 60 分)1.下列各选项中,均是合法有效的标识符的是【】A.3dayB.lowerC.day_3D.abSum_daysabcdestudent_name_oflotus_1_2_3defaultM.D.john2. 若希望当的值为奇数时,表达式的值为“真” ,的值为偶数时,表达式的值为“假” 。则以下不能满足要求的表达式是A.A2=1B.!(A%2=0)C.!(A%2)D.A%23.下列程序的输出结果是【】#i

2、nclude <stdio.h>void main ( )int x=1, y=0,a=0, b=0;switch( x)case 1:switch(y)case 0: a+ ; break ;case 1: b+ ; break ;case2: a+ ;b+; break ;case3: a+ ;b+; break ;printf(“ %d,%dn”, a,b);A.1,1B.2,1C.1,0 D.2 ,24.以下关于 switch 语句和 break 语句的描述中,只有正确的是【】A. 在 switch语句中必须使用 break 语句B. 在 switch语句中,可以根据需要使

3、用或不使用break 语句C.break 语句只能用于 switch语句中D.break 语句是 switch 语句的一部分5.下面程序的输出是【】。main()int x=0x23;printf(“%dn”,- -x);A.18B.19C.34D.356.下列函数的输出结果是【#include <stdio.h>int f1(intxb)】extern int xa;return( xa * xb);void main ( void )extern int xb;int xa=5;printf(“ xa=%d,xb=%d, result=%dreturn 0;”,xa,xb,f1

4、(xa);int xa=3,xb=4;A.3,4,12B.5, 4, 20C.5,4,15D.3, 4, 157. c 语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是A. 地址传递B. 由实参传给形参,再由形参传回给实参C. 单向值传递D. 由用户指定传递方式8.以下程序中调用 scanf 函数给变量 a 输入数值的方法是错误的, 其原因是【void main()】int *p,a;p=&a;scanf (“ %d”, *p );A.*p 表示的是指针变量p 的地址B.*p 表示的是变量 a 的值,而不是变量a 的地址C.*p 表示的是指针变量p 的值D.*p 只能用来说

5、明 p 是一个指针变量9.下列程序段的输出结果是【】。int x 3;doprintf(“%2dn”, x 2) ;while (!( x)A. 1B. 1 -2C. 3 0D. 是死循环10.若有语句: int a=4, *p=&a;下面均代表地址的一组选项是【】。A. a,p,&*aB. *&a,&a,*pC. &a, p, &*pD. *&p,*p ,&a11. 下面程序输出的结果是main() int i;int a33=1,2,3,4,5,6,7,8,9;for ( i=0;i<3;i+)printf("

6、%d ",a 2-i i );A)159B)753C)357D)59112. 下面函数的功能是char *fun(char *str1,char*str2)while (*str1 ) &&( *str2+=*str1+);return str2;A)求字符串的长度B)比较两个字符串的大小C)将字符串 str1 复制到字符串 str2中D)将字符串 str1 接续到字符串 str2中13. 下面函数调用语句含有实参的个数为func (exp1,exp2 ), (exp3,exp4,exp5 );A)1B)2C) 4D)513. 下面程序段的运行结果是 char *s=

7、"abcde" s+=2;printf ( "%d",s ); A)cdeB)字符 cC)字符 c的地址D)无确定的输出结果14. 已有变量定义和函数调用语句: int a=25;print_value ( &a); 下面函数的正确输出结果是void print_value(int *x)printf("%dn",+*x );A)23B)24C)25D)2615. 当顺利执行了文件关闭操作时, fclose 函数的返回值是A)-1B)TRUE C)0 D)116. 设有如下定义char *s 2= "abcd&quo

8、t;,"ABCD"则下列说法错误的是A)s 数组元素的值分别是 "abcd" 和"ABCD"两个字符串的首地址B)s 是指针数组名,它含有两个元素分别指向字符型一维数组C)s 数组的两个元素分别存放的是含有 4 个字符的一维字符数组中的元素D)s 数组的两个元素中分别存放了字符 a和 A的地址17. 以下不能对二维数组 a 进行正确初始化的语句是A)int a 23=0;B)int a 3 =1,2,0;C)int a 23=1,2,3,4,5,6;D)int a 3 =1,2,3,4,5,6;18. 有以下程序 struct STU

9、 char num 10 ; float score 3 ; ;main()struct STU s3="20021",90,95,85,"20022",95,80,75, "20023",100,95,90, ,*p=s;int i; float sum=0;for ( i=0;i<3;i+ )sum=sum+p->scorei ;printf("%6.2f n",sum );程序运行后的输出结果是A)260.00B)270.00C)280.00D)285.0019. 若有说明: int a 10;则

10、对 a 数组元素的正确引用是A)a10B)a3,5 C)a(5)D)a10-10 20. 下面程序段中,输出 * 的个数是 char *s=" ta 018bc"for (;*s!= 0;s+ ) printf( "*" );A)9B)5C)6D)721. 设有如下函数fun(float x)printf(" n%d",x*x );则函数的类型是A)与参数 x 的类型相同B)是 voidC)是 int型D)无法确定22. 有如下定义#define D 2int x=5;float y=3.83; char c= D;则下面选项中错误的

11、是A)x+; B)y+;C)c+; D)D+;23. 以下程序段的执行结果为#define PLUS (X,Y) X+Y main() int x=1,y=2,z=3,sum;sum=PLUS( x+y,z )*PLUS(y,z );printf("SUM=%d",sum) ;A)SUM=9B)SUM=12C)SUM=18D)SUM=2824. C 语言规定,函数返回值的类型是由A)return 语句中的表达式类型所决定B)调用该函数时的主调函数类型所决定C)调用该函数时系统临时决定D)在定义该函数时所指定的函数类型所决定25. 下列程序的运行结果是void fun( in

12、t *a,int *b) int *k; k=a;a=b;b=k;main() int a=2004, b=9,*x=&a,*y=&b; fun ( x,y ) ;printf ("%d%d",a,b ) ;A)2004 9 B)9 2004C)0 0D)编译时出错26. 下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数:876675896101301401980431451777#include#includeint fun(int *s, int t, int *k) int i; *k=0;for ( i=0;iif (s *k retur

13、n s*k ;main()int a 10= 876,675,896,101,301,401,980,431,451,777,k; clrscr () ;fun ( a, 10, &k) ;printf("%d, %dn ", k, a k);则输出结果为A)7,431B)6C)980D)6,98027. 下面程序应能对两个整型变量的值进行交换。以下正确的说法是main()int a=10,b=20;printf (" (1)a=%d,b=%d n",a,b ); swap(&a,&b) ;printf (" (2)a=

14、%d,b=%d n",a,b );swap(int p,int q)int t;t=p;p=q;q=t;A)该程序完全正确B)该程序有错,只要将语句swap(&a,&b); 中的参数改为 a,b 即可C)该程序有错,只要将swap()函数中的形参p 和 q 以及 t 均定义为指针(执行语句不变)即可D)以上说法都不对28. 有以下程序#include main() char *p,*q;p=(char * )malloc ( sizeof ( char ) *20 ); q=p; scanf ("%s %s",p,q ); printf ( &qu

15、ot;%s %sn",p,q ); 若从键盘输入: abc def< 回车 >,则输出结果是A)def defB)abc defC)abc dD)d d29. 以下程序的输出结果是int f() static int i=0; int s=1; s+=i; i+; return s;main() int i,a=0;for ( i=0;i<5;i+)a+=f () ;printf("%d n",a ) ;A)20B)24C)25D)1530. 有以下程序#include struct NODE int num; struct NODE *next

16、; ; main() struct NODE *p,*q,*r;p=(struct NODE* )malloc (sizeof q=(struct NODE* )malloc (sizeof r= (struct NODE* )malloc (sizeof p->num=10; q->num=20; r->num=30; p->next=q;q->next=r;( struct NODE ) ;( struct NODE ) ;( struct NODE ) ;printf("%d n ",p->num+q->next->nu

17、m );程序运行后的输出结果是A)10B)20C)30D)40二、程序阅读题(本大题共4 小题,每小题 5 分,共 20 分)阅读下列程序,将输出结果写到答题纸的相应位置。31下列程序的输出结果为。main ()int x=3,y=5;printf (" d",x= ( x-)* (-y );32. 以下程序的输出结果是。fun (int x,int y,int z ) z =x*x+y*y;main ()int a=31 ;fun (6,3,a)printf (" d", a)33. 执行下面程序段后, k 值是。k=1;n=1234;dok+ n%1

18、0;n/=10 ; while(n) ;34. 下列程序的输出的结果是,,。main()int i,j row,colum,m;static int array3 3 =100,200,300,28,72,-30-850,2,6;m=array 0 0; for( i=0;i 3;i+)for( j=0;j 3;j+)if( array i j m)m=array i j ;colum=j;row=i;printf( "%d,%d,%d n",m,row,colum) ;三、完善下列程序(本大题共3 小题,每空2 分,共 20 分)请在答题纸相应的位置填上正确答案。35 .

19、 打印所有的“水仙花数”。所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。比如 153=1*1*1+5*5*5+3*3*3 。(注:变量 i ,j ,k 分别代表三位数的各个位数。)main( ) int i,j ,k,n;printf(“水仙花数是:”for(n=100; n<1000;n+)i=n/100;) ;【1】;k=n%10;if(【 2】)/*如果是水仙花数,则输出*/printf(“ %4d”,n);printf(“n ” ) ;36. 以下程序段的功能:从键盘输入的字符,用变量 n 来统计数字字符的个数,用换行符(n )作为循环结束的条件。#include

20、 <stdio.h>main()int n=0, c ;c=getchar( );while(【1】 ) if(【 2】)【 3】;c=getchar( );37. 以下函数的功能是求出能整除 x 且不是偶数的各整数, 并按从小到大的顺序放在 pp 所指的数组中,这些除数的个数通过形参 n 返回。例如,若 x 中的值为 30,则有 4 个数符合要求,它们是 1, 3, 5, 15。请按题意,完成填空。试题程序:#include#includevoid fun(int x, int pp , int *n) int i,j=0;【1】if (x%i=0)pp【2】 =i;【3】;ma

21、in () intx,aa 1000 , n, i ;clrscr() ;printf(" nPlease enter an integer number :fun ( x,【4】, &n );n ") ; scanf("%d ", &x) ;for( i=0 ;【 5】)printf("%d ", aai) ;printf( " n " ) ;第二部分数据结构(共100 分)一、单项选择题(本大题共12 小题,每小题2 分,共 24 分)1、向顺序栈中压入新元素时,应当()。A先移动栈顶指针,再存

22、入元素B先存入元素,再移动栈顶指针C先后次序无关紧要D同时进行2、用某种排序方法对关键字序列( 25,84, 21, 47,15,27,68,35, 20)进行排序时,序列的变化情况如下:20, 15,21,25,47,27, 68,35,8415, 20,21,25,35,27, 47,68,8415, 20,21,25,27,35, 47,68,84则所采用的排序方法是()A选择排序B希尔排序C归并排序D快速排序3、在一个长度为n 的顺序表的表尾插入一个新元素的渐进时间复杂度为()AO (n)B O (1)CO (n2 )D O (log2 n)4、设单链表中结点的结构为( data ,

23、link)。已知指针 q 所指结点是指针p 所指结事业的直接前驱,若在*q与*p之间插入结点*s ,则应执行下列哪一个操作?()A s ->link= p->link ; p->link=sBq->link=s ;s->link=pC。 p->link=s->link;s->link=pDp->link=s ;s->link=q5、若让元素1, 2, 3 依次进栈,则出栈次序不可能出现()种情况。A3,2,1B2,1,3C3,1,2D1,3,26、一个递归的定义可以用递归过程求解,也可以用非递归过程求解,但单从运行时间来看,通常递归过

24、程比非递归过程()A较快B较慢C相同7、树中所有结点的度等于所有结点数加()A 0B 1C-1D28、在一棵具有n 个结点的二叉树中,所有结点的空子树个数等于()A nB n-1Cn+1D2*n9、对长度为 n 的有序单链表,若搜索每个元素的概率相等,则顺序搜索到表中任一元素的平均搜索长度为()A n/2B (n+1)/2C(n 1)/2Dn/410、在无向图中定义顶点V i 与 V j之间的路径为从V i 到达V j 的一个()A 顶点序列B边序列C权值总和D边的条数11、如果只想得到1024 个元素组成的序列中的前5 个最小元素,那么用()方法最快。A 起泡排序B快速排序C堆排序D直接选择

25、排序12、设有一个含 200 个表项的散列表, 用线性探查法解决冲突, 按关键码查询时找到一个表项的平均探查次数不超过 1.5,则散列表项应能够至少容纳 ()个表项。(设搜索成功的平均搜索长度为Snl=1+1/(1-其中 为装填因子))/2A400B526C624D676二、填空题(每空 2 分,共 22 分, 其中第 17,19, 20 每空 1 分)13.数据的逻辑结构是从逻辑关系上描述数据,它与数据的无关,是独立于计算机的。14在一个带头结点的单循环链表中, p 指向尾结点的直接前驱,则指向头结点的指针 head可用 p 表示为 head=。15栈顶的位置是随着操作而变化的。16已知一棵

26、完全二叉树中共有 768 结点,则该树中共有个叶子结点。17在单链表上难以实现的排序方法有和。18在有序表( 12,24, 36,48,60, 72,84)中二分查找关键字72 时所需进行的关键字比较次数为。19.在用于表示有向图的邻接矩阵中, 对第 i 行的元素进行累加 ,可得到第 i 个顶点的度,而对第 j 列的元素进行累加 , 可得到第 j 个顶点的度。20.一个连通图的生成树是该图的连通子图。若这个连通图有n 个顶点 ,则它的生成树有条边。21. 在进行直接插入排序时,其数据比较次数与数据的初始排列关;而在进行直接选择排序时,其数据比较次数与数据的初始排列关。22.利用关键码分别为10

27、,20,30,40 的四个结点,能构造出种不同的二叉搜索树。三、应用题(每小题8 分,共 32 分)23、以知一组元素为( 46,25, 78,62,12, 37,70,29),试画出按元素排列次序插入生成的一棵二叉搜索树。24、已知一棵树二叉如下,请分别写出按箭序、中序、后序和层次遍历时得到的结点序列。ABCDEFGH前序:中序:后序:层次:25、设散列表的长度为13,散列函数为 H(k)=k%13,给定的关键码序列为19,14,23,01,68,20,84,27。试画出用线性探查法解决冲突时所构成的散列表。012345678910111226、已知一个有序表 ( 15, 26, 34, 39, 45, 56, 58

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论