1、计算机二级 C 语言五套模拟卷及答案 模拟试题一一、 选择题(本大题 30 分,每小题 2 分)1.下列说法正确的是 。E) main 函数必须放在 C 程序的开头F) main 函数必须放在 C 程序的最后G) main 函数可以放在 C 程序的中间部分,但在执行 C 程序时是从程序开头执行的H) main 函数可以放在 C 程序的中间部分,但在执行 C 程序时是从 main 函数开始的2.在下面几组数据类型中, 全为最常用的基本数据类型的是哪一组: 。A)整型 实型 字符型 B)整型 数组 指针C)数组 结构体 共用体 D)指针 逻辑型 空类型3.若有说明语句:char c= 64 ; 则
2、变量 C 包含: 。A)1 个字符 B)2 个字符 C)3 个字符 D)说明不合法,C 值不确定4.设有如下定义和执行语句,其输出结果为: 。int a=3,b=3;a = -b + 1; printf(“%d %d”,a,b);A)3 2 B)4 2 C)2 2 D)2 35.C 语言中,运算对象必须是整型数的运算符是 。A)% B) C)% 和 D)*6.能正确表示 x 的取值范围在0,100 和-10,-5内的表达式是 。A) (x=-5 )while(k+main( ) char c=A+10-5;printf(“c=%cn”,c); 2.#includemain( ) int a,b
3、,c;a=1;b=2;c=3;if(ab)if(ac) printf(“%dn”,a); else printf(“%dn”,b); printf(“overn”); 3. main( ) char a66, i, j;for(i=0;imain ( ) int i, j; int p,q; i=2; j=10; p= q= p=10; q=2;printf(i=%d, j=%dn , i, j); 6. struct stru int x; char c; ;main( ) struct stru a=10, x,*p= func (p); printf ( “%d,%c”, a.x, a.
4、c); func (struct stru *b)b-x=20; b-c=y; 五、编程题(本大题 24 分,第一题 7 分,第二题 8 分,第三题 9 分)1.把输入的整数(最多不超过 5 位)按输入顺序的反方向输出,例如,输入数是 12345,要求输出结果是 54321,编程实现此功能。2.编一程序,从键盘输入 10 个整数并保存到数组,要求找出最小的数和它的下标,然后把它和数组中最前面的元素对换位置。3.编写一个函数计算一个字符串的长度,输入输出在主函数内完成。 (使用指针)模拟试题二一、选择题(本大题 30 分,每小题 2 分)1.C 语言中不能用来表示整常数的进制是 。A)十进制 B
5、)十六进制 C)八进制 D)二进制2.C 语言规定标识符由 等字符组成。A)字母 数字 下划线 B)中划线 字母 数字)字母 数字 逗号 )字母 下划线 中划线 3.若有如下定义:int a=2,b=3; float x=3.5,y=2.5; 则表达式:(float)(a+b)/2+(int)x%(int)y 的值是 。A)2.500000 B)3.500000 C)4.500000 D)5.0000004.以下表达式: 2+a+i*f, 其中 i 为整型变量,f 为 float 型变量,则表达式的最终数据类型为 。A)int B)float C)char D)double 5.有如下语句:
6、printf(“%s,%5.3sn”,“COMPUTER”,“COMPUTER”);执行语句后的最终结果为 。A)COMPUTER ,CMP . B)COMPUTER, CMP.C)COMPU, CMP. D)COMPU, CMP .6.以下 if 语句中语法错误的是 。A)if (ab)printf( “%f”,a); B)if(ab)printf(“%f”,a);else printf(“%f”,b);C)if(ab)printf(“%f ”,a) D)if(ab)printf(“%f”,b);else printf(“%f”,b); else printf(“%f”,a);7.能表示整数
7、 x 符合下面两个条件的语句是 。(1)“能被 4 整除,但不能被 100 整除”.(2)能被 4 整除,又能被 400 整除.A)(x%4=0表达式 2;表达式 3) 语句其中表示循环条件的是 。A)表达式 1 B)表达式 2 C)表达式 3 D)语句9.以数组作为函数的参数时传递的数组的首地址,那么实参数组与形参数组之间的数据传递方式为 。A)地址传递 B)单向值传递 C)双向值传递 D)随机传递10.将字符串 str2 连接到字符串 str1 中应使用 。A)strcpy(str1,str2) B)strcat(str1,str2) C)strcmp(str1,str2) D)strca
8、t(str2,str1)11.若有以下定义:int a10,*p=a; 则*(p+3)表示的是 。A)元素 a3的地址 B)元素 a3的值C)元素 a4的地址 D)元素 a4的值12.若有如下语句: int *p1,*p2; 则其中 int 所指的是 。A)p1 的类型 B)*p1 和*p2 的类型 C)p2 的类型 D)p1 和 p2 所能指向变量的类型13.若有如下说明:int a10=1,2,3,4,5,6,7,8,9,10;char b=a,d,e;则数值为 4 的表达式是 。A)a4 B)ad-b C)ad-b D)ae-b14.有如下程序段,在 Turbo C 环境下运行的结果为
9、。main( ) int i=2,p,k=1; int f(int a,int b)p=f(i,+k); int c;printf(“I=%d,p=%d”,k,p); if(ab) c=1; else if (a=b) c=0;else c=-1; return(c); A)1,0 B)2,0 C)2,-1 D)1,115.若 fp 是指向某文件的指针,且已读到此文件末尾,则库函数 feof(fp)的返回值是 。A) EOF B) 0 C) 非零值 D) NULL二、判断题(本大题 10 分,每小题 1 分)1.在每个 C 语言的程序中都必须并且只能有一个 main 函数。 ( )2.在 C
10、语言中,整型数据与字符型数据在任何情况下都可以通用。 ( )3.在 C 语言程序中,AHP 和 ahp 分别代表两个不同的标识符。 ( )4. 在 if 语句中,不可以没有 else 子句。 ( )5.C 语言规定,简单变量做实参时,与其对应的形参之间是单向的值传递。 ( )6. for 语句作为循环控制语句时,括号内的分号是用来分开表达式的,因此要根据需要加分号。 ( )7. 数组名也可作为函数参数使用,此时是地址传递。 ( )8. C 程序有三种结构化程序设计方法,分别嵌套结构、选择结构和循环结构。 ( )9.数组在定义时没有必要指定数组的长度,其长度可以在程序中根据元素个数再决定。 (
11、)10.在定义指针型变量时指定的基类型为该指针变量所能指向的变量类型。 ( )三、程序填空题(本大题 12 分,每小题 2 分)1.输入 3 个实数 a, b, c 要求按从大到小的顺序输出三数.main( ) float a,b,c,t;scanf(“%f,%f,%f”,if (a2);printf(“%dn“,j);5. # include main ( ) int p; p= p=2; p+; p=5; printf(%d, p); p; printf(%dn , p); 6. #include void f(int c) int a=0;static int b=0;a+;b+;pri
12、ntf(“%d: a=%d, b=%dn“, c, a, b);void main(void) int i;for (i=1; iy|xz)z=x; x=y; y=z;A)x=50, y=80, z=80 B)x=50, y=30, z=30C)x=30, y=50, z=80 D)x=80, y=30, z=5012.下面程序段的运行结果是: 。x=y=0; while(xaif(x%2=1) x+=5;continue;x - = 3;printf(“%dn”, i ); 4.func( int x, int y) int z; z=a+b;return(z); main( ) int a
13、=6, b=7, c=8, r;r=func( ( a-, b+, a+b), c-)printf(“%d”, r) ; 5.#include void increment(void);void main(void)increment();increment();void increment(void)static int x = 8; x +;printf(“x = %dn“, x);6. #include void main(void) static char a=“ABCDEFGH“,b=“abCDefGh“;char *p1,*p2;int k;p1=a; p2=b;for(k=0;k
14、5?4:24.已知变量 C1 为字符型变量,下面不正确的赋值语句是: 。A)C1 = abc B)C1= 0 C)C1 = 7+ 9 D)C1= 7 + 95.以下程序的输出结果是: 。 (注:表示空格)main( ) printf(“n*s1=%8s*”, “china”);printf(“n*s2=%-5s*”, “chi”) ; A)*s1=china * B)*s1=china *s2=chi* *s2=chi *C)*s1= china* D)*s1= china*s2= chi * *s2=chi *6.设 a、b 和 c 是 int 型变量,且 a=2,b=4,c=6,则下面表达
15、式中值为 0 的是: 。A) a+ b B)ay|xz) z=x; x=y; y=z;A)x=10, y=20, z=30 B)x=20, y=30, z=30C)x=20, y=30, z=10 D)x=20, y=30, z=208.下列字符串赋值语句中,不能正确把字符串 C program 赋给数组的语句是: 。A)char a1=C, , p, r, o, g, r, a, m B)char a210; strcpy(a2, “C program”);C)char a310; a3= “C program”;D)char a410= “C program”9.用 scanf 函数输入一
16、个字符串到数组 str 中,下面正确的语句是: 。A)scanf(“%s”, B)scanf( “%c”,C)scanf(“%s”, str) ; D)scanf(“%s”,str10);10.C 语言规定,C 程序的各函数之间 。A)允许嵌套调用,但不允许嵌套定义;B)不允许嵌套调用,但允许嵌套定义;C)不允许嵌套调用,也不允许嵌套定义;D)允许嵌套调用,也允许嵌套定义;。11.若有如下定义和语句:char s12= “a_book!”;printf(“%d”,strlen(s) );则输出结果是: 。A)12 B)10 C)7 D)612.下面程序的运行结果是: 。#include mai
17、n( ) int y=10;do y-; while(-y) ;printf(“%dn”,y-); A)-1 B)1 C)8 D)013.下面函数调用语句中实参的个数为: 。func(exp1,exp2),(exp3,exp4,exp5)A) 1 B) 2 C) 4 D) 514.有如下语句 int a=10,b=20,*p1,*p2; p1= p2= 如图 1 所示;若实现如图 2 所示的存储结构,可选用的赋值语句是: 。p1 p2 p1 p2a b a b10 20 10 20图 1 图 2A)*p1=*p2 B)p1=p2 C)p1=*p2 D)*p1=p215.以下对结构体类型变量的定
18、义中不正确的是 。B) #define STUDENT struct student B) struct studentSTUDENT int num; int num; float age; float age; std1; std1;C) struct D) struct int num; int num;float age; float age; student;std1; struct student std1;二、判断题(本大题 10 分,每小题 1 分)-1.在每个 C 文件中都必须并且只能有一个 main 函数。 ( )2. 在 C 语言中,整型数据与实型数据在任何情况下都可以通
19、用。 ( )3. 在 C 语言程序中,happy 是正确的标识符。 ( )4.在 if 语句中,if 子句与 else 子句都可以单独使用,构成了 if 语句的两种缺省形式。 ( )5. C 语言规定,简单变量做实参时,与其对应的形参之间是双向的值传递。 ( )6.数组在定义时要求指定数组类型,数组名及数组长度,其中表示数组长度的表达式可以是任意类型的常量表达式。 ( )7.在发生函数调用时,主被调函数中的参数可以是简单变量,也可以是数组名,当采用数组名作为参数时其数据传递方式为单向值传递。 ( )8.C 语言的一个重要特点是能够直接处理物理地址,其指针类型数据就是用来存放变量地址的。 ( )
20、9.字符串是 C 语言中一种基本数据类型,字符串总是以 n作为结束标志。 ( )10.C 程序的三种结构化程序设计方法分别顺序结构、选择结构和循环结构,由这三种结构组成的程序可以解决任何复杂的问题。 ( )三、程序填空题(本大题 12 分,每小题 2 分)1.下面程序的功能是利用函数调用求两整数的最大公约数和最小公倍数,请填空。 main( ) int a, b ,c,d;scanf(“%d, %d”, c = gongyue( a, b ) ;(1) ;printf(“gongyue=%d,gongbei=%dn”, c,d ) ; gongyue( int num1, int num2 )
21、 int temp, x, y ;if (_ (2) _) temp=num1; num1=num2 ; num2=temp ; x=num1 ; y=num2 ;while(_ (3) _) temp=x%y ; x=y ; y = temp ; return (y) ; 2.下面程序中的数组 a 包括 10 个整数元素,从 a 中第二个元素起,分别将后项减前项之差存入数组 b,并按每行 3 个元素输出数组 b。请填空。main( ) int a10,b10, I;for(I=0;Ib ) c = 1 ;else if ( a = b ) c = 0 ;else c = -1 ;printf
22、 ( “%dn”, c ) ;6.# include main ( ) int a =1,2,3,4,5,6,p; for (p=p=a;p) printf( %d, p); printf(n ); 五、编程题(共 27 分)1.编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90 分以上为A ;8089 分为 B;7079 分为 C;6069 分为D ;60 分以下为 E。2.有一个 5*5 二维数组,试编程求周边元素及对角线元素之和,并输出该数组中值最小的元素。3.编写一个程序,用 12 个月份的英文名称初始化一个字符指针数组,当键盘输入整数为 1到 12 时,显示相应的月份
23、名,键入其它整数时显示错误信息。模拟试题五一、选择题(本大题 30 分,每小题 2 分)1.下列说法正确的是 。E) 在执行 C 程序时不是从 mian 函数开始的F) C 程序书写格式严格限制,一行内必须写一个语句G) C 程序书写格式自由,一个语句可以分写在多行上H) C 程序书写格式严格限制,一行内必须写一个语句,并要有行号2.设有以下定义,则能使值为 3 的表达式是: 。int k=7, x=12;A)x%=(k%=5) B)x%=(k-k%5)C)x%=k D)(x%=k)-(k%=5)3.以下选项中是 C 语言的数据类型的是: 。A)复数型 B)逻辑型 C)双精度型 D)集合型4.
24、下面能正确表示变量 a 在区间0,5 或(6,10)内的表达式为: 。A)0b) c=1;else if(a=b) c=0;else c=-1;return(c); 2.# include main( ) int i, j ;for ( i = 0 ; imain()char b=“ABCDEFG“char *chp=while(-chpputchar(n);6.struct n int x; char c; ;main( ) struct n a=10, x; func(a); printf ( “%d,%c”, a.x, a.c); func(struct n b)b.x=20; b.c=
25、y; 五、编程题(本大题 24 分,第一题 7 分,第二题 8 分,第三题 9 分)1 试编程完成如下功能:输入一个不多于 4 位的整数,求出它是几位数,并逆序输出各位数字。2 若有一 4*4 二维数组,试编程完成如下功能:(1)求 4*4 列数组的对角线元素值和。(2)将二维数组元素行列互换后存入另一数组,并将此数组输出。3 有两个字符串,各有 10 个字符,是编程完成如下功能:(1)分别找出两个字符串中最大的字符元素;(2)将两字符串对应位置元素逐个比较,并统计输出两个字符串对应元素大于、小于和等于的次数。(所有功能都通过函数调用实现)模拟试题一答案一、 选择题(本大题 30 分,每小题
26、2 分)15 D A A A A 610 B C D D D1115 C B C D A 二、 判断题(本大题 10 分,每小题 1 分)1. 2. 3. 4. 5.6. 7. 8. 9. 10.三、程序填空题(本大题 12 分,每小题 2 分)评分标准:全对的满分,半对半错的给一半分,全错的不得分。1.(1)s=0(2)m%n= =0(3)s=m2.(4)iai+1(6)ai+1=t四、写出下面程序的执行结果(本大题 24 分,每小题 4 分)评分标准:全对的满分,半对半错的给一半分,全错的不得分。1.c=F 2.over3. #* #* #* #* #*4. i=7;j=6;x=7 i=2
27、;j=7;x=5;5. i=10,j=26. 10,x五、编程题(本大题 24 分,第一题 7 分,第二题 8 分,第三题 9 分)1.这是一种答案,可以不使用循环,使用 SWITCH 语句来做。#include main( )int n=1,m=0,k,mod_mn=1;printf(“Please Input m value:n”);scanf(“%d”,n=1;for(k=0;k+)mod_mn=m/(n*10);printf(“%d”,(m-mod_mn*n*10)/n);if(mod_mn= =0) break;n*=10;2.main( )int i,array10;int min
28、,k=0;printf(“nPlease input array 10 elementsn”);for(i=0;iarrayi)min= arrayi; k=i; arrayk=array0;array0=min;printf(“nAfter exchange:n”);for(i=0;imain( )char *str;printf(“输入一字符串 :”);gets(str);printf(“%s的长度为:%dn”,str,string_length(str);string_length(char *s)int len=0;while(*s+)len+;return(len);模拟试题二答案一
29、、 选择题(本大题 30 分,每小题 2 分)15 D A B D B 610 C A B A B1115 B D C B C二、判断题(本大题 10 分,每小题 1 分)1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 三、程序填空题(本大题 12 分,每小题 2 分)评分标准:全对的满分,半对半错的给一半分,全错的不得分。1.(1)a=b (2)a#include main( )float a,b,c,s,s1;printf(“Please enter 3 reals:n”);scanf(“%f%f%f”,if(a+b)cs1=s*(s-a)*(s-b)*(s-c);s=sqr
30、t(s1);printf(“nArea of the triangle is %fn”,s);else printf(“It is not triangle!n”);2. #include main( )int m1,n1,n,k,temp;float s=0;printf(“Please Input n:n”);scanf(“%d”,m1=1;n1=2;for(k=0;k= Ascanf(“%f”,if(x=0a+;b=a*a;t=1/b;pi=pi*6;printf(“pi=%f”,pi);3.#include main( )int data10,m,n,j,*p1,*p2,temp;pr
31、intf(“nInput 10 integern”);for(j=0;j10|n10|(m+n)11)printf(“Input Error!n”);exit(0);sort(data,10);printf(“Result of sort is:n”);for(j=0;j*(p+j) temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;模拟试题四答案一、选择题(本大题 30 分,每小题 2 分)15 D C B A D 610 D A C C A1115 C D B B D二、判断题(本大题 10 分,每小题 1 分)1. 2. 3. 4. 5.6. 7. 8. 9.
32、10.三、程序填空题(本大题 12 分,每小题 2 分)评分标准:全对的满分,半对半错的给一半分,全错的不得分。1.(1)d=a*b/c (2)num1=90) printf(“A”);else if(score=80) printf(“B”);else if(score=70) printf(“C”);else if(score=60) printf(“D”);else printf(“E”);2. main()int a55,i,j,sum=0,min;for(i=0;iaij) min=aij;printf(“sum=%d,min=%d”,sum,min);3. #include mai
33、n( )char *months =“January”,”February”,”March”,”April”,”May”,”June”,”July”,“August”,”September”,”October”,”November”,”December”;int n;printf(“月份: ”);scanf(“%d”,if(n=1)printf(“%d 月的英文名称是%sn”,n,*(months+n-1);else printf(“输入的月份无效 !n”);模拟试题五答案一、选择题(本大题 30 分,每小题 2 分)15 C D C B A 610 A C B B A1115 D A A C
34、 B二、 判断题(本大题 10 分,每小题 1 分)1. 2. 3. 4. 5.6. 7. 8. 9. 10.三、程序填空题(本大题 12 分,每小题 2 分)评分标准:全对的满分,半对半错的给一半分,全错的不得分。1.(1)m=100(2)m/10%10(3)ai=m2.(4)i999) p=4;else if(num99) p=3;else if(num9) p=2;else if(num0) p=1;printf(“位数是: %dn”,p);a=num/1000;b=num/100%10;c=num/10%10;d=num%10;switch(p)case 4:printf(“%d%d%
35、d%dn”,d,c,b,a);case 3:printf(“%d%d%d n”,d,c,b);case 2:printf(“%d%dn”,d,c);case 1:printf(“%d n”,d);2. main( )int a44,i,j,sum;for(i=0;i4;i+)for(j=0;j4;j+)scanf(“%d”,sum=he(a);huan(a);printf(“sum=%d”,sum);he(int b ) int i,j,sum=0;for(i=0;i4;i+)for(j=0;j4;j+)if(i= =j) sum=sum+bij;else if(i+j= =3) sum=su
36、m+bij;return(sum);huan(int b)int c44, i,j;for(i=0;i4;i+)for(j=0;j4;j+)cji=bij;for(i=0;i4;i+)for(j=0;j4;j+)printf(“%d”,cij);printf(“n”);3.main( ) void tongji(char c ,char d );char zuida(char c );char a10,b10,max1,max2; int i;for(i=0;i10;i+)scanf(“%c”,for(i=0;i10;i+)scanf(“%c”,max1=zuida(a);max2=zuida(b);printf(“max1=%c,max2=%c”,max1,max2);