1、-目录目录1单元练习题一 C语言基础知识3一、判断题3二、单项选择题4三、读程序选择题7四、程序填空题8五、编程题10单元练习题二 C语言程序结构10一、判断题10二、单项选择题11三、读程序选择题18四、程序填空题30五、编程题35单元练习题三 数组36一、判断题36二、单项选择题37三、读程序选择题39四、程序填空题43五、编程题49单元练习题四 函数49一、判断题49二、单项选择题50三、读程序选择题52四、程序填空题60五、编程题63单元练习题五 预处理63一、判断题63二、单项选择题64三、读程序选择题64四、程序填空题65五、编程题65单元练习题六 指针66一、判断题66二、单项选
2、择题66三、读程序选择题67四、程序填空题74五、编程题77单元练习题七 结构体与共用体78一、判断题78二、单项选择题78三、读程序选择题79四、程序填空题83五、编程题83单元练习题八 文件84一、判断题84二、单项选择题84三、读程序选择题84四、程序填空题85五、编程题87-第一章 C语言基础知识(C语言概述、算法、数据类型 运算符 表达式、位运算)一、 判断题(正确的填A,错误的填B)R1在C语言中,逗号运算符的优先级最低。(A)2在语言可执行程序的开始执行点是程序中第一个函数。(B)3“5ch”是合法的变量名。(B)4C语言程序书写格式自由,一行内可以写几个语句,一个语句可以分写在
3、多行上。(A)5 当输入数据时,必须指明变量的地址,如scanf(%f,&f) (A)N6表达式i+与+i在任何场合功能完全相同。(B) 7在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。(A)R8.C语言程序中,语句以逗号结尾。( B )9.在 C 程序中,APH 和aph 代表不同的变量。( A )10. a-=7等价于a=a-7。( A )N11. printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按原字符长从左向右全部输出。(A )12.如果xy为真或ay)&(ab)就为真。( B )13.C语言程序的变量必须
4、先定义再使用。( A )14.若a和b是同类型变量,在执行了赋值语句a=b;后b中的值将放入a中,b中的值将丢失。( B )15.程序的执行总是从main函数开始,在程序的最后一个函数中结束。(B )16.变量的三个属性是指变量的名字、变量的值和变量在内存中的地址。(A)17. 运算符优先顺序:赋值运算符逻辑运算符关系运算符算术运算符(B)18.对应float类型的变量,也可以用等号“=”进行数值的判断。(B)19.表达式:1 & 3.14 和 1 & 3 的值一样大。(B)20. 为了正确计算表达式既要考虑运算符的优先级,也要考虑其结合性。(A)21、任何C程序都是从main函数开始和结束;
5、(A)22. 在C程序中,使用分号“;”表示语句的结束。(A )23. C程序中的必须要有至少一个main的函数,可以有多个。( B )24. 在C程序中,无论是整数还是实数,都能准确无误的表示。( B )25. 在C程序中,赋值运算符的优先级最低。(B )26. 当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值。( B )27. 在C程序中,变量可以一边定义一边使用。( B )28. C程序中的注释部分可有可无,可以省略。( A)29.字符型变量可以存放多个字符。( B )30.在对一个C程序进行编译的过程中,可发现注释中的拼写错误。( B )5.在C程序中,无论是整
6、数还是实数,都能被准确无误地表示。(B )1.一个C程序的执行是从本程序的main函数开始,到main函数结束。(A)3.()4.运算符优先顺序:赋值运算符逻辑运算符关系运算符=y)&(y=z) B) (x=y)AND(y=z) C) (x=y=z) D) (x=y)&(y=z)13.不合法的八进制数是_ A) 0 B) 028 C) 077 D)0114、以下不能定义为用户标识符是 A Main B _0 C _int D sizeof15.若x=5,y=4 则y*=x+5; y的值为( )。A. 40 B. 20 C B. 15 D. 3016、组成C语言程序的基本单位是()。A) 过程
7、B) 子程序C) 函数 D) 主程序和子程序17下列哪个标识符是C语言合法的标识符()。A) a*bB) -xyzC) ba2D) 5iN18若有定义:inta=7; floatx=2.5, y=4.7; 则表达式x+a%3*(int)(x+y)/4的值是()。A) 2.75 B) 3.5C) 2.5 D) 019.设int m=1,n=2;则+m= =n的结果是( )A、0 B、1 C、2 D、3 N20. 若变量已定义并赋值,下列符合C语法的表达式是:()A、a:=b+1B、a=b=c+2C、int 18.5%3D、a=a+7=c+bR(3)在C程序中,设一表达式中包含有int,long,
8、 unsigned和char类型的变量和数据,则表达式最后的运算结果类型是( )A.int B.char C.unsigned D.longR21C语言中基本的数据类型包括_。 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型 N22. 若定义x和y为double类型,则表达式:x=2,y=x+5/2的值是_ A) 4 B) 4.5 C) 4.0 D) 3.023. 在以下运算符中,优先级最高的运算符是_ A) ? : B) + C) & D) +=24.C语言中基本的数据类型不包括_。 A) 整型 B)字符串型 C)字符型 D)
9、实型25. 若定义int x=7,y=5,z;则表达式:z=x+5/2*y的值是_ A) 7 B) 7.5 C) 17 D) 19.56.以下说法中正确的是( )A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main()函数中定义 C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分(1)设int a=2,b;则执行b=a&1;语句后,b的结果是( )A.0 B.1 C.2 D.3N(2)逗号表达式(a=3*5,a*4),a+15的值是( )A.15 B.60 C.30 D.757. 若已经定义了一个字符型变
10、量为a,下面哪个表达式的含义跟其余表达式不同: A) a!=0 B) a!=0 C) a D) !a8. 在以下运算符中,优先级最高的运算符是_ A) , B) C) & D) +=9. 在C语言中,逻辑值“真”用_表示。A) true B) 大于0的数C) 非0的整数D) 非0的数10. 表达式_是满足:当c的值为1、3、5三个数中任意一个时值为“真”,否则值为“假”的表达式A) (c=1)|(c=3)|(c=5) B) (c!=1)&(c!=3)&(c!=5)C) (c=1)&(c=3)&(c=5) D) (c=1)|(c=3)|(c=5) 1.C语言中,int类型数据占2个字节,则lon
11、g类型数据占( )A、1个字节 B、2 个字节 C、3个字节 D、4个字节1.下列字符串是合法的标识符的是( )。A、_HJB、9_studentC、 longD、LINE 12.下列说法中正确的是( )。A、 C程序书写时,不区分大小写字母B、 C程序书写时,一行只能写一个语句C、 C 程序书写时,一个语句可分成几行书写D、 C程序书写时每行必须有行号3.在C语言中,要求参加运算的数必须是整数的运算符是( )。A、/ B、! C、% D、= =4.C语言中,逻辑“真“等价于( )。A、大于零的数 B、大于零的整数C、非零的数 D、非零的整数6.假设在程序中a,b,c均被定义为整型,并且已赋大
12、于1的值,则下列能正确表示代数式1/abc的表达式是( )。A、1/a*b*c B、1/(a*b*c)C、1/a/b/(float) c D、1.0/a/b/c1.下列合法的字符常量是( )。A、084 B、x43 C、ab D、0 2.在C语言提供的合法的关键字是()A、switch B、cher C、Case D、sturct 3.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是 A、 2B、 1 C、 2.0 D、2.5三、 程序填空题 1以下程序不用第三个变量实现两个数对调的操作。 #includ “stdio.h” main() int a,b; scanf(
13、%d,%d,&a,&b); a=;(三个字符) b=;(三个字符) a= a-b; printf(%d,%d,a,b);2、选择程序的运行结果 。 main ( ) int x=1, y=2, z, a, b, c, d; z = +x|+y; printf(x=%dn, x); printf(y=%dn, y); /*输出结果(三个字符) */ a=-1; b=-2; c=+a&b+; printf(b=%dn, b); /*输出结果 (三个字符)*/ 3以下程序的结果为_main() unsigned int a=3, b=10; printf(%dn,a1); /*输出结果 */ pri
14、ntf(%dn,a1); /*输出结果 */4 若x=3,y=z=4,则下列表达式的值是。(1) (z=y=x)? 1:0 /*值为 */(2) z=y&y=x /*值为 */5已知float x=4.3,int y;执行语句y=(int)x后,x为型(填写小写英文字母),且y=(填写阿拉伯数字);6表达式c&d的值为(填写阿拉伯数字),c&d|!(3+4)的值为(填写阿拉伯数字)。7若x为int类型,则与逻辑表达式“x”等价的表达式是, 与逻辑表达式“!x”等价的表达式是。8 表示“整数x的值大于5”时逻辑值为“真”的表达式是5,逻辑值为“假”的表达式是x9已知字母A的ASCII码为十进制数
15、65,且设ch为字符型变量,则表达式ch=A-4+9的值为(一个字符常量);若定义:char c=72;则变量c中包含的字符个数为(数字)。10、C语言所提供的基本数据类型的整型类型包括:、整型、。(按每种类型所占字节数,从小到大排列)第二章 C语言程序结构(顺序程序设计、选择结构程序设计、循环控制)一、 判断题(正确的填A,错误的填B)1 do-while语句中的条件为非0时,就结束该循环。(B)2.在switch-case语句中,不是每个case后都要使用break语句。( A )3.Break语句只能用于循环结构中。(B )48. 未给变量赋初值,只是运行结果不正确,不会有其他不良影响。
16、(B)5、switch语句中,可以不使用break语句;(A)6、for语句中,三个表达式都可以省略;(A)7(7)在for循环中使用break语句的目的是使流程跳出循环体,终止当前循环(A)8. continue语句只能用于循环语句中。( A )9 while语句中的条件为0时,就结束该循环。(A)10.在循环体内使用break语句或continue语句的作用相同。(B)在C语言中,逻辑值“真”用 表示。11) 1 12) 大于0的数13) 非0的整数14) 非0的数在循环语句的循环体中,continue语句的作用是()。15) 立即终止整个循环 16) 继续执行continue语句之后的循
17、环体17) 结束本次循环 18) 结束本次循环并跳出循环语句while(!e);中,条件!e等价于( )19.e=0 20 .e!=0 21.e!=1 22.e=1设int c=5和int a; a=2+(c+=c+,c+8,+c), 则a=_23) 15 24) 14 25) 13 26) 16若要表示if( a不等于0 )这一关系式,则能正确表示这一关系的表达式为if ( ) 27) a0 28) !a 29) a=0 30) a二、 单项选择题N1、以下不是死循环的语句是_。for( ; ; x+i );while (1) x+;for( i=10; ; i- -) sum+= i ;f
18、or( ; (c=getchar() != n ; ) printf(“%c” , c) ;2设有程序段int k = 10 ; while ( k = 0 ) k = k - 1 ; 以下描述正确的是 ( )。A. 循环体语句一次也不执行。B. 循环是无限循环。C. while 循环语句执行十次。D. 循环体语句执行一次。3对下述程序,正确的判断是( )。main( ) int a,b;scanf (%d,%d,&a,&b);if(ab)a=b; b=a;else a+; b+;printf(%d,%d,a,b); A. 有语法错误不能通过编译 B. 若输入4,5则输出5,6C. 若输入5,
19、4则输出4,5 D. 若输入5,4则输出5,5R4 以下程序main() int i=010,j=10,k=0x10; printf(%d,%d,%dn,i,j,k);有语法错误不能通过编译输出结果是( )A.8,10,16 B.8,10,10 C.10,10,10 D.10,10,16R5. 若变量已正确说明为int类型,要给a,b,c输入数据,以下语句正确的是_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); R6.已知在ASCII字符集中,数
20、字0的序号为48,下面程序的输出结果为_。 main() char x,y; x=0;y=9; pirntf(“%d,%dn”,x,y); A)因输出格式不合法,输出错误信息 B)48,57 C)0,9 D)48,587. 语句 for(k=0;k=y=z,应使用C语言表达式_。A)(y=z) B)(x=y)AND(y=z)C)(x=y=z) D)(x=y)&(y=z)6. 若变量已正确定义,语句“if(ab) k=0; else k=1;”和_等价。A、k=(ab)?1:0; B、k=ab;C、k=a=b; D、a=b ? 0 : 1;9.以下程序的输出结果是_void main() int
21、 a = 2,b = 5; printf(“a=%d,b=%d”,a,b); A) a=%2,b=%5 B) a=2,b=5C) a=%d,b=%d D) a=%d,b=%dN10.以下程序的输出结果是_ void main() int x=10,y=10; printf(“%d %dn”,x-,-y); A) 10 10 B) 9 9 C) 9 10 D) 10 911.若要表示if( a不等于0 )这一关系式,则能正确表示这一关系的表达式为 if (_) A) a0 B) !a C) a=0 D) aR12对于循环语句while(1);下面( )是正确的 A、死循环 B、循环一次 C、不进
22、入循环体 D、编译有错13.下面程序的输出是(假设 int 数据是 2 个字节) void main() int a = 32768; printf(“a=%dn”,a); A) a=32768 B) a=32767 C) a=-32768 D) a=-114.表达式_是满足:当c的值为1、3、5三个数中任意一个时值为“真”,否则值为“假”的表达式A) (c=1)|(c=3)|(c=5) B) (c!=1)&(c!=3)&(c!=5) C) (c=1)&(c=3)&(c=5) D) (c=1)|(c=3)|(c=5) N15. 以下程序段的输出结果是_ int x=3; do printf(%
23、3d,x-=2; while (!(-x);A) 1 B) 3 0C) 1 -2 D) 死循环16、数字字符0的ASCII值为48,若有以下程序 main() char a=1,b=2; printf(%c,b+); printf(%dn,b-a); 程序运行后的输出结果是 A 3,2 B 50,2 C 2,2 D 2,5017、有以下程序 main() int a,b,d=25; a = d/10 & (-1); b = a & (-1); printf(%d,%dn,a,b); 程序运行后的输出结果是 A 6,1 B 2,1 C 6,0 D 2,018若定义floata;现要从键盘输入a的
24、数据,其整数位为3位,小数位为2位,则选用()。A)scanf(%f,&a); B) scanf(%5.2f,a);C) scanf(%6.2f,&a); D) scanf(%f,a);19若定义inti; 则以下循环语句的循环执行次数是()。for(i=2; i=0;)printf(%d, i-);A) 无限次 B) 0次C) 1次 D) 2次20下面程序段_x=3;do y=x-; if(!y)printf(x);continue; printf(#);while(1=x=2);A) 将输出# B) 将输出#*C) 是死循环 D) 含有不合法的控制表达式21.以下程序中,while循环的循
25、环次数是( )。#include “stdio.h”main( )int i=0;while(i10)if(i5) printf(%d,x); else printf(%dn,x-1);A.7和5 B.6和3 C.7和4 D.6和4(6)语句while(!e);中,条件!e等价于( )A.e=0 B.e!=0 C.e!=1 D.e=0R25下面程序的输出是_ main() int k=11; printf(k=%d,k=%o,k=%xn,k,k,k); A) k=11,k=12,k=13 B) k=11,k=13,k=13C) k=11,k=013,k=oXb D) k=11,k=13,k=b
26、26(7)下面程序的运行结果是( ) main( ) int i=1,sum=0; lop:sum=sum+i ; i=i+2; if(i6)goto lop; printf (sum=%dn,sum);A.sum=4 B.sum=9 C.sum=16 D.sum=2527. 以下程序的输出结果是_void main() int a = 2,b = 5; printf(“a=%d,b=%d”,a,b);A) a=%2,b=%5 B) a=2,b=5C) a=%d,b=%d D) a=%d,b=%d 28执行下面的程序后,a的值为_ main() int a,b; for (a=1,b=1;a=
27、20) break; if (b%3=1) b+=3; continue; b-=5; A) 7 B) 8C) 9 D) 10 29 30.下面的程序会( ) main() int x=3,y=0,z=0; if(x=y+z) printf(“*”); else printf(“#”); A、有语法错误不能通过编译 B、输出C、可以通过编译,但不能通过连接,因而不能运行 D、输出 4.以下程序的输出结果是( ) main() int x=10,y=10,i; for(i=0;x8;y=+i) printf(“%d %d”,x-,y); A、10 1 9 2 B、9 8 7 6 C、10 9 9
28、 0 D、10 10 9 11.下面程序的输出是_ main() int k=11; printf(k=%d,k=%o,k=%xn,k,k,k); A) k=11,k=12,k=13 B) k=11,k=13,k=13C) k=11,k=013,k=oXb D) k=11,k=13,k=b2.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是_ main() int x; scanf(%d,&x); if (x+5) printf(%d,x) else printf(%dn,x-); A) 7和5 B) 6和3C) 7和4 D) 6和43.读程序#include”stdio.h” m
29、ain() int a; float b,c; scanf(%2d%3f%4f,&a,&b,&c); printf(na=%d,b=%f,c=%fn,a,b,c); 若运行时从键盘上输入9876543210(表示回车),则上面程序的输出结果是_A) a=98,b=765,c=4321B) a=1,b=432,c=8765C) a=98,b=765.000000,c=4321.000000D) a=98,b=765.0,c=4321.05.下面程序的输出是_ main() int x=3,y=6,a=0; while (x+!=(y-=1) a+=1; if (yx) break; printf(x=%d,y=%d,a=%dn,x,y,a); A) x=4,y=4,a=1 B) x=5,y=5,a=1C) x=5,y=4,a=3 D) x=5,y=