第一章 初识C语言

第一章 单元测试

1、对于计算机来说,最后执行的C语言程序是( )
    A、源程序
    B、目标程序
    C、汇编程序
    D、可执行程序

2、以下叙述中正确的是( )
    A、C程序的基本组成单位是语句
    B、C程序中的每一行只能写一条语句
    C、C语句必须以分号结束
    D、C语言必须在一行内写完

3、以下叙述错误的是 ( )
    A、一个C程序可以包含多个不同名的函数
    B、一个C程序只能有一个主函数
    C、C程序在书写时,有严格的缩进要求,否则不能编译通过
    D、C程序的主函数必须用main作为函数名

4、关于注释以下叙述正确的是( )
    A、注释的内容必须放在一堆/*和*/之间,或//之后
    B、注释必须置于所说明的语句前或语句后
    C、注释中间可以嵌套另一个注释
    D、注释内容错误会导致编译出错

5、C语言程序编写完后,应该执行的操作顺序是()
    A、执行-编译-连接
    B、编译-连接-执行
    C、连接-执行-编译
    D、连接-编译-执行

6、关于main函数的说法,正确的是()
    A、程序总是从main()函数入口的
    B、若main函数后面没有参数,则后面的一对()可以不要
    C、main()作为函数首部,后面要有分号;
    D、main()函数的函数体用()括起来

7、对于语句int a,b;说法错误的是
    A、是将变量a定义为整型,b是void类型
    B、是定义语句,a,b中有值但不可用
    C、这条语句的目的是为了在内存中为变量分配相应的空间
    D、可以在定义语句的同时直接给变量赋值

8、对于输出sum的值,正确的写法是()
    A、printf("sum is",sum);
    B、printf("sum is %d",&sum);
    C、printf("sum is %d",sum);
    D、scanf("sum is",sum);

9、对于#include<stdio.h>这条语句说法正确的是
    A、这是一条编译预处理语句
    B、stdio.h是系统提供的一个文件名,这个文件里存放了一些函数的声明和变量的定义
    C、没有这条语句,所有的函数都不能执行
    D、C编译时先由预处理器对预处理指令进行处理

10、一个程序主要包含()
    A、变量
    B、算法
    C、循环
    D、数据结构

11、算法的特性有()
    A、有穷性
    B、确定性
    C、有多个输出
    D、有效性

12、程序中的三大基本结构是()
    A、顺序结构
    B、循环结构
    C、跳转结构
    D、选择结构

13、下列可以用来编译C语言的环境有
    A、VC++6.0
    B、DEVC++
    C、Excel
    D、CodeBlocks

14、当用scanf("%d%d%d",&a,&b,&c);语句输入数值时,可以用()符号作为间隔符输入。
    A、空格
    B、斜杠/
    C、回车
    D、tab

15、程序编译后没有错就算成功了

16、语句“a=3;”的意思是变量a与3相等

17、下列程序执行后输出结果是_________ #include <stdio.h> int main() { int a=0,b=0; b=20; printf("a+b=%d",a+b); return 0; }

第二章 我们开始爬坡-程序起步

第二章 单元测试

1、下列各项中合法的用户标识符是
    A、st.1
    B、char
    C、1as
    D、INT

2、若有定义inta,b,c;以下选项中的赋值语句正确的是
    A、a=(b=c)+ 1;
    B、(a=b)=c= 1;
    C、a=(b=c)= 1;
    D、a+b=c;

3、设变量已正确定义并赋值,以下正确的表达式是
    A、x=y+z+5, ++y
    B、int(15.8%5)
    C、x=y*5=x+ z
    D、x=25%5.0

4、若有定义: char c; int d; ,程序运行时输入: 1,2<回车>,能把值1输入给变量c、值2输入给变量d的输入语句是
    A、scanf"%c,%d", &c,&d);
    B、scanf("%c%d", &c,&d);
    C、scaf("%d,%f", &c,&d);
    D、canf("%d%d", &c,&d);

