1、一、选择题(40*1)1 对用C语言编写的代码程序,以下叙述中正确的是(B) A、可立即执行 B、是一个源程序 C、经过编译即可执行 D、经过编译解释才能执行2 以下选项中正确的实型常量是(D) A、0 B、 3. 1415 C、0.03*102 D、.323 C语言中不合法的字符串常量是(B) A、121 B、y= C、nn D、ABCDx6d 4 C语言中运算必须是整型的运算符是(B) A、/ B、% C、* D、+5 C语言中的简单数据类型有(C) A、整型、实型、逻辑型 B、整型、字符型、逻辑型 C、整型、实型、字符型 D、整型、实型、逻辑型、字符型6 以下选项中不合法的用户标识符是(
2、D) A、PRINTF B、file C、Main D、wb-17 以下非法的赋值语句是(C) A、n=(i=2,+i) B、j+ C、+(i+1) D、x=i08 C语言中不合法的常量是(D) A、xff B、65 C、& D、028 9 C语言中,字符(char)型数据在计算机内存中的存储形式是(D) A、反码 B、补码 C、EBCDIC码 D、ASCII码10 以下程序的输出结果是(D) void main() int x=10,y=3;printf(%dn ,y=x/y); A、0 B、1 C、不确定的值 D、311 以下程序段的输出是(A) int x=496;printf(*%-0
3、6d*n ,x); A、*496 * B、* 496* C、*000496* D、输出格式不合法12 若变量已经正确说明为int类型,要给a,b,c输入数据,以下正确的输入语句是(D) A、read(a,b,c); B、scanf(%d%d%d ,a,b,c); C、scanf(%D%D%D ,&a,&b,&c) D、scanf(%d%d%d ,&a,&b,&c)13 以下合法的C语言赋值语句是(D) A、a=b=58 B、k=int(a+b); C、a=58,b=58 D、 - - i;14 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 & y+z/2的值是(A)
4、 A、1 B、0 C、2 D、615 以下程序执行后输出结果是(B) void main() int i=10,j=1;printf(%d,%dn ,i-,+j); A、9,2 B、10,2 C、9,1 D、10,116 设有语句char a= 172 ;,则变量a(A) A、包含一个字符 B、包含2个字符 C、包含个字符 D、说明不合法17 若变量已经正确定义,要将a和b中的数据进行交换,下面不正确的语句是(C) A、a=a+b,b=a-b,a=a-b; B、t=a;a=b;b=t C、a=t;t=b;b=a; D、t=b;b=a;a=t;18 若变量已经正确说明,要求用以下语句给c1赋值字
5、符%,给c2赋值字符#,给a赋值2.0,给b赋值4.0,则正确的输入形式是(B) scanf(%f%c%f%c ,&a,&c1,&b,&c2); A、2.0 % 4.0 # B、2.0%4.0# C、2 % 4# D、2 % 4 #19 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D) A、6.500000 B、7 C、5.500000 D、6.00000020 以下程序执行后的输出结果是(D) void main() int i=1,j=1,k=2;if(j+|k+)& i+) printf(%d,%d,%dn ,i,j,k); A、1,1,
6、2 B、2,2,1 C、2,2,2 D、2,2,321 下列运算符中优先级最高的运算符是(A) A、! B、% C、 -= D、&22 运行以下程序后,输出的结果是(A)void main() int k=-3; if(k A & xbc) printf(%dn ,d); else if(c-1=d)=1) printf(%dn ,d+1); else printf(%dn ,d+2); A、3 B、2 C、编译出错 D、425 若执行以下程序时从键盘上输入3和4(输入方式:3 4),则输出的结果是(C)void main() int a,b,s; scanf(%d%d ,&a,&b); s=
7、a; if(ab) s=b; s*=s; printf(%dn ,s); A、14 B、18 C、16 D、2026 设a、b和c都是int变量,且a=3,b=4,c=5,则以下的表达式中,值为0的表达式是(D) A、a&b B、a=b C、a|b+c&b-c D、 !(ab)&!c|1)27 以下的程序运行结果是(D) void main() int a=2,b=-1,c=2; if(ab) if(b0) c=0; else c+=1; printf(%dn ,c); A、0 B、1 C、3 D、228 以下程序的输出结果是(C)void main() int x=1,a=0,b=0; sw
8、itch(x) case 0:b+; case 1:a+; case 2:a+;b+; printf(a=%d,b=%dn ,a,b); A、a=2,b=2 B、a=1,b=1 C、a=2,b=1 D、a=1,b=029 若x是int类型变量,以下程序段的输出结果是(D) for(x=3;x7) n-; printf(%d ,n); A、987 B、1098 C、10987 D、987631 以下程序段的输出结果是(C) int i,j,m=0; for(i=1;i=15;i+=4) for(j=3;j=19;j+=4)m+; printf(%dn ,m); A、12 B、15 C、20 D、
9、2532 以下程序段的输出结果是(C) int x=3; do printf(%3d ,x-=2); while(!(-x); A、1 B、3 0 C、1 -2 D、死循环33 以下的程序输出结果为(A)void main() int i; for(i=0;i3;i+) switch(i) case 1:printf(%d,i); case 2:printf(%d,i); default: printf(%d,i); A、011122 B、012 C、012020 D、12034 以下程序的输出结果是(C)# includevoid man() int i; for(i=1;i5;i+) if
10、(i%2) putchar( ); putchar(# ); A、# B、 # C、# D、#35 若想将一个字符数组a的内容存入另一个字符数组b中,下列正确的是(B) A、b=a B、strcpy(b,a) C、strcpy(a,b) D、strcat(b,a)36 下面的程序输出结果是(A)void main() int a10=1,2,3,4,5,6,7,8,9,10,*p=a; printf(%dn,*(p+2); A、3 B、4 C、1 D、237 以下对整型数组a的正确说法是(D) A、int a(10); B、int n=10,an; C、int n;sacnf(%d ,&n);
11、int an D、#define SIZE 10 int aSIZE;38 以下程序的输出结果是(B) void main() int i,sum; for(i=1;i6;i+) sum+=i; printf(%dn ,sum); A、15 B、不确定 C、16 D、039 以下程序的输出结果是(A)void main() int i,x33=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) printf(%d, ,xi2-i); A、3,5,7 B、1,4,7 C、1,5,9 D、3,6,940 若fp是指向某文件的指针,且已经读到文件的末尾,则库函数feof(fp)的返回
12、值是(A) A、EOF B、-1 C、NULL D、非零值二、填空题(20*1)1、C语言中函数的组成部分包括 函数头 和 函数体 。2、下列程序的功能判断一个输入整数是否是素数,若为素数输出1,否则输出0。void main() int i,x,y=1; scanf(%d,&x); for(i=2;i=0 ) if(xamax) amax=x; if( xamin ) amin=x; printf(namax=%fnamin=%fn,amax,amin);4、以下程序计算公式,请填空 long f(int n) int i;long s; s=1L; for(i=1;i=n;i+) s= s
13、*i ; return s;void main() long s;int k,n; scanf(%d,&n); s=0; for(k=0;keps;n+) s+=t; t=n*t/(2*n+1); return (2.0* s )6、由“/*”和“*/”之间的内容是 它的作用是 。7、若x为double型变量,请写出运算x=3.2,x+后表达式的值 和变量的值 。8、复合语句在语法上被认为是 。空语句的形式是 ; 。9、若定义int a34=1,2,3,4,5,6,7,8,9;则a13= 8 a23= 0 。10、模块化程序设计的设计原则是 和 。三、判断题(10*1)1、在C语言中无论是整数
14、还是实数,只要在允许的范围内都能准确无误的表示(F)2、正常执行一个名为“C001.c”的源程序后,在当前的目录不会产生C001.dat文件(T)3、一个算法具有包括“零个或多个输出”在内的5个特性(F)4、C语言的源程序不必通过编译就可以直接运行(F)5、由结构化程序的三种基本结构组成的算法可以完成任何复杂的任务(T)6、在C程序中,函数可能嵌套定义,也可以嵌套调用(F)7、int i,*p=&i;是正确的C说明(T)8、因为&运算和|运算都是双目运算,所以它们优先级相同(F)9、do-while语句构成的循环不能用其它语句构成的循环来代替(F)10、数组名是一个常量(F)四、程序填空题(2
15、*5)1、求两个非负数的最大公约数和最小公倍数# includevoid main() int m,n,r,p,gcd,lcm; scanf(%d%d ,&m,&n); if(mn)p=m,m=n,n=p; p=m*n; r=m%n; while( ) m=n;n=r; ; gcd= ; lcm=p/ ; printf(gcd=%d,lcm=%dn , );2、输出正整数m和n(不包含m、n)之间的所有素数,要求每行输出8个数。# include# includemain() int I,m,n,k=0,j; double s; printf(请输入正整数m,n(mn):); scanf(%d
16、,%d ,&m,&n); for(i=m+1;in;i+) s= ; for( ;js;j+) if( ) break; if( ) printf(%6d ,i);k+; if( ) printf(n ); printf(nn );五、程序设计(2*10)1 编写函数f(int n),用于计算如下公式的值:y=1/2+1/4+1/5+.+1/2n# includedouble fun(int n)/* Begin */* End */void main() int n; printf(Enter n: ); scanf(%d,&n); printf(nThe result is %lfn,fu
17、n(n);2 编一个函数void convert(int a3),求3*3矩阵的转置矩阵# include# define N 3void convert(int aN)void main() int i,j,arrayNN; for(i=0;iN;i+) for(j=0;jN;j+) arrayij=i*3+j+1; printf(转置前:n); for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d,arrayij); printf(n); convert(array); printf(转置后:n); for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d,arrayij); printf(n); void convert(int aN)/* Begin */* End */