1、一、选择题(40*1) 1 对用C语言编写的代码程序,以下叙述中正确的是(B) A、可立即执行 B、是一个源程序 C、经过编译即可执行 D、经过编译解释才能执行 2 以下选项中正确的实型常量是(D) A、0 B、 3. 1415 C、0.03*102 D、.32 3
2、C语言中不合法的字符串常量是(B) A、"\121 " B、'y= ' C、"\n\n " D、"ABCD\x6d " 4 C语言中运算必须是整型的运算符是(B) A、/ B、% C、* D、+ 5 C语言中的简单数据类型有(C) A、整型、实型、逻辑型 B、整型、字符型、逻辑型
3、 C、整型、实型、字符型 D、整型、实型、逻辑型、字符型 6 以下选项中不合法的用户标识符是(D) A、PRINTF B、file C、Main D、wb-1 7 以下非法的赋值语句是(C) A、n=(i=2,++i) B、j++ C、++(i+1) D、x=i>0 8 C语言中不合法的常量是(D) A、'\xff '
4、 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("%d\n ",y=x/y);} A、0 B、1
5、 C、不确定的值 D、3 11 以下程序段的输出是(A) int x=496;printf("*%-06d*\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);
6、 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) A、1 B、0 C、2
7、 D、6 15 以下程序执行后输出结果是(B) void main() { int i=10,j=1;printf("%d,%d\n ",i--,++j);} A、9,2 B、10,2 C、9,1 D、10,1 16 设有语句char a= '\172 ';,则变量a(A) A、包含一个字符 B、包含2个字符 C、包含个字符
8、 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赋值字符%,给c2赋值字符#,给a赋值2.0,给b赋值4.0,则正确的输入形式是(B) scanf("%f%c%f%c ",&a,&c1,&b,&c2);
9、 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.000000 20 以下程序执行后的输出结果是(D) void main() {int i=1,j=1,k=2;if((j++||k++)&& i++
10、) printf("%d,%d,%d\n ",i,j,k);} A、1,1,2 B、2,2,1 C、2,2,2 D、2,2,3 21 下列运算符中优先级最高的运算符是(A) A、! B、% C、 -= D、&& 22 运行以下程序后,输出的结果是(A) void main() { int k=-3; if(k<=0)
11、 printf("****\n "); else printf("&&&&\n "); } A、**** B、&&&& C、****&&&& D、有语法错误不能通过编译 23 以下程序段的输出结果是(B) void main() { char x= 'A '; x=(x> 'A ' && x< 'Z ')?(x+32):x; printf("%c\n ",x ); } A、 a B、 A
12、 C、 Z D、 z 24 以下的程序执行后输出的结果是(A) void main() { int a=5,b=4,c=3,d=2; if(a>b>c) printf("%d\n ",d); else if((c-1>=d)==1) printf("%d\n ",d+1); else printf("%d\n ",d+2); } A、3
13、B、2 C、编译出错 D、4 25 若执行以下程序时从键盘上输入3和4(输入方式:3 4),则输出的结果是(C) void main() { int a,b,s; scanf("%d%d ",&a,&b); s=a; if(a
14、16 D、20 26 设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、 !((a
15、tf("%d\n ",c); } A、0 B、1 C、3 D、2 28 以下程序的输出结果是(C) void main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b
16、d\n ",a,b); } A、a=2,b=2 B、a=1,b=1 C、a=2,b=1 D、a=1,b=0 29 若x是int类型变量,以下程序段的输出结果是(D) for(x=3;x<6;x++) printf((x%2)?( "**%d "):( "##%d\n "),x); A **3 B ##3 C ##3 D **3##4 ##4
17、 **4 **4##5 **5 **5 ##5 30 以下程序的输出结果是(A) int n=10; while(n>7) { n--; printf("%d ",n); } A、987 B、1098 C、10987 D、9876 31 以下程序段的输出结果是(C)
18、 int i,j,m=0; for(i=1;i<=15;i+=4) for(j=3;j<=19;j+=4){m++;} printf("%d\n ",m); A、12 B、15 C、20 D、25 32 以下程序段的输出结果是(C) int x=3; do { printf("%3d ",x-=2); } wh
19、ile(!(--x)); A、1 B、3 0 C、1 -2 D、死循环 33 以下的程序输出结果为(A) void main() { int i; for(i=0;i<3;i++) switch(i) { case 1:printf("%d",i); case 2:printf("%d",i); default: printf("%d",i); } } A、011122
20、 B、012 C、012020 D、120
34 以下程序的输出结果是(C)
# include
21、 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 a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*(p+2)); } A、3 B、
22、4 C、1 D、2 37 以下对整型数组a的正确说法是(D) A、int a(10); B、int n=10,a[n]; C、int n;sacnf("%d ",&n);int a[n] D、#define SIZE 10 int a[SIZE]; 38 以下程序的输出结果是(B) void main() { int i,s
23、um; for(i=1;i<6;i++) sum+=i; printf("%d\n ",sum); } A、15 B、不确定 C、16 D、0 39 以下程序的输出结果是(A) void main() { int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d, ",
24、x[i][2-i]); } A、3,5,7 B、1,4,7 C、1,5,9 D、3,6,9 40 若fp是指向某文件的指针,且已经读到文件的末尾,则库函数feof(fp)的返回值是(A) A、EOF B、-1 C、NULL D、非零值 二、填空题(20*1) 1、C语言中函数的组成部分包括 函数头 和 函数体 。 2、下列程序的功能判断一个输入整数是否是素数,若为素数输出1
25、否则输出0。 void main() { int i,x,y=1; scanf("%d",&x); for(i=2;i< x/2 ;i++) if( x%i==0 ) {y=0;break;} printf("%d\n",y); } 3、下面的程序功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩。当输入为负数时结束输入,请填空: void main() { float x,amax,amin; scanf("%f",&x
26、);
amax=x;amin=x;
while( x>=0 )
{ if(x>amax) amax=x;
if( x 27、i ;
return s;
}
void main()
{ long s;int k,n;
scanf("%d",&n);
s=0;
for(k=0;k<=n;k++)
s=s+ f(k) ;
printf("%d\n",s);
}
5、下面的函数功能是,根据以下公式返回满足精度eps要求的PI值
double pi(double eps)
{ double s=0.0,t=1.0;
int n;
28、for( n=1 ;t>eps;n++)
{ s+=t;
t=n*t/(2*n+1);
}
return (2.0* s )
}
6、由“/*”和“*/”之间的内容是 它的作用是 。
7、若x为double型变量,请写出运算x=3.2,x++后表达式的值 和变量的值 。
8、复合语句在语法上被认为是 。空语句的形式是 ; 。
9、若定义int a[3][4]={1,2,3,4,5,6,7 29、8,9};则a[1][3]= 8 a[2][3]= 0 。
10、模块化程序设计的设计原则是 和 。
三、判断题(10*1)
1、在C语言中无论是整数还是实数,只要在允许的范围内都能准确无误的表示(F)
2、正常执行一个名为“C001.c”的源程序后,在当前的目录不会产生C001.dat文件(T)
3、一个算法具有包括“零个或多个输出”在内的5个特性(F)
4、C语言的源程序不必通过编译就可以直接运行(F)
5、由结构化程序的三种基本结构组成的算法可以完成任何复杂的任务(T)
6、在C程序中,函数可能嵌套定 30、义,也可以嵌套调用(F)
7、int i,*p=&i;是正确的C说明(T)
8、因为&&运算和||运算都是双目运算,所以它们优先级相同(F)
9、do-while语句构成的循环不能用其它语句构成的循环来代替(F)
10、数组名是一个常量(F)
四、程序填空题(2*5)
1、求两个非负数的最大公约数和最小公倍数
# include 31、
r=m%n;
while( )
{ m=n;n=r; ;
}
gcd= ;
lcm=p/ ;
printf("gcd=%d,lcm=%d\n ", );
}
2、输出正整数m和n(不包含m、n)之间的所有素数,要求每行输出8个数。
# include 32、
{ int I,m,n,k=0,j;
double s;
printf("请输入正整数m,n(m 33、 { printf("%6d ",i);k++;
}
if( ) printf("\n ");
}
printf("\n\n ");
}
五、程序设计(2*10)
1 编写函数f(int n),用于计算如下公式的值:y=1/2+1/4+1/5+.....+1/2n
# include 34、
/******************** End *****************/
void main()
{
int n;
printf("Enter n: ");
scanf("%d",&n);
printf("\nThe result is %lf\n",fun(n));
}
2 编一个函数void convert(int a[][3]),求3*3矩阵的转置矩阵
# include 35、in()
{
int i,j,array[N][N];
for(i=0;i 36、
}
convert(array);
printf("转置后:\n");
for(i=0;i






