收藏 分销(赏)

专升本C语言程序设计模拟试卷C3.doc

上传人:a199****6536 文档编号:1978317 上传时间:2024-05-13 格式:DOC 页数:16 大小:164.50KB 下载积分:8 金币
下载 相关 举报
专升本C语言程序设计模拟试卷C3.doc_第1页
第1页 / 共16页
专升本C语言程序设计模拟试卷C3.doc_第2页
第2页 / 共16页


点击查看更多>>
资源描述
计算机科学与技术专业《基础知识》模拟试卷三 (考试时间150分钟,满分300分,共三部分) 第一部分 C语言程序设计(共100分) 一、 单项选择题(本大题共30小题,每小题2分,共60分) 1. 下列各选项中,均是合法有效的标识符的是【 】  A. 3day B.lower C.day_3 D.ab Sum _days abcde student_name _of lotus_1_2_3 default M.D.john 2. 若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是 A.A%2==1 B.!(A%2==0) C.!(A%2) D.A%2 3. 下列程序的输出结果是【        】 #include <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; } case 2: a++;b++; break; case 3: a++;b++; break; } printf(“%d,%d\n”,a,b); } A.1,1 B.2,1 C.1,0 D.2,2 4. 以下关于switch语句和break语句的描述中,只有正确的是【 】 A.在switch语句中必须使用break语句 B.在switch语句中,可以根据需要使用或不使用break语句 C.break语句只能用于switch语句中 D.break语句是switch语句的一部分 5. 下面程序的输出是【 】。 main() { int x=0x23; printf(“%d\n”,- -x); } A.18 B.19 C.34 D.35 6. 下列函数的输出结果是【    】 #include <stdio.h> int f1(int xb) { extern int xa; return (xa * xb); } void main(void) { extern int xb; int xa=5; printf(“xa=%d,xb=%d,result=%d”,xa,xb,f1(xa)); return 0; } int xa=3,xb=4; A. 3,4,12 B. 5,4,20 C. 5,4,15 D. 3,4,15 7. 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只能用来说明p是一个指针变量 9. 下列程序段的输出结果是【 】。 int x=3; do  {   printf(“%2d\n”,x-=2);  }while (!(――x)) A. 1 B. 1 -2 C. 3 0 D. 是死循环 10. 若有语句:int a=4, *p=&a;下面均代表地址的一组选项是【 】。 A. a,p,&*a B. *&a,&a,*p C. &a,p,&*p D. *&p,*p,&a 11. 下面程序输出的结果是   main()   { int i;   int a[3][3]={1,2,3,4,5,6,7,8,9};   for(i=0;i<3;i++)   printf("%d ",a[2-i][i]);   }   A)1 5 9   B)7 5 3   C)3 5 7   D)5 9 1 12. 下面函数的功能是   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)1  B)2  C)4  D)5 13. 下面程序段的运行结果是   char *s="abcde";   s+=2;printf("%d",s);   A)cde   B)字符′c′   C)字符′c′的地址   D)无确定的输出结果 14. 已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是   void print_value(int *x)   {printf("%d\n",++*x);}   A)23   B)24   C)25   D)26 15. 当顺利执行了文件关闭操作时,fclose函数的返回值是   A)-1   B)TRUE   C)0   D)1 16. 设有如下定义   char *s[2]={ "abcd","ABCD"};   则下列说法错误的是   A)s数组元素的值分别是"abcd"和"ABCD"两个字符串的首地址   B)s是指针数组名,它含有两个元素分别指向字符型一维数组   C)s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素   D)s数组的两个元素中分别存放了字符′a′和′A′的地址 17. 以下不能对二维数组a进行正确初始化的语句是   A)int a[2][3]={0};   B)int a[][3]={{1,2},{0}};   C)int a[2][3]={{1,2},{3,4},{5,6}};   D)int a[][3]={1,2,3,4,5,6}; 18. 有以下程序   struct STU   { char num[10]; float score[3]; };   main()   {struct STU s[3]={{"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->score[i];   printf("%6.2f\n",sum);   }   程序运行后的输出结果是   A)260.00   B)270.00   C)280.00   D)285.00 19. 若有说明:int a[10];则对a数组元素的正确引用是   A)a[10]   B)a[3,5]   C)a(5)   D)a[10-10] 20. 下面程序段中,输出*的个数是   char *s="\ta\018bc";   for(;*s!=′\0′;s++)printf("*");   A)9   B)5   C)6   D)7 21.设有如下函数   fun (float x)   {   printf("\n%d",x*x);}   则函数的类型是   A)与参数x的类型相同   B)是void   C)是int型   D)无法确定 22. 有如下定义   #define D 2   int x=5;float y=3.83;   char c=′D′;   则下面选项中错误的是   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=9   B)SUM=12   C)SUM=18   D)SUM=28 24. C语言规定,函数返回值的类型是由   A)return语句中的表达式类型所决定   B)调用该函数时的主调函数类型所决定   C)调用该函数时系统临时决定   D)在定义该函数时所指定的函数类型所决定 25. 下列程序的运行结果是   void fun(int *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 2004   C)0 0   D)编译时出错 26. 下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数:   876  675  896  101  301  401  980  431  451  777   #include   #include   int fun(int *s, int t, int *k)   { int i;   *k=0;   for(i=0;i  if(s[*k]  return s[*k];   }   main()   {   int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;   clrscr();   fun(a, 10, &k);   printf("%d, %d\n ", k, a[k]);   }   则输出结果为   A)7,431   B)6   C)980   D)6,980 27.下面程序应能对两个整型变量的值进行交换。以下正确的说法是   main()   {int a=10,b=20;   printf("(1)a=%d,b=%d\n",a,b);   swap(&a,&b);   printf("(2)a=%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("%s %s\n",p,q);   }   若从键盘输入:abc def<回车>,则输出结果是   A)def def   B)abc def   C)abc d   D)d d 29.以下程序的输出结果是   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)20   B)24   C)25   D)15 30.有以下程序   #include   struct NODE   { int num; struct NODE *next; };   main()   { struct NODE *p,*q,*r;   p=(struct NODE*)malloc(sizeof(struct NODE));   q=(struct NODE*)malloc(sizeof(struct NODE));   r=(struct NODE*)malloc(sizeof(struct NODE));   p->num=10; q->num=20; r->num=30;   p->next=q;q->next=r;   printf("%d\n ",p->num+q->next->num);   }   程序运行后的输出结果是   A)10   B)20   C)30   D)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; do { k+=n%10; n/=10 ; } while(n); 34.下列程序的输出的结果是 , , 。 main() {int i,j row,colum,m; static int array[3][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. 打印所有的“水仙花数”。所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。比如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 <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 #include void fun (int x, int pp[], int *n) { int i,j=0; 【1 】 if(x%i==0)pp【2 】=i; 【3 】; } main () { int  x,aa[1000], n, i ; clrscr(); printf("\nPlease enter an integer number : \n "); scanf ("%d ", &x); fun (x, 【4 】, &n); for (i=0 ; 【5 】) printf ("%d ", aa [i]); printf ("\n "); } 第二部分 数据结构(共100分) 一、 单项选择题(本大题共12小题,每小题2分,共24分) 1、向顺序栈中压入新元素时,应当( )。 A.先移动栈顶指针,再存入元素 B.先存入元素,再移动栈顶指针 C.先后次序无关紧要 D.同时进行 2、用某种排序方法对关键字序列(25,84,21,47,15,27,68,35,20)进行排序时,序列的变化情况如下:         20,15,21,25,47,27,68,35,84         15,20,21,25,35,27,47,68,84         15,20,21,25,27,35,47,68,84     则所采用的排序方法是(   )      A.选择排序    B.希尔排序     C.归并排序    D.快速排序 3、在一个长度为n的顺序表的表尾插入一个新元素的渐进时间复杂度为( ) A.O (n) B.O (1) C.O (n2 ) D.O (log2 n) 4、设单链表中结点的结构为(data , link)。已知指针q所指结点是指针p所指结事业的直接前驱,若在*q与*p之间插入结点*s,则应执行下列哪一个操作?( ) A.s ->link= p->link ; p->link=s B.q->link=s ;s->link=p C。p->link=s->link;s->link=p D.p->link=s ;s->link=q 5、若让元素1,2,3依次进栈,则出栈次序不可能出现( )种情况。 A.3,2,1 B.2,1,3 C.3,1,2 D.1,3,2 6、一个递归的定义可以用递归过程求解,也可以用非递归过程求解,但单从运行时间来看,通常递归过程比非递归过程( ) A.较快 B.较慢 C.相同 7、树中所有结点的度等于所有结点数加( ) A.0 B.1 C.-1 D.2 8、在一棵具有n个结点的二叉树中,所有结点的空子树个数等于( ) A.n B.n-1 C.n+1 D.2*n 9、对长度为n的有序单链表,若搜索每个元素的概率相等,则顺序搜索到表中任一元素的平均搜索长度为( ) A.n/2 B.(n+1)/2 C.(n –1)/2 D.n/4 10、在无向图中定义顶点V i与Vj之间的路径为从V i到达Vj的一个( ) A.顶点序列 B.边序列 C.权值总和 D.边的条数 11、如果只想得到1024个元素组成的序列中的前5个最小元素,那么用( )方法最快。 A.起泡排序 B.快速排序 C.堆排序 D.直接选择排序 12、设有一个含200个表项的散列表,用线性探查法解决冲突,按关键码查询时找到一个表项的平均探查次数不超过1.5,则散列表项应能够至少容纳( )个表项。(设搜索成功的平均搜索长度为Snl={1+1/(1-α)}/2其中α为装填因子) A.400 B.526 C.624 D.676 二、填空题(每空2分,共22分,其中第17,19,20每空1分) 13.数据的逻辑结构是从逻辑关系上描述数据,它与数据的           无关,是独立于计算机的。 14.在一个带头结点的单循环链表中,p指向尾结点的直接前驱,则指向头结点的指针head可用p表示为head=           。 15.栈顶的位置是随着            操作而变化的。 16.已知一棵完全二叉树中共有768结点,则该树中共有 个叶子结点。 17.在单链表上难以实现的排序方法有 和  。    18.在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数为 。 19.在用于表示有向图的邻接矩阵中, 对第i行的元素进行累加,可得到第i个顶点的 度,   而对第j列的元素进行累加, 可得到第j个顶点的 度。    20.一个连通图的生成树是该图的 连通子图。若这个连通图有n个顶点,   则它的生成树有 条边。    21. 在进行直接插入排序时,   其数据比较次数与数据的初始排列 关;而在进行直接选择排序时,其数据比较次数与数据的初始排列 关。    22.利用关键码分别为10,   20,   30,   40的四个结点,能构造出  种不同的二叉搜索树。 三、应用题(每小题8分,共32分) 23、以知一组元素为(46,25,78,62,12,37,70,29),试画出按元素排列次序插入生成的一棵二叉搜索树。 24、已知一棵树二叉如下,请分别写出按箭序、中序、后序和层次遍历时得到的结点序列。 A B C D E F G H 前序: 中序: 后序: 层次: 25、设散列表的长度为13,散列函数为H(k)=k%13,给定的关键码序列为19,14,23,01,68,20,84,27。试画出用线性探查法解决冲突时所构成的散列表。 0 1 2 3 4 5 6 7 8 9 10 11 12 26、已知一个有序表 ( 15, 26, 34, 39, 45, 56, 58, 63, 74, 76, 83, 94 ) 顺序存储于一维数组a[12]中,根据折半搜索过程填写成功搜索下表中所给元素34, 56, 58, 63, 94时的比较次数。   元素值 比较次数 四、算法设计题 26、说明下面递归过程的功能(10分) int unknown(BinTreNode * t){ //指针T是二叉树的根指针。 if(t==NULL)return-1; elseif(unknown(t—leftChild)>=unknown(t—rightChild)) return 1+unknown(t—leftChild)); elsereturn 1+unkuown(t—rightChild); } 27、本题给出一个施加于链表的选择排序的算法。算法中用到一个临时的表头结点head,作为结果链表的表头结点,每次从first链上摘下的值最大的结点current链入head之后。算法结束前,将head删除。 Template<class Type > void List<Type> ::ListSelectSort( ) { ListNode<Type> * head = new ListNode<Type> *current , * pre , p , q ; Int I=0 ; While( 1 ){ P=current=first ; q=NULL ; While ( p!=NULL){ If (pàdataà 2 ) {pre=q ; current=p;} q=p ; p=pàlink ; } if (current==first) 3 ; else preàlink=currentàlink; if (! I ) last=current ; I++; currentàlink=headàlink; 4 ; } first=headàlink ; delete head; } (1)请将缺失语句部分补上:(8分)  1、  2、  3、  4、 (2)设待排序的记录数n=7,当前各记录关键码的初始顺序为40,20,60,30,70,50,80,试根据上述算法,画出每一趟排序时各结点指针的变化。(4分) 其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。 二.培训的及要求培训目的 安全生产目标责任书 为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标: 一、目标值: 1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。 2、现金安全保管,不发生盗窃事故。 3、每月足额提取安全生产费用,保障安全生产投入资金的到位。 4、安全培训合格率为100%。 二、本单位安全工作上必须做到以下内容: 1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。 2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。 3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。 4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。 5、在公司及政府的安全检查中杜绝各类违章现象。 6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。 7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。 8、虚心接受员工提出的问题,杜绝不接受或盲目指挥; 9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。 10、必须按规定对单位员工进行培训和新员工上岗教育; 11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。 三、 安全奖惩: 1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。 2、每月接受主管领导指派人员对安全生产责任状的落
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 专升本考试

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服