计算机二级C语言试题库.pdf
《计算机二级C语言试题库.pdf》由会员分享,可在线阅读,更多相关《计算机二级C语言试题库.pdf(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机二级C 语言试题库1 有以下程序main() int a=1,b=2,m=0,n=0,k; k=(n=ba)|(m=aprintf(%d,%dn,k,m); 程序运行后的输出结果是A)0,0 B )0,1 C)1,0 D) 1,1 2 在一个 C 程序中A)main 函数必须出现在所有函数之前B)main 函数可以在任何地方出现C)main 函数必须出现在所有函数之后D)main 函数必须出现在固定位置3 有以下程序main() int a=5,b=4,c=3,d=2; if (abc) printf(%dn, d); else if ( (c-1 = d) = 1) printf(%d
2、n, d+1); else printf(%dn, d+2); 执行后输出结果是A)2 B)3 C)4 D )编译时有错,无结果4 有以下程序main() int i; for (i=0; ib) return(a); else return(b); main() int x=3, y=8, z=6, r; r=fun(fun(x,y), 2*z); printf(%dn, r); 程序运行后的输出结果是A)3 B)6 C)8 D )12 7 有以下程序int *f(int *x, int *y) if (*x *y) return x; else return y; main() int a
3、=7,b=8,*p,*q, *r; p=&a; q=&b; r = f(p,q); printf(%d,%d,%dn,*p,*q,*r); 执行后输出结果是A)7,8,8 B)7,8,7 C)8,7,7 D )8,7,8 8 以下能正确地定义整型变量a,b 和 c 并为其赋初值5 的语句是A)int a=b=c=5 ; B)int a,b,c=5 ;C)a=5,b=5,c=5 ; D)a=c=b=5 ;9 若二维数组a 有 m 列,则在aij 前的元素个数为A)j*m+i B)i*m+j C)i*m+j-1 D)i*m+j+1 10 下面程序段是输出两个字符串中对应相等的字符。请选择填空cha
4、r x=” programming” ; char y=” Fortran” ; int i=0; while(xi!=0 &yi!=0 ) if(xi= =yi)printf(“ %c” ,); else i+; A) xi+ B)y+i C)xi D)yi 11 若使用一维数组名作函数实参,则以下正确的说法是A)必须在主调函数中说明次数组的大小B 实参数组类型与形参数组类型可以不匹配C 在被调函数中,不需要考虑形参数组的大小D 实参数组名与形参数组名必须一致12 以下程序的正确运行结果是#inclued main() int k=4,m=1,p; p=func(k,m);printf(“
5、%d ” ,p); p=func(k,m);printf(“ %dn” ,p); func(int a,int b) static int m=0,i=2; i+=m+1; m=i+a+b; return(m); A)8,17 B)8,16 C)8,20 D)8,8 13 若有说明: int *p,m=5,n ;以下正确的程序段是A) p=&n;scanf(“ %d ” ,&p); B) p=&n;scanf(“ %d ” ,*p); C) scanf(“ %d ” ,&n);*p=n; D) p=&n;*p=m; 14 执行以下程序后,a 和 b 的值为main() int a,b,k=4,
6、m=6,*p1=&k,*p2=&m; a=p1=&m; b=(-*p1)/(*p2)+7; pri ntf(“ a=%dn” ,a); printf(“ b=%dn” ,b); A)-1 ,5 B)1,6 C)0,7 D)4,10 15 若要用 fopen 函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是A) ” ab+” B) ” wb+” C) ” rb+ ” D ” ab” 16 根据定义和数据的输入方式,输入语句的正确形式为已有定义 :float f1,f2; 数据的输入方式:4.52 3.5 A)scanf(“ %f,%f ” ,&f1,&f2); B) sca
7、nf(“ %f%f” ,&f1,&f2); C) scanf(“ %3.2f %2.1f” ,&f1,&f2); D) scanf(“ %3.2f%2.1f” ,&f1,&f2); 17 分析以下程序运行结果#include int func(int n) if(n=1) return 1; else return(n*func(n-1); void main() int x; x=func(5) ;printf(“ %dn” ,x); A)100 B)5 C)1 D)120 18 分析以下程序运行结果#include void main() int y=2,a=1; while(y-!=-1
8、) do a*=y;a+; while(y-); printf(“ %d,%dn” ,a,y); A)1,-2 B)2,1 C)1,0 D)2,-1 19 下面程序段的运行结果是char a7=” abcdef ” ; charb4=” ABC ” ; strcpy(a,b); printf(“ %c” ,a5); A) 空格B)0 C)e D)f 20 下面是对s 的初始化,其中不正确的是A)char s5=“ abc” ; B)char s5= a , b , c ; C)char s5=” ; D)char s5=” abcdef ” ; 21 执行语句for(i=1;i+4; ) ;后
9、变量i 的值是A)3 B)4 C)5 D) 不定22 以下程序段x=-1; do x=x*x; while(!x); A) 是死循环B)循环执行二次C)循环执行一次D) 有语法错误23 若有以下定义和语句:inion data int i; char c; float f; a; int n; 则以下语句正确的是A)a=5; B)a=2, a ,1.2; C)printf(“ %dn” ,a); D)n=a; 24 下面程序的运行结果是main() struct cmplxint x; int y; cnum2=1,3,2,7; printf(“ %dn” ,cnum0.y/cnum0.x*c
10、unm1.x); A)0 B)1 C)3 D)6 25 以下程序的运行结果是main() int k=4,a=3,b=2,c=1; printf(“n” ,k A)4 B)3 C)2 D)1 二 填空1 若有以下定义,则计算表达式y+=y-=m*= 以后 y 的值是 _ int m=5,y=2; 2 若有定义 :int b=7;float a=2.5,c=4.7;:则下面表达式的值为_ a+(int)(b/3*(int)(a+c)/2)%4 3 有 int a=3,b=4,c=5;, 则以下表达式的值为_ !(a+b)+c-1&b+c/2 4 条件” 2 或 x-10”的 c 语言表达式是_
11、5 以下程序的功能是判断输入的年份是否是闰年.请在 内填入正确内容main() int y,f; scanf(“ %d ” ,&y); if(y%400=0)f=1; else if(5)f=1; else6; if(f) printf(“ %d is ” ,y); else printf(“ %d is not” ,y); printf(“ a leap yearn” ); 6 下面程序的功能是计算100 至 1000 之间有多少个数其各位数字之和是5。请填空#include main(0 int i,s,k,count=0; for(i=100;i=1000;i+) s=0;k=i; wh
12、ile(7)s=s+k%10;k=8; if(s!=5)9; else count+; printf(“ %d ” ,count); 7 下面程序将二维数组a 的行和列元素呼唤后存到另一个二维数组b 中。请填空main() int a23=1,2,3,4,5,6; int b32,I,j; printf(“ array a:n” ); for(i=0;i=1;i+) for(j=0;10;j+) printf(“ %5d ” ,aij); 11; printf(“n” ); printf(“ array b:n” ); for(i=0;12;i+) for(j=0;j=1;j+) printf
13、(“ %5d ” ,bij); printf(“n” ); 8 以下 search 函数的功能是利用顺序查找法从数组a的 10 个元素中对关键字m 进行查找。顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字你叫,直到找到此元素或查找到数组尾部时结束。若找到,返回此元素的下标;若仍未找到,则返回值-1。请填空#include int search(int a10,int m) int I; for(i=0;i=9;i+) if(1)return(i); return(-1); main() int a13,m,i,no; no=search(14); if(15) printf(“nO
14、K FOUND!%d ” ,no+1); else printf(“nSorry Not Found!” ); 9 若有定义: int a=2,4,6,8,10,12,*p=a;则*(p+1) 的值是 16 ,*(a+5) 的值是 17 10 将任意输入的一个偶数n 分解为两个素数之和,并给出各种分解方法#include main() int n,i; int check(int x); do scanf(“ %d ” ,&n); while(n%2!=0); for(i=3;i=n/2;i+) if(check(i)&18) printf(“ %d=%d+%dn” ,n,i,n -i); i
15、nt check(int x) int i; for(i=2;iif(19) return(0); return(1); 11 函数调用语句:fgets(buf,n,fp);从 fp 指向的文件中读入20 个字符放到buf 字符数组中。函数值为21 12 设数组 a 包括 10 个整型元素。下面程序的功能是求出a 中各相邻元素的和,并将这些和存在数组b 中,按每行 3 个元素的形式输出。请填空main() int a10,b10,i; for(i=0;i10;i+) scanf(“ %d ” ,&ai); for(22;i10;i+) 23 for(i=1;i0) ;D)if(b=0)m=l;
16、n=2;答案: D 评析:选项A 为空语句,选项B 是一个由逗号运算符表达式形成的语句,选项c 为一个条件语句,选项D 有两个分号,是由两个语句构成,不能看成一条语句。(17)已知 i、j、k 为 int 型变量,若从键盘输入:1,2,3,使 i 的值为 l 、j 的值为 2、 k 的值为 3,以下选项中正确的输入语句是_。A)scanf( 2d2d2 dtt,&i , j,&k) ;B)scanf( ddd,&i , j, k);C)scanf( d, d, dfI, i, j, k);D)scanf(i= d,j=d,k=d-t,&i ,&j ,&k) ;答案: C 评析:如果在格式控制
17、字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。(18)关于 goto 语句的使用,下面正确的是_。A)goto 2 ;B)goto g ;C)goto g :;D)goto 2 ;2:exit(0) ;g:exit(O) ;g:exit(O) ;2 exit(0) ;答案: B 评析:在c 中, goto 语句后面的标号的命名规则与c 语言中标识符的命名规则相同,在goto 语句后面的标号后不要加:号,在某一行上添加标号时,在标号的后面要添加:号。(19)若有以下程序:main() int k=2 ,i=2 ,m;m=(k+=I*=k);printf( d,
18、d、n,m,i); 执行后的输出结果是_ 。A)8 ,6B)8,3C)6,4D) 7,4 答案: C 评析: 在赋值符 = 之前加上其它运算符,可以构成复合的运算符。此运算为右结合性,即从右往左计算。I*=k 即 i=i*k=2*2=4,k=k+i=2+4=6 ,然后将k 的值赋给m。(20)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#define N 10 void arrin(int xN) int i=0 ;while(i 在下划线处应填入的是_ 。A)x+iB)&xi+lC)x+(i+)D)&x+I 答案: C 评析:在c 中 ,对于一维数组而言,数组变量表示数组中首
19、元素的的地址。当用scanf 函数向数组x 的第 i 个元素中输入整型数据时,只要执行scanf( dx+i) :由于要循环输入数组中和各个元素,必须要使其地址值不断自增。故本题答案为c。(21)已有定义: int x=3 ,y=4,z=5 ;,则表达式!(x+y)+z-l &y+z 2 的值是 _ 。A)6B)0C)2D)1 答案: D 评析: 在本题中, 运算符的优先级分别为:!/+,-&即:!(3+4)+5-1&4+5 2=0+5-1&4+2=4&6=l。(22)以下选项中,与k=11+ 完全等价的表达式是_ 。A)k=n ,n=n+1B)n=n+1 , l(=nC)l(= 什 nD)k
20、+-n+1 答案: A 评析: n+是自增运算,是先使用,然后再使n 加 1,(28)已定义以下函数:fun(char*p2,char*p1) while(*p2=*p1)!= 0)pl+ ;p2+ ; 函数的功能是_。A) 将 p1 所指字符串复制到p2 所指内存空间B) 将 pl 所指字符串的地址赋给指针p2 C)对 p1 和 p2 两个指针所指字符串进行比较D) 检查 p1 和 p2 两个指针所指字符串中是否有O答案: A 评析:由于在while循环的条件中执行了*p2=*pl运算,其作用是将*pl中的内容复制到*p2 中,而(*p2=*p1)!= 0的作用是判断当前字符是否为字符串结束
21、字符O。在循环体中p1+,p2+的目的是移动字(29)有以下程序void fun(char*c,int d) *c=*c+1;d=d+1;printf( c, c, *c,d); main() char a :。 A, b。 a;fun(&b ,a);printf( c, cn,a,b);) 程序运行后的输出结果是_ 。A)B,a,B,aB)a,B,a,BC)A , b, A,bD)b ,B, A,b 答案: D 评析:将a,b 代入函数得 +&b= 。&b+1=a+l=b ,所以打印出第一个字母b;a=a+l=A+l=B ,打印出第二个字符B;a=A,输出字母A;b 由于是按地址传到函数而被
22、修改,为b,输出字母b (30)以下程序中函数sort 的功能是对a 所指数组中的数据进行由大到小的排序。void sort(int a ,im n) intiJ ,t;for(i=O ;ifor=i+1 0if(ai main() int aa10 :1,2,3,4,5,6,7,8,9,10 ,i;sort(&aa3 ,5);for(i=0 ;iprintf( n) ;) 程序运行后的输出结果是_。A)l ,2,3,4,5, 6, 7,8, 9,10,B)10,9,8,7,6,5,4,3 , 2,1,C)l ,2,3,8,7,6,5,4,9,10,D)l,2,10,9,8,7,6,5,4,3
23、 ,答案: C 评析:本题并不是对数组的所有元素进行排序,而是对从a3开始往后的4 个元素进行排序。(31)对于基类型相同的两个指针变量,不能进行的运算是_。A)O y= O x=O -1 x以下程序段中不能根据x 的值正确计算出y 的值的是 _。A)if(xO)y=l; else if(x=O)y=0 ;else y=-l ;B)y=O ;if(xO)y=1 ;else if(xC)y=0;if(x=0)if(xO)y=1;else y=-l ;D)if(x=0)if(xO)y=l;else y=O;else y=-1;答案: C 评析:本题应当注意if 与 else 的配对关系。 从最内层
24、开始, else 总是与它上面最近的(未曾配对的 )if 配对。(35)以下程序中的函数reverse 的功能是将a 所指数组中的内容进行逆置。void reverse(int a ,im n) int i ,t;for(i=O ;it=ai ;ai=an-l-i;an-1-i=t ; main() int b10=1,2,3,4,5,6,7,8,9,10;int i ,s=0;reverse(b,8);for(i=6 ;i10;i+)s+=bI ;printf( dn, s); 程序运行后的输出结果是A)22B)10C)34D)30 答案: A 评析:本题并不是将整个数组中的内容逆置,而是逆
25、置前8 个元素。逆置后的数组为:8,7,6,5, 4,3,2, 1,9,10 通过 for 循环计算b6+b7+b8+b9即 2+1+9+10=22 。(36)执行下面的程序段后,变量k 的值为 _ 。int k=3,s2 ;s0=k ;k=s1*10 ;A) 不确定B)33C)30D)10 答案: A 评析:由于本题中未对数组进行初始化,因此程序运行时,数组s 中各个元素的值都是不确定的,虽然在代码中对sO进行了赋值,但没有对s1 进行赋值,故执行l(=s1+10 ;后, k 的值不确定。(37)有以下程序#include main() char p=abcde0fghjik O;print
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 语言 试题库
限制150内