二级C语言考试模拟试题_第1页
二级C语言考试模拟试题_第2页
二级C语言考试模拟试题_第3页
二级C语言考试模拟试题_第4页
二级C语言考试模拟试题_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、江苏省二级C语言考试模拟试题1(注:只有C部分,没有公共基础部分)-、选择题请用答题卡答题,答案依次填在(21)-(30)答题号内21 .已知有声明语句int x=8,则下列表达式中,值为2的是(21).A.x+=x-=x B.x%=x-2 C.x>8?x=0:x+ D.x/=x+x22 .以下关于函数的叙述中正确的是(22)A.在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值B.在函数体中至少必须有一个return语句C.在函数体中可以定义另一个函数D.在函数体中可以调用函数自身23 .若有声明语句"int a10,b33;",则以下对数组元素

2、赋值的操作中,不会出现越界访问的是(23)A.a-1=0 B.a10=0 C.b3O=0 D.b03=024 .数组和链表都可以用于存储一组彼此有关联的数据,以下说法中不正确的是(24)A.数组占用一块连续的存储区域,链表可能占用若干块不连续的存储空间B.数组和链表所占用的存储区域均不能在程序运行期间动态地分配c.数组中的数据可以随机存取或顺序存取 ,链表中的数据只能顺序存取D.数组的长度是固定的,链表的长度是不固定的25 .设有定义和声明语句:typedef struct dtypeint a;struct dtype *b;node;static node x3=5,&x1,7,&

3、amp;x2,9,'0',*prt=&x0;下列选项中,表达式值不为5的是(25)A.x1.b->a-2 B.ptr->b->a-2C.(ptr+1)->a-2 D.ptr->a26 .在以下程序中,需要在main函数之后定义-个函数,以下选项中(26)可以用做该函数 的名字#define p 3.14int y; main()int a=1;函数名(a);./*若干执行语句*/int函数名(int x)return x*x;A.main B.y C.p D.print27 .若有声明语句"char ch='a',

4、*pc=&ch;",以下语句中有语法错误的是(27)A.(*pc)+;B.ch+=-'a'+'A'C.toupper(ch)=ch; D.ch+;28 .已知有语句"FILE *fp;int x=123;fp=fopen("out.dat","w");",如果需要将变量 x的值以文本形式保存到一个磁盘文件out.dat中,则以下函数调用形式中正确的是(28)A.fprintf("%d",x); B.fprintf(fp,"%d",x);C.fpr

5、intf("%d",x,fp); D.fprintf("out.dat","%d",x);29 .已知有声明语句"int a5=l,2,3,4,5,*p,i;",以下语句中(29)不能正确输出a数组全部元素的值A.for(p=a,i=0;i<5;i+)printf("%d",*(p+i);B.for(p=a;p<a+5;p+)printf("%d",*P);C.for(p=a,i=0;p<a+5;p+,i+)printf("%d",p);

6、D.for(p=a;p<a+5;p+)printf("%d",p0);30 .已知有声明语句"char s110="12345”,s210="abode",s310;", 以下语句中能将 s1 中存 储的字符串和s2中存储的字符串正确交换的是(30 )A.s3=s1,s1=s2,s2=s3;B.s30=s10,s1O=s2O,s20=s3O;C.strcpy(s30,s1O),strcpy(s10,s20),strcpy(s2O,s30);D.strcpy(s3,s1),strcpy(s1,s2),strcpy(s2,

7、s3);二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占-行)基本吃念题(共5分)1 .包含二目运算符的表达式可一般地表示为(x)op(y),其中op代表运算符,x、y代表操作数 若op是关系运算符或逻辑运算符,则不管x、y为何值,表达式的值是(1)2 .在c语言中大部分执行语句都含关键字,例如,for语句含关键字for,除这些语句外不含 关键字的非空操作语句是(2)3 .常量n'的数据类型是(3)4 .当程序读写数据文件时,需要有声明语句"FILE *fp;",在该声明语句之前必须包含头文件4 4)5 .已知main函数中有声明"int a1

8、0;", 若在main函数中出现语句"fun(a);", 执行该函数调 用语句时传递给fun函数对应位置形式参数的值是(5):阅读程序写出运行结果题(共10分)6 .以下程序运行时输出(6)fun(int k)static int i;int s,j=0;return +i+k+j+;main()static int i,n;for(i=O;i<4;i+) n+=fun(i);printf("%3d",n);7 .以下程序运行时输出(7 )int f(int x,int y)return x/y+x%y;main()float a=1.5