5、设有定义: int x=7,y=12;, 则以下表达式值为3的是
    A、y%=(x-x%5)
    B、y%=(x%=5)
    C、y%=x-x%5
    D、(y%=x)-(x%=5)

6、若想给已定义为int型的变量a、b、C、d赋值整数2,以下选项中错误的语句是
    A、d=c,c=b, b=a, a=2;
    B、d=c=b=a=2;
    C、d=(b=c=(a=2));
    D、d=2,c=d, b=c, a=b;

7、以下为合法的C语言赋值语句的是
    A、a=10
    B、x=y=10;
    C、i++
    D、m=2,n=5

8、有以下程序段 int m=3, n=4, x; x=-m++; x=x+8/++n; printf("x=%d\n",x);
    A、x=3
    B、x=5
    C、x=-1
    D、x=-2

9、以下程序段的输出结果是 int a=2, b=3, c=4; a*=16+(b++)-(++c); printf("%d\n",a);
    A、28
    B、30
    C、26
    D、32

10、在C语言中,要求参加运算的数必须是整数的运算符是
    A、/
    B、*
    C、%
    D、=

第三章 与程序的对话

第三章 单元测试

1、设有定义“int a; float b;”,执行scanf(“%2d%f”,&a,&b);语句时,若从键盘输入876<空格>854.0<回车>,a和b的值分别为( )。
    A、876和543.000000
    B、87和6.000000
    C、87和543.000000
    D、76和543.000000

2、以下程序的输出结果是( ) main() { int m=2, n=3; printf("m=%d%d,n=%%d",m,n); }
    A、m=2, n=3
    B、m=%2, n=%3
    C、m=%%d,n=%%d
    D、m=23, n=%d

3、若有定义 int a,b; ,通过语句“scanf("%d;%d",&a, &b);" ,能把整数3赋给变量a,5赋给变量b的输入数据是
    A、3 5
    B、3,5
    C、3;5
    D、35

4、执行下列程序片段时输出结果是( ) int x=13,y=5; printf(“%d”,x%=(y/=2));
    A、3
    B、2
    C、1
    D、0

5、执行下列程序片段时输出结果是( ) int x=5,y; y=2+(x+=x++,x+8,++x); printf(“%d”,y);
    A、13
    B、14
    C、15
    D、16

