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 ; 那么变量C包含: 。A1个字符 B2个字符 C3个字符 D说
2、明不合法,C值不确定4.设有如下定义和执行语句,其输出结果为: 。 int a=3,b=3; a = -b + 1; printf(“%d %d,a,b); A3 2 B4 2 C2 2 D2 35.C语言中,运算对象必须是整型数的运算符是 。 A% B C% 和 D*6.能正确表示x的取值X围在0,100和-10,-5内的表达式是 。Ax=-5&x=100Bx=-10&x=0&x=-10&x=0&x=100Dx=-5&x=1007.程序段如下int k=0;while(k+=2); printf(last=%dn,k);那么执行结果是last= 。A)2 B)3 C)4 D)无结果8.下面有
3、关for循环的正确描述是 。Afor循环只能用于循环次数已经确定的情况Bfor循环是先执行循环体语句,后判断表达式C在for循环中,不能用break语句跳出循环体Dfor循环的循环体语句中,可以包含多条语句,但必须用花括号括起来9.假设二维数组a有m列,那么aIj元素前的数组元素个数为: 。Aj*m+i Bi*m+j Ci*m+j-113 Di*m+j+110.C语言中变量的指针指的是: 。A变量类型 B变量值 C变量值 D变量地址11.设有两字符串“Beijing、“China分别存放在字符数组str110,str210中,下面语句中能把“China连接到“Beijing之后的为: 。Ast
4、rcpy(str1,str2);Bstrcpy(str1, “China);Cstrcat(str1,“China)Dstrcat(“Beijing,str2);12.以下程序的运行结果是: 。main( ) int a=2, i ; for(i=0;i3;i+) printf(“%4d,f(a) ) ; f( int a) int b=0,c=3;b+; c+; return(a+b+c); A7 10 13 B7 7 7C7 9 11 D7 8 913.在C语言程序中,假设未在函数定义时说明函数类型,那么函数默认的类型为: 。 Avoid Bdouble Cint Dchar14.在说明一
5、个构造体变量时系统分配给它的存储空间是 。E)该构造体中第一个成员所需存储空间F)该构造体中最后一个成员所需存储空间G)该构造体中占用最大存储空间的成员所需存储空间H)该构造体中所有成员所需存储空间的总和15.使用fseek函数可以实现的操作是 。E)改变文件的位置指针的当前位置F)文件的顺序读写G)文件的随机读写H)以上都不对 二、判断题本大题10分,每题1分1、C程序可以由假设干个源文件组成,因此最小的功能单位是源文件,最小编译单位的是函数。 2、C程序有三种构造化程序设计方法,分别顺序构造、选择构造和循环构造。 3、在if语句中,if子句与else子句都可以单独使用,构成了if语句的两种
6、缺省形式。 4、for语句作为循环控制语句时,其括号内各个表达式及其后的分号都可缺省。 5、C程序中函数不可以嵌套定义但可以嵌套调用。 6、字符串可以用来给数组赋值,在C程序的执行语句中可以直接用字符串给数组名赋值。 7、数组名也可作为函数参数使用,此时数组名代表数组的起始地址。 8、在函数内的复合语句中定义的变量在本函数X围内有效。 9、声明一个构造体类型的一般形式为struct 构造体名 成员表列;。 10、ANCI C规定了标准输入输出函数库,用fseek()函数来实现翻开文件。 三、程序填空题本大题12分,每题2分1.下面程序可求出11000的自然数中所有的完数因子和等于该数本身的数请
7、填空。main( ) int m, n, s;for(m=2;m1000;m+) _1_;for(n=1;n=m/2;n+)if(_2_) s+=n;if(_3_) printf(“%dn, m); 2. 用起泡法对十个数由大到小排序。main( ) int a11, i, j, t; printf(“input 10 numbers: n); for(i=1;i11;i+) scanf(“%d,&ai); printf(“n); for (j=1;j=9;j+)for(i=1; _1_; i+)if (_2_)t=ai; ai=ai+1; _3_ ; printf(“the sorted n
8、umbers: n); for ( i=1; i11; i+) printf(“%d,ai);四、写出下面程序的执行结果本大题24分,每题4分1.#include main( ) char c=A+10-5;printf(“c=%cn,c); 2.#include main( ) int a,b,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;i6;i+) for(j=0;j6;j+) if ( ij )aij=
9、 #;else if(i=j) aij= ;else aij= * ; for(i=0;i6;i+) for(j=0;j6;j+) printf(“%c,aij); printf(“n);4.main( ) int i=2, x=5, j=7; fun (j,6); printf(“i=%d; j=%d; x=%dn, i, j, x ) ; printf(“i=%d; j=%d; x=%dn, i, j, x) ;5. # include main ( ) int i, j; int p,q; i=2; j=10; p=&i; q=&j; p=10; q=2; printf(i=%d, j=
10、%dn , i, j); 6. struct stru int x; char c; ;main( ) struct stru a=10, x,*p=&a; func (p); printf ( “%d,%c, a.x, a.c); func (struct stru *b)b-x=20; b-c=y; 五、编程题本大题24分,第一题7分,第二题8分,第三题9分1.把输入的整数最多不超过5位按输入顺序的反方向输出,例如,输入数是12345,要求输出结果是54321,编程实现此功能。2.编一程序,从键盘输入10个整数并保存到数组,要求找出最小的数和它的下标,然后把它和数组中最前面的元素对换位置。
11、3.编写一个函数计算一个字符串的长度,输入输出在主函数内完成。使用指针模拟试题二一、选择题本大题30分,每题2分1.C语言中不能用来表示整常数的进制是 。 A十进制 B十六进制 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的值是 。A2.500000 B3.500000 C4.500000 D5.0000004.以下表达式: 2+a+i*f, 其中i为整
12、型变量,f为float型变量,那么表达式的最终数据类型为 。Aint Bfloat Cchar Ddouble 5.有如下语句: printf(“%s,%5.3sn,“PUTER,“PUTER);执行语句后的最终结果为 。APUTER ,CMP . BPUTER, CMP.CPU, CMP. DPU, CMP .6.以下if语句中语法错误的选项是 。Aif (ab)printf(“%f,a); Bif(ab)printf(“%f,a);else printf(“%f,b);Cif(ab)printf(“%f,a) Dif(ab)printf(“%f,b);else printf(“%f,b);
13、 else printf(“%f,a);7.能表示整数x符合下面两个条件的语句是 。(1)“能被4整除,但不能被100整除.(2)能被4整除,又能被400整除.A(x%4=0&x%100!=0)|x%400=0B(x%4=0|x%100!=0)&x%400=0C(x%4=0&x%400!=0)|x%100=0D(x%100=0|x%4!=0)&x%400=08.循环语句中的for语句,其一般形式如下:for(表达式1;表达式2;表达式3) 语句其中表示循环条件的是 。A表达式1 B表达式2 C表达式3 D语句9.以数组作为函数的参数时传递的数组的首地址,那么实参数组与形参数组之间的数据传递方式
14、为 。A地址传递 B单向值传递 C双向值传递 D随机传递10.将字符串str2连接到字符串str1中应使用 。Astrcpy(str1,str2) Bstrcat(str1,str2) Cstrcmp(str1,str2) Dstrcat(str2,str1)11.假设有以下定义:int a10,*p=a; 那么*(p+3)表示的是 。A元素a3的地址 B元素a3的值C元素a4的地址 D元素a4的值12.假设有如下语句: int *p1,*p2; 那么其中int所指的是 。Ap1的类型 B*p1和*p2的类型 Cp2的类型 Dp1和p2所能指向变量的类型13.假设有如下说明:int a10=1
15、,2,3,4,5,6,7,8,9,10;char b=a,d,e;那么数值为4的表达式是 。Aa4 Bad-b Cad-b Dae-b14.有如下程序段,在Turbo C环境下运行的结果为 。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); A1,0 B2,0 C2,-1 D1,115.假设fp是指向某文件的指针,且已读到此文件末尾,那么库函数feof(fp)的返回值是 。
16、 A) EOF B) 0 C) 非零值 D) NULL二、判断题本大题10分,每题1分1.在每个C语言的程序中都必须并且只能有一个main函数。 2.在C语言中,整型数据与字符型数据在任何情况下都可以通用。 3.在C语言程序中,AHP和ahp分别代表两个不同的标识符。 4. 在if语句中,不可以没有else子句。 5.C语言规定,简单变量做实参时,与其对应的形参之间是单向的值传递。 6. for语句作为循环控制语句时,括号内的分号是用来分开表达式的,因此要根据需要加分号。 7. 数组名也可作为函数参数使用,此时是地址传递。 8. C程序有三种构造化程序设计方法,分别嵌套构造、选择构造和循环构造
17、。 9.数组在定义时没有必要指定数组的长度,其长度可以在程序中根据元素个数再决定。 10.在定义指针型变量时指定的基类型为该指针变量所能指向的变量类型。 三、程序填空题本大题12分,每题2分1.输入3个实数 a, b, c要求按从大到小的顺序输出三数.main( ) float a,b,c,t; scanf(“%f,%f,%f,&a,&b,&c); if (ab) t=a; 1 ; b=t; if( 2 ) t=a; a=c; c=t; if(bc) 3 b=c; c=t;printf(“%f,%f,%f,a,b,c);2.打印以下杨辉三角形.(要求打印出10行) main( ) int a1
18、010,i, j ; 1 for( i=0;i10;i+) 1 1 4 5 1 2 1for( i=2; i10; i+ ) - 1 3 3 1 for(j=1; ji ; j+ ) 1 4 6 4 1 aij = 6 ; for(i=0; i10; i+) for( j=1; j=i; j+) printf(“%5d,aij); printf(“n); 四、写出下面程序的执行结果本大题24分,每题4分1.main( ) int a34=1,2,3,4,5,6,7,8,9,10,11,12, b43; int i, j; for (i=0;i3;i+ )for (j=0;j4;j+ ) bji
19、=aij; for ( i=0;i4;i+ ) for ( j=0;j3;j+ ) printf( “%5d,bij ); printf( “n ); 2.main( ) int a21,i,j,n=0; for(i=2;i20;i+ )ai=i;for ( i=2;i10;i+ )if (ai=0) continue; for (j=i+1;j=20;j+) if (aj%ai=0) aj=0;for ( i=2;i=20;i+ ) if (ai!=0) printf(“%4d,ai); n=n+1; if (n%4=0) printf(“n);3. float fac(int n) flo
20、at f ; if(n0)printf(“n2);printf(%dn,j);5. # include main ( ) int p; p=&i; 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+; printf(%d: a=%d, b=%dn, c, a, b);void main(void) int i; for (i=1; i=3; i+) f( i );五、编程题本大题24分,第一题7分,第二题8分,第三题9分1.三角形的三
21、边长,试编程求三角形的面积. 要求:三边长从键盘输入,要考虑数据输入是否正确,能否构成三角形等情况.假设三边分别为: a, b, c, s=1/2 (a+b+c), area= s(s-a)(s-b)(s-c)2.有一分数序列:2/1, 3/2, 5/3, 8/5, 13/8, 21/13, 试编程求数列前20项的和.3. 输入10个学生的成绩,分别用函数实现: (1)求平均成绩;(2)按分数上下进展排序并输出。模拟试题三一、选择题本大题30分,每题2分1.以下有关C程序的说法中,正确的选项是: 。A一个C程序中只能有一个主函数且位置任意;B一个C程序中可有多个主函数且位置任意;C一个C程序中
22、只能有一个主函数且位置固定;D一个C程序中可以没有主函数。2.以下表达中不正确的选项是: 。A在C程序运算符中,逗号运算符优先级最低;BC程序中,AHP和ahp代表两个不同的变量;CC程序中,整数和实数在内存中存放形式一样;D在C程序中, %是只能用于整数运算的运算符.3.ch是字符型变量,下面不正确的赋值语句是: 。 Ach=0 Bch=a+bCch=7+9 Dch=7+94.设有如下定义int x=10,y=5,z;那么语句printf(%dn,z=(x+=y,x/y);的输出结果是 。A)1 B)0 C)4 D)35.设有如下定义:char ch=z,那么执行下面语句后变量ch是值为:
23、。ch=(A=ch&chy|xz) z=x; x=y; y=z;Ax=50, y=80, z=80 Bx=50, y=30, z=30Cx=30, y=50, z=80 D)x=80, y=30, z=5012.下面程序段的运行结果是: 。 x=y=0; while(x15) y+, x+=+y; printf(“%d, %d, y, x);A20, 7 B6, 12 C20, 8 D)8, 20 13.假设有语句 int *point , a =45; point = &a; 下面均代表同一变量地址的一组选项是: 。A&a point *&a B&*a &a *point Cpoint &p
24、oint &a D) &a, &*point point 14.以下程序的运行结果是: 。main( ) int a=2, i ; for(i=0;i3;i+) printf(“%4d,f(a) ) ; f( int a) int b=0; static int c=3b+; c+; return(a+b+c); A7 10 13 B7 7 7C7 9 11 D7 8 915.假设有如下定义: int a33=1,2,3,4,5,6,7,8,9,i ; 那么以下语句的输出结果是: 。for (i=0;ia&chz) (2);printf%cn,ch; 2. 以下程序是求矩阵a , b的和,结果
25、存入矩阵c中并按矩阵形式输出。请填空: main( ) int a34 = 7, 5, -2, 3 , 1, 0, -3, 4 , 6, 8, 0, 2 ; int b34 = 5, -1, 7, 6 , -2, 0, 1, 4 , 2, 0, 8, 6 ; int i, j, c34; for ( i=0; i3; i+ )for ( j=0; j4; j+ ) cij = _3_ ; for ( i=0; i3; i+ ) for ( j=0; j4; j+ ) printf ( “%3d, cij ) ; _4_ ; 3.以下程序使用递归法求n!,请填空:float fac( int n
26、) float f; if(n0) printf(“n0 data error); f=-1; else if(n=0|n=1) f=1; else f= 5 ;return( f ); main( ) int n; float y;printf(“input a integer number);scanf(“%d,&n);y= 6;printf(“%d! = %15.0f, n, y ); 四、写出下面程序的执行结果本大题24分,每题4分1.main( ) float a=3.14, b=3.14159; printf(“%f, %5.3fn,a,b); 2.main( ) char a55
27、,i,j; for(i=0;i5;i+)for(j=0;j5;j+)if(i=0 |i+j=4) aij=*;else aij= ; for(i=0;i5;i+)for(j=0;j5;j+) printf(%c,aij);printf(n); 3.main( ) int x, i ; for( i=1,x=1; i=10) break;if(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=6, b=7, c=8, r; r=fun
28、c( ( 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=7;k+) if (*(p1+k)=*(p2
29、+k) printf(%c,*(p1+k); printf(n); 五编程题共30分1.有一函数,其函数关系如下,试编程求对应于每一自变量的函数值。 x2 (x0) y = -0.5x+10 (0 x10) x- (x 10)2.假设有如下公式: + + +。+ 试根据上述公式编程计算 的近似值准确到10-6。3.编一程序,首先将一个包含10个数的数组按照升序排列,然后将从一指定位置m开场的n个数按照逆序重新排列,并将新生成的相互组输出。要求使用指针控制方法实现上述功能。模拟试题四一、选择题本大题30分,每题2分1.在C语言中,反斜杠符是 。 An Bt Cv D 2.表达式 18/4*sqrt(4.0)/8值的数据类型为 。Aint Bfloat Cdouble D不确定3.设整型变量a值为9,那么以下