9、,b=2.5,c=f(a,b);printf("%.2f",c);8 .以下程序运行时输出的两个数分别是(8) 和(9)main() int x=1,y,k;for(k=0;k<5;k+) int x=1;x+;if(k=4)y=x;printf("%d,%d",x,y);9 .以下程序运行时输出第一个数是(10 ),第二个数是(11),第三个数是(12 )#include <math.h>main()static int a33,i,j;for(i=0;i<3;i+)for(j=0;j<3;j+) switch(abs(i

10、-j)case 0: if(i=0 | i=2)aj+=3;else aj+;break;case 1:aj+=2;break;case 2:aj+=3;printf("%d,%d,%d",a11,a12,a20);10 .以下程序运行时输出第一行是(13),第二行是(14)#include <string.h>int convert(char s1,char s2口) int i=0,j,s;char tab84="000","001","010","011","100&

11、quot;,"101","110","111”;for(i=0,j=O;s1 !='0'i+,j=j+3) strcpy(&s2j,tabs1-'0');for(i=0,s=O;i<strlen(s2);i+) s=s*2+s2-'0'return s;main()char ss1="15",ss280;int y;y=convert(ss1,ss2);printf("%dn%s",y,ss2);11 .以下程序运行时输出(15 )long f

12、unc(long x)if(x<100) return x%10;else return func(x/100)*10+x%10;main()printf("The result is:%ldn",func(132645);完善程序题(共15分)12 .函数loop(s,m,n,str) 的功能是:对字符串str中,从下标为s的字符开始的所有间隔为m的字符进行循环左移,即:strs<-strs+m,strs+m卜-strs+2m,.,strs+(k-1)m-strs+km,strs+km卜-strs(k为整数,下标 s+km 不越界),共彳n n 次例如,调用l

13、oop(1,2,1,str) 前后str中数据的变化情况如下:str 中初始数据:A B C D E F G H I J K移位后str数据:A D C F E H G J I B K#include <stdio.h>#include <string.h>void loop(int s,int m,int n,char *str);main()char buf81;strcpy(buf,"ABCDEFGHIJK");puts(buf);loop(1,2,2,buf);puts(buf);void loop(int s,int m,int n,cha

14、r*str) char c;int k;int i,len;len=strlen(str);for(i=O;i<n;i+)k=(16);c=strk;while(k+m< (17) strk=strk+m;k=(18);(19) =c; 13 .以下程序验证一个猜想:任意一个十进制正整数与其反序数相加后得到一个新的正整数,重复该步骤最终可得到一个回文数(所谓反序数,是指按原数从右向左读所得到的数,例 如,123的反序数是321所谓回文数,是指一个数从左向右读的值与从右向左读的值相 等例如,12321、234432都是回文数)#include<stdio.h>long i

15、nvert(long x);main()long n,c=0;printf("input a number:");scanf("%ld",&n);while(20)printf("input a number:");scanf("%ld",&n); n=n+invert(n);c+;while(21)n=n+invert(n);c+; printf("%ld,count=%ld",n,c);long invert(long x) /*生成并返回x的反序数*/long s;for(

16、s=0;x>0; ( 22 ) ) s=s*10+x%10;return s;14 .已知某链表中结点的数据结构定义如下:struct nodeint x;struct node *next;函数find_del的功能是:在参数head指向的链表中查找并删除 x值最大的结点,如有多 个相同的x值最大的结点,删除第一个结点,保存该结点的地址到 pm指向的指针变量中, 函数返回链表首结点的指针struct node *find_del(struct node *head,struct node *pm)struct node *p1,*p2,*pmax,*pre;if(head=NULL)r

17、eturn NULL;pmax=( 23 );p2=p1=pmax;while(p1)if(p1->x>( 24 )pre=p2;pmax=p1;p2=p1:p1=p1->next;if(pmax=head)head=pmax->next;else ( 25 ) =pmax->next;(26 )=pmax;return head;15 .以下程序对一组点坐标(x,y)按升序进行排序,要求:先按x的值排序,若x的值相同,则 按y的值排序,排序算法为选择法#include<stdio.h>#define N 5typedef structint x,y;

18、POINT;void point_sort( (27) *x,int n)POINT t;int i,j,k;for(i=0;i<n-1;i+) (28);for(j=( 29 );j<n;j+)if(xk.x)>(xj.x)k=j;else if(30)&&xk.y>xj.y)k=j;if(k!=i)t=x ,x =xk,xk=t; main()POINT aN=0;int i=0;while(i<N)scanf("%d%d",&a .x,&a .y);i+;point_sort(a,N);for(i=0;i<N;i+) printf("n%d,%d",a.x,a .y);21.B 22.D 23.D 24.B 25.A 26.B 27.C 28.B 29.C 30.D

温馨提示

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

评论

0/150

提交评论