6、写出以下程序的输出结果( ) main ( ) { int x=12; printf(“%6d##,%-6d##\n”,x,x); }
    A、12##,12##
    B、12##, 12##
    C、12 ##,12 ##
    D、12##,12 ##

7、下列程序的输出结果是16.00,请填(1)空使程序完整 int main() { int a=9,b=2; float x=【1】, y=1.1 , z; z=a/2+b*x/y+1/2; printf("%5.2f\n",z); return 0; }

第四章 聪明的程序会选择——选择分支结构

第四章 单元测试

1、能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是
    A、a>=10or a<=0
    B、a>=0||a<=10
    C、a>=10&&a<=0
    D、a>=10‖a<=0

2、若有int i; 则执行语句i=3>2>1; 后,i的值是( )
    A、3
    B、1
    C、0
    D、不确定

3、以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是( )
    A、if ( (a>b)&&(b>c) ) k=1; else k=0;
    B、if ( (a>b)||(b>c) ) k=1; else k=0;
    C、if (a<=b) k=0; else if(b<=c) k=1;
    D、if (a>b) k=1; else if (b>c) k=1; else k=0;

4、if (表达式) 语句;其中表达式( )
    A、必须是逻辑表达式
    B、必须是关系表达式
    C、必须是逻辑表达式和关系表达式
    D、可以是任意合法的表达式

5、若变量已经正确定义,有下列程序段 int a=3, b=5, c=7; if (a>b) a=b; c=a; if (c!=a) c=b; printf("%d,%d,%d\n",a,b,c); 其输出结果是( )
    A、程序段有语法错误
    B、3,5,3
    C、3,5,5
    D、3,5,7

6、下列程序段运行结果是( ) int a=1,b=2,c=4; if (c==a+b) if (c==4) a=b=c=20; else if (c==3) a=b=c=30; else a=b=c=40; printf("%d,%d,%d\n",a,b,c);
    A、1,2,4
    B、20,20,20
    C、30,30,30
    D、40,40,40

7、若有定义语句 int a,b ; double x; 则下列选项中没有错误的是( )
    A、switch (x%2) { case 0: a++;break; case 1: b++;break; default: a++; b++; }
    B、switch ( (int)x/2.0) { case 0: a++;break; case 1: b++;break; default: a++; b++; }
    C、switch ((int)x%2) { case 0: a++;break; case 1: b++;break; default: a++; b++; }
    D、switch ((int)(x)%2) { case 0.0: a++;break; case 1.0: b++;break; default: a++; b++; }

8、定义变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是( )
    A、kk>='A'&&kk<='Z'
    B、!(kk>='A'||kk<='Z')
    C、(kk+32)>='a'&&(kk+32)<='z'
    D、kk>=65&&kk<=91

9、若 int i=10; 执行下列程序后,变量i的正确结果是( ) switch(i) { case 9: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; }
    A、10
    B、11
    C、12
    D、13

第五章 循环结构程序设计

5.1 while循环随堂测验

1、1、下列程序的输出结果是_______main() { int k=4; while(k--); printf("k=%d\n",k); }

2、2、下面程序的输出结果是_______main() { int k=10; while(k=0) k=k-1 printf("k=%d\n",k); }

5.2 do-while循环随堂测验

1、1、下面程序段的循环体被执行几次? int x=-1; do { x=x*x;} while(!x); A) 0次 B) 1次 C)2次 D)3次
    A、0次
    B、1次
    C、2次
    D、3次

