一、选择题
1. 下面关于C语言的叙述中,正确的是( )。
A)每行只能写一条语句 B)程序中必须包含有输入语句 C)main函数必须位于文件的开头 D) 每条语句最后必须有一个分号 2.在C语言中,正确的用户标识符是( )。
A)3f. B)_for C)struct D)_f.5 3.若有定义:int a=2; 则正确的赋值表达式是( )。
A)a-=(a*3) B)double (-a) C)a*3 D)a*4=3 4. 下面叙述正确的是( )。
A)2/3与2.0/3.0等价 B)(int)2.0/3与2/3等价
C)++5与6等价 D)’A’与”A”等价
5.若已定义:float m;拟从键盘输入135.78这一数据给变量m,则应选用的语句是( )。 A)scanf(”%5.2f”,&m); B)scanf(”%3.2f”,&m);
C)scanf(”%6.2f”,&m); D)scanf(”%6f”,&m);
6. 若已定义:int a=3,b=15,c;则语句c=a>b;运行后c的值为( )。(错为0,对为1) A)1 B)0 C).t. D).f. 7. 已知double a=5.2;则正确的赋值表达式是( ). A)a+=a-=(a=4)*(a=3) B)a=a*3=2
C)a%3 D)a=double (-3) 8. 以下的if语句中,x的值一定被重新赋值的是( )。 A)if(x==y) x+=y;
B)if(x>y && x!=y);
x+=y; C)if(x!=y)
scanf(”%d”,&x); else
scanf(”%d”,&y); D)if(x 9.设有整型变量x,下述语句( )不会出现死循环。 A)for(;;x+=1); B)for(;(x=getchar())!=’\\n’;); C)while(1){x++;} D)for(x=10;;x--); 10. C语言中数组元素下标的数据类型是( )。 A)实型常量 B)整型常量或整型表达式 C)任何类型的表达式 D)字符型常量 11.设有如下程序段: int a[3][3]={1,0,2,1,0,2,1,0,1},i,j,s=0; for(i=0;i<3;i++) for(j=0;j则执行该程序段后,s的值是( )。 A)0 B)1 C)2 D)3 12.设有以下变量定义: char str1[]=”string”,str2[8],*str3,*str4=”string”; ( )是正确的。 A)strcpy(str1,”China”); B)str2=”China”; C)strcpy(*str3,”China”); D)strcpy(str4[0],”China”); 13. 设有如下函数定义: 第 1 页 共 6 页 二级C模拟题(第一套) int fun(char *str) {char *p=str; while(*p!=’\\0’)p++; return (p-str); } 则以下语句执行后的输出结果是( )。 printf(”%d\\n”,fun(”Student”)); A)7 B)8 C)9 D)10 14. 若有以下宏定义, #define MOD(x,y) x%y 则执行以下程序段后,z的值是( ) int z,a=15,b=100; z=MOD(b,a); A)100 B)15 C)11 D)10 15.设有以下语句,则( )是对a数组元素的不正确引用,其中0≤i<10。 int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a; A)a[p-a] B)*(&a[i]) C)p[i] D)*(*(a+i)) 16. 若有以下程序段,且0≤i<4,0≤j<3,则不能正确访问a数组元素的是( int i,j,(*p)[3]; int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; p=a; A)*(*(a+i)+j) B)p[i][j] C)(*(p+i))[j] D)p[i]+j17. 以下程序段的运行结果是( )。 union {int num; char str[2]; }s; s.num=20; s.str[0]=’A’; s.str[1]=’\\0’; printf(”%d”,s.num); A)20 B)65 C)0 D)A 18. 若有以下定义: struct link {int data; struct link *next; }*head,*p; 并已建立如下图所示的链表结构: head data next data next „ data NULL 指针p指向如下结点: p data next 则能够把p所指结点插入到链表中成为链表第2个结点的程序段是( )。 A)p->next=head->next; head->next=p; B)head->next=p; p->next=head->next; C)p.next=head.next; head.next=p; D)(*head).next=p; (*p).next=(*head).next; 19.对枚举类型进行定义,不正确的是( )。 A)enum b{1,2,3} B)enum a{A,B,C}; 第 2 页 共 6 页 。) 二级C模拟题(第一套) C)enum c{D=3,E,F} D)enum d{X=0,Y=5,Z=9}; 20.以下程序的功能是( )。 #include {FILE *fp; long int n; fp=fopen (”wj.txt”, ”rb”); n=ftell(fp); fclose(fp); printf (”%ld”,n); } A)计算文件wj.txt的起始地址 B)计算文件wj.txt的终止起始地址 C)计算文件wj.txt内容的字节数 D)将文件指针定位到文件末尾 二、改错题 改错题:共2小题,每题10分,说明如下: (1)修改程序在每对“/**/”之间存在的错误; (2)不得删改程序中所有的“/**/”注释和其它代码; (3)源程序均在考生文件夹中,务必以原文件名保存程序; (4)按Alt+Tab键,切换考试程序与Turbo C;按Alt+Enter键,切换Turbo C窗口大小。 1.程序cmody011.c的功能是:从字符串数组str1中取出ASCII码值为偶数且下标为偶数的字符依次存放到字符串t中。 例如,若str1所指的字符串为:4AZ18c?Ge9a0z!则t所指的字符串为:4Z8z 注意:数组下标从0开始。 #include { char str1[100],t[200]; int i,j; /**/ i=0; /**/ clrscr(); strcpy(str1,”4AZ18c?Ge9a0z!”); for(i=0;i t[j]=str1[i]; j++; } } t[j]=’\\0’; printf(”\\n Original string:%s\\n”,str1); printf(”\\n Result string:%s\\n”,t); } 2.程序cmody012.c中,函数fun(int n)的功能是:根据参数n,计算机大于10的最小n个能被3整除的正整数的倒数之和。例如: 第 3 页 共 6 页 二级C模拟题(第一套) fun811110.396 12151833 #include double fun(int n) { double y=0.0; int i,j; j=0; for(i=1;;i++) { /**/if((i<10)&&(i%3==0))/**/ { /**/y+=1/j;/**/ j++; } if(j==n) break; } return y; } void main() {clrscr(); printf(”fun(8)=%8.3lf\\n”,fun(8)); } 三、填空题 填空题:共3小题,每题8分,说明如下: (1)编写程序,补充在每对“/**/”之间的空白处,以完成题目的要求; (2)不得删改程序中所有的“/**/”注释和其它代码; (3)源程序均在考生文件中;务必以原文件名保存程序; (4)按Alt+Tab键,切换考试程序与Turbo C;按Alt+Enter键,切换Turbo C窗口大小。 1.补充程序Ccon011.c,该程序的功能是计算阶乘。 main() {/**/ /**/p; int i; p=1; /**/ /**/(i=1;i<=8;i++) p=p*i; printf(“\\np=%ld”,p); getch(); } 2.补充程序Ccon012.c,该程序的功能是对输入的两个整数,按实数相除,输出它们的商和商的第二位小数。 第 4 页 共 6 页 二级C模拟题(第一套) #include int a,b,c; float f; clrscr(); printf(“Please input a b:”); scanf (”%d%d”,&a,&b); f=/**/ /**/; c=/**/ /**/(f*100)%10; printf(“\\n a/b=%f The second decimal place is:%d\\n”,f,c); getch(); } 3.补充程序Ccon013.c,程序实现从10个数中找出最大值和最小值。 #include void find_max_min(int *p,int n) { int *q; max=min=*p; for(q=p;q**/ /**/;q++) if(/**/ /**/)max=*q; else if(min>*q)min=*q; } void main() { int i,num[10]; printf (”Input 10 numbers:”); for(i=0;i<10;i++) scanf (”%d”,&num[i]); find_max_min(/**/ /**/,10); printf(”max=%d,min=%d\\n”,max,min); } 四、编程题 编程题:共2小题,每题11分,说明如下: (1)在一对“/**/”之间编写程序,以完成题目的要求; (2)不得删改程序中所有的“/**/”注释和其它代码; (3)源程序均在考生文件中;务必以原文件名保存程序; (4)按Alt+Tab键,切换考试程序与Turbo C;按Alt+Enter键,切换Turbo C窗口大小。 1.打开考生文件夹中的cprog011.c,完成其中的函数fun1,该函数的数学表达式是: 1sinxexfun1x 1xfun1(3.76)=9.111 例如:fun1(0.76)=2.175 fun1(3.00)= 5.307 第 5 页 共 6 页 二级C模拟题(第一套) #include /**/ } void main() { clrscr(); printf (”fun1(0.76)=%8.3lf\\n”,fun1(0.76)); printf (”fun1(3.00)=%8.3lf\\n”,fun1(3.00)); printf (”fun1(3.76)=%8.3lf\\n”,fun1(3.76)); } 2. 打开考生文件夹中的cprog012.c,完成其中的函数fun2(int a[],int n,int b[],int c[]),实现: 1)将数组a中大于-20的元素依次存放到数组b中; 2)将数组b中的元素按照从小到大的顺序存放到数组c中; 3)函数返回数组b中的元素个数。 #include int fun2(int a[],int n,int b[],int c[]) { /**/ /**/ } void main() { int n=10,i,nb; int aa[10]={12,-10,-31,-18,-15,50,17,15,-20,20}; int bb[10],cc[10]; clrscr(); printf (”There are %2d elements in aa.\\n”,n); printf (”There are:”); for(i=0;i for(i=0;i for(i=0;i 第 6 页 共 6 页 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- esig.cn 版权所有 湘ICP备2023023988号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务