第一章 初识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)); }