2、2、下面程序的输出结果是_________。 main() { int a=1,b=10; do { b-=a; a++; } while(b--<0); printf("a=%d,b=%d\",a,b); }

3、3、下面程序的输出结果是_________。 main() { int x=3; do { printf("%d\n",x-=2); } while(!(--x)); }

5.3 for循环随堂测验

1、若i为整型变量,则以下程序段循环执行次数是________ for(i=2;i==0;) printf("%d\n",--i);
    A、0次
    B、1次
    C、2次
    D、3次

2、对for(表达式1;;表达式3)可理解为
    A、for(表达式1;0;表达式3)
    B、for(表达式1;1;表达式3)
    C、for(表达式1;表达式1;表达式3)
    D、for(表达式1;表达式3;表达式3)

第五章 单元测试

1、下面程序段 int k=2; while (k=0) {printf(“%d”,k);k--;} 则下面描述中正确的是( )
    A、while循环执行10次
    B、循环是无限循环
    C、循环体语句一次也不执行
    D、循环体语句执行一次

2、下面程序的输出结果是( )main ( ) { char c=’A’; int k=0; do { switch (c++) { case ‘A’ : k++ ; break ; case ‘B’ : k-- ; case ‘C’ : k+=2 ; break ; case ‘D’ : k%=2 ; continue ; case ‘E’ : k*=10 ; break ; default : k/=3 ; } k++; } while (c<’G’) ; printf (“k=%d”,k) ; }
    A、k=3
    B、k=4
    C、k=2
    D、k=0

3、下述程序段的运行结果是( ) int a=1,b=2, c=3, t; while (a<b<c) {t=a; a=b; b=t; c--;} printf(“%d,%d,%d”,a,b,c);
    A、1,2,0
    B、2,1,0
    C、1,2,1
    D、2,2,1

4、下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择( )填空 main ( ) { int m=0,n=0; char c; while ((【 】) ! =’\n’) { if (c>=’A’ && c<=’Z’) m++; if (c>=’a’ && c<=’z’) n++; } }
    A、c=getchar( )
    B、c==getchar( )
    C、getchar( )
    D、scanf(“%c”,&c)

5、下面程序的输出结果是( ) int main() { int k=0,m=0,i,j; for (i=0; i<2; i++) { for (j=0; j<3; j++) k++ ; k-=j ; } m = i+j ; printf("k=%d,m=%d",k,m) ; return 0; }
    A、k=0,m=3
    B、k=0,m=5
    C、k=1,m=3
    D、k=1,m=5

6、以下不是死循环的语句是( )
    A、for (y=9,x=1;x>++y;x=i++) i=x ;
    B、for ( ; ; x++=i ) ;
    C、while (1) { x++ ; }
    D、for (i=10 ; ; i--) sum+=i ;

7、以下是死循环的程序段是
    A、for (i=1; ; ) { if (i++%2==0) continue ; if (i++%3==0) break ; }
    B、i=32767; do { if (i<0) break ; } while (++i) ;
    C、for (i=1 ; ;) if (++I<10) continue ;
    D、i=1 ; while (i--);

8、下列程序的输出结果是( ) int main() { 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

9、在while循环中允许使用嵌套循环,但只能是嵌套while循环。

10、do-while循环的while后的分号可以省略。

11、下列程序在有运行时,如果输入1298,则输出结果是( ) int main() { int n1,n2; scanf("%d",&n2); while(n2!=0) { n1=n2%10; n2=n2/10; printf("%d",n1); } }

12、下列程序得输出结果是( ) int main() { int i; char b,c; b='a'; c='A'; for(i=0;i<6;i++) { if(i%2) putchar(i+b); else putchar(i+c); } }

第八章 一大批的数据来了——数组

第八章 单元测试

1、下列数组定义中错误的是()
    A、int a['a'];
    B、int x=5,a[x];
    C、int a[2];
    D、int a[1];

2、设有说明语句“int A[4][3]={{1,2},{3,4,5},{6,7,8},{9,10}};”,则A[0][2]和A[2][2]的初始化值分别为()
    A、0,7
    B、3,8
    C、3,7
    D、0,8

3、下面程序的输出结果是() #include<stdio.h> main() { int a[3][3]={1,2,3,4,5,6,7,8,9},i; for(i=0;i<3;i++) printf("%d ",a[2-i][i]); }
    A、1 5 9
    B、7 5 3
    C、3 5 7
    D、5 9 1

4、下列程序的运行结果是() #include<stdio.h> void fun(int a[],int n) { int i,t; for(i=0;i<n/2;i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; } } int main() { int k[10]={1,2,3,4,5,6,7,8,9,10},i; fun(k,5); for(i=2;i<8;i++) printf("%d",k[i]); printf("\n"); return 0; }
    A、345678
    B、876543
    C、1098765
    D、321678

5、根据下列定义,正确的函数调用语句为() void test1(int a[10],int n); int b[10];
    A、test1(b[10],3);
    B、test1(b,b[3]);
    C、test1(b[],b[3]);
    D、test1(b[3],b);

6、设有说明语句“char s[]="fte\0\123\\\n123”;" ,则sizeof(s)和strlen(s)的值分别是()
    A、8 3
    B、9 3
    C、9 8
    D、3 8

7、下列程序的输出结果是() #include<stdio.h> main() { char s1[40]="jiangsu" ,s2[20]="njtech" ,s3[20]="CISE"; strcpy(s1,strcat(s2,s3)); printf("%s",s1); }
    A、jiangsunjtechCISE
    B、njtechCISE
    C、njtech
    D、CISE

8、若有以下变量声明及函数调用,则函数原型声明正确的是() void main() { int c[3][4]; double s; …… s=fun(c); …… }
    A、fun(int [ ][4]);
    B、double fun(int [3][ ]);
    C、double fun(double [ ][4]);
    D、double fun(int [ ][4]);

9、下列程序的输出结果是 #include<stdio.h> void f( int p[ ], int n) { int i; for(i=0;i<n;i++) p[i]+=i; } main() { int array[6]={0, 1, 2, 3, 4, 5}; int i; f(array, 6); for(i=0; i<6; i++) printf("%d",array[i]); }

10、下列程序的输出结果是() #include<stdio.h> #define M 3 #define N 4 void fun(int a[M][N]) { int i,j,p; for(i=0;i<M;i++) { p=0; for(j=1;j<N;j++) if(a[i][p]>a[i][j]) p=j; printf("%d",a[i][p]); } } main() { int a[M][N]={{-1,5,7,4},{5,2,4,3},{8,2,3,0}}; fun(a); }

第六章 程序也爱搭积木——函数的使用

第六章 单元测试

1、C语言程序从 开始执行。
    A、程序中第一条可执行语句
    B、程序中第一个函数
    C、程序中的main函数
    D、包含文件中的第一个函数

2、_________是构成C语言程序的基本单位。
    A、函数
    B、过程
    C、子程序
    D、子例程

3、以下说法中正确的是_____
    A、C语言程序总是从第一个定义的函数开始执行
    B、在C语言程序中,要调用的函数必须在main( )函数中定义
    C、C语言程序总是从main( )函数开始执行
    D、C语言程序中的main( )函数必须放在程序的开始部分

4、C语言中函数返回值的类型是由 决定的.
    A、函数定义时指定的类型
    B、return语句中的表达式类型
    C、调用该函数时的实参的数据类型
    D、形参的数据类型

5、在函数调用时,以下说法正确的是________
    A、函数调用后必须带回返回值
    B、实际参数和形式参数可以同名
    C、函数间的数据传递不可以使用全局变量
    D、主调函数和被调函数总是在同一个文件里

6、在C语言中,表示静态存储类别的关键字是______
    A、auto
    B、register
    C、static
    D、extern

7、未指定存储类别的变量,其隐含的存储类别为______
    A、auto
    B、static
    C、extern
    D、register

8、当调用函数时,实参是一个数组名,则向函数传送的是
    A、数组的长度
    B、数组的首地址
    C、数组每一个元素的地址
    D、数组每个元素中的值

9、以下函数值的类型是_____ fun (float x) { float y; y= 3*x-4; return y; }
    A、int
    B、不确定
    C、void
    D、float

10、若函数首部定义为int func(double x[10],int n),则下列函数声明中错误的是
    A、int func(double,int);
    B、int func(double x[],int n);
    C、int func(double a[10],int b);
    D、int func(double *x,int n);

11、构成C程序的基本单位是函数,所以函数名都可以由用户命名

12、一个C源程序可由一个或多个函数组成

13、若函数没有返回值,则函数体内可以没有return语句

14、静态外部变量属于外部变量,所以可以被其他文件引用。

15、全局变量的作用域一定大于局部变量的作用域

16、#include <stdio.h> f(int b[],int n) {int i,r; r=1; for (i=0;i<=n;i++) r=r*b[i]; return (r);} main() {int x,a[]={1,2,3,4,5,6,7,8,9}; x=f(a,3); printf(“%d\n”,x); } 程序运行结果为________

17、#include <stdio.h> int m=4; int func(int x,int y) { int m=1; return(x*y-m); } main() {int a=2,b=3; printf("%d ",m); printf("%d",func(a,b)/m);}

18、函数调用语句:fun((a,b),(c,d,e));实参个数为__________。

19、#include<stdio.h> int f (int n) { if (n==0) return n; return f(n-5)+n; } int main( ) { printf("%d",f(15)); return 0; } 程序运行结果为______

20、以下程序运行时输出到屏幕的结果中第一行是_______,第二行是_______ # include <stdio.h> int fun(int x) { static int y=1,z=0; y*=x; z+=y; return z; } void main() { int x; for(x=1;x<3;x++) printf(“%d\n”,fun(x)); }