第一章 C语言的结构
一.单项选择题
1.设d为字符变量,下列表达式不正确的是__________。 (A) d=97 (B) d='a' (C) d=\"a\" (D) d='g' 2.C语言的程序一行写不下时,可以________。 A 用逗号换行 B 用分号换号 C 在任意一空格处换行 D 用回车符换行
3.在ASCII代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码__________。 (A) 大32 (B) 大64 (C) 小32 (D) 小1 4.下列四个叙述中,错误的是________。 A 一个C源程序必须有且只能有一个主函数 B 在C源程序中注释说明必须位于语句之后 C 一个C源程序可以含零个或多个子函数 D C源程序的基本结构是函数
5.一个C程序可以包含任意多个不同名的函数,但有且仅有一个__________。 (A) 过程 (B) 主函数 (C) 函数 (D) include 6.C 语言中,当复合语句多于一条时,要有一对________括起来。 A 方括号 B 圆括号 C 花括号 D 尖括号 7.__________是C程序的基本构成单位。
(A) 函数 (B) 函数和过程 (C) 超文本过程 (D) 子程序 8.C语言程序的基本单位是__________。 (A) 程序行 (B) 语句 (C) 函数 (D) 字符 9.C语言规定,必须用__________作为主函数名。 (A) function (B) include (C) main (D) stdio
10.C语言规定,在一个C程序中,main()函数位置________。 A 必须开始 B 必须在最后
C 可以任意 D 必须在系统调用库函数之后 11.下列说法正确的是__________。 (A) 在执行C程序时不是从main函数开始的 (B) C程序书写格式严格限制,一行内必须写一个语句 (C) C程序书写格式自由,一个语句可以分写在多行上
(D) C程序书写格式严格限制,一行内必须写一个语句,并要有行号 12.以下说法中正确的是__________。
(A) C语言程序总是从第一个定义的函数开始执行
(B) 在C语言程序中,要调用的函数必须在main()函数中定义 (C) C语言程序总是从main()函数开始执行
(D) C语言程序中的main()函数必须放在程序的开始部分 13.以下叙述不正确的是________。 A 分号是C语句的必要组成部分 B C程序的注释可以写在语句的后面 C 函数是C程序的基本单位 D 主函数的名字不一定用main表示 14.若有以下定义: float x;int a,b;
则正确的switch语句是__________。 (A) switch (x)
{ case 1.0:printf(\"*\n\"); case 2.0:printf(\"**\n\"); } (B) switch (x)
{ case 1,2:printf(\"*n\"); case 3:printf(\" **\n\"); } (C) switch (a+b)
{ case 1:printf(\"*\n\"); case \"1+2\":printf(\"**\n\"); } (D) switch (a+b)
{ case 1:printf(\"*\n\"); case 2:printf(\"**\n\"); }
15.一个c语言由若干个c函数组成,各个函数在文件中的书写位置为________。 A 任意
B 第一个函数必须是主函数,其他函数任意 C 必须完全按调用的顺序排序
D 其他函数必须在前,主函数必须在最后 16.程序
#define NUM 30+4 main()
{ printf(\"NUM*20=%d\ 的执行结果为__________。
(A) NUM*20=110 (B) NUM*20=680 (C) NUM*20=604 (D) 以上都不对 17.下面属于C语句的是________。
A printf(\"%d\\n\ B #include A 程序行 B 语句 C 函数 D 字符 20.以下叙述正确的是________。 A C语言程序总是从第一个定义的函数开始执行 B C语言程序中的main()函数开始执行 C C 语言程序中的main ()函数必须放在程序的开始执行 D 一个C函数中只允许一对花括号 21.机器语言是用__________编写的。 (A) 二进制码 (B) ASCII码 (C) 十六进制码 (D) 国标码 22.计算机只能识别机器语言,而人熟悉高级语言,故人机通信必须借助一 种中间者,此中间者就是__________。 (A) 编译程序 (B) 编辑程序 (C) 连接程序 (D) 装入程序 23.下面正确的赋值语句是________ A i++; B a=1,b=2; C a=b=5 D y=int(x) 24.以下叙述中正确的是 A)C程序中注释部分可以出现在程序中任意合适的地方 B)花括号\"{\"和\只能作为函数体的定界符 C)构成C程序的基本单位是函数,所有函数名都可以由用户命名 D)分号是C语句之间的分隔符,不是语句的一部分? 25.在C语言中,回车换行符是__________。 (A) \n (B) \t (C) \v (D) \b 26.__________不是C语言提供的合法关键字。 (A) switch (B) print (C) case (D) default 27.下面四个叙述中,错误的是________。 A C语言中的关键字必须小写 B C语言中的标识符必须全部由字母组成 C C语言不提供输入输出语句 D C语言中的注释行可以出现在程序的任何位置 28.下面四个叙述中,正确的是________。 A C程序中的所有字母都必须小写 B C程序中的关键字必须小写,其他标识符不区分大小 C C程序中的所有字母都不区分大小 D C语言中的所有关键字必须小写 29.在C语言中,每个语句和数据定义是用__________结束。 (A) 句号 (B) 逗号 (C) 分号 (D) 括号 30.以下选项中可作为C语言合法整数的是 A)10110B B)0386 C)0Xffa D)x2a2 31.在printf的格式字符中,g格式字符的作用是________. A 以字符形式输出,且只输出了一个字符 B 输出一个字符串 C 用来输出实数,并根据数值的大小,自动选用f格式或e格式 D 以无符号十进制形式输出整数 32.在c语言中,如果下面的变量都是int类型,则输出结果是________。 Sum=pad=;pAd=sum++,pAd++,++pAd; Printf(\"%d\\\); A 7 B 6 C 5 D 4 33.结构化程序设计的三种基本逻辑结构为顺序、选择和__________。 (A) 随机 (B) 循环 (C) 相关 (D) 直接 34.下列字符串是标识符的是__________。 (A) _WL (B) 3_3333 (C) int (D) LINE 3 35.C语言提供的合法关键字是__________。 (A) break (B) print (C) funiton (D) end 36.C语言提供的合法关键字是__________。 (A) continue (B) procedure (C) begin (D) append 37.在下面字符序列中,不可用作c语言标识符的是________。 A water B price C a>b D a12 38.下列字符串是标识符的是__________。 (A) INT (B) 5_student (C) long (D) ! DF 39.下面不正确的叙述是________。 A 在C程序中所应用变量必须先定义后使用 B 在程序中,XYZ和xyz是两个不同的变量 C 若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变 D当输入数值型数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值 40.下面各标识符中,合法的用户自定义标识符是________。 A A#B B 2B C void D printf 41.以下选项中,合法的C语言关键字是________。 A VAR B cher C 2L D default 42.以下选项中非法的表达式是? A)0<=x<100? B)i=j==0 C)(char)(65+3)? D)x+1=x+1 43.下面正确的叙述是________。 A 在C程序中,语句之间必须用分号\";\"分隔 B若a是实型变量,C程序中允许以下赋值a=10,因此实型变量中允许存放整型 C在C程序中,无论是整数还是实数,都能准确无误地表示 D在C程序中,%是只能用于整数运算的运算符 44. 以下不能定义为用户标识符的是 A)scanf?B)Void?C)_3com_?D)int 45.下列字符串是标识符的是__________。 (A) _HJ (B) 9_student (C) long (D) LINE 1 二.填空题 1.以下函数用来求出两整数之和,并通过形参将结果传回,请填空。 void func(int x,int y, ________z) { *z=x+y; } 2.主函数名后面的一对圆括号中间可以为空,但一对圆括号不能________。 3.函数体一般包括__________、__________。 4.函数体的范围是 __________。 5.在C语言中,输入操作是由库函数______完成的,输出操作是由库函数______完成。 6.在一个C源程序中,注释部分两侧的分界符分别为和______。 7.一个C源程序中至少应包括一个______。 8.C源程序的基本单位是[_________]。. 第二章 数据类型及其运算 一.单项选择题 1.在C语言中,逻辑真以________表示。 A true B 大于0的数 C 非零整数 D 非零数 2.C语言中,文件由________。 A记录组成 B 由数据行组成 C 由数据块组成 D 由字符序列组成 3.已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是_______ # include { char c1='A', c2='Y'; printf(\"%d,%d\\n\ A) 因输出格式不合法,输出错误信息 B)65,90 C)A,Y D)65,89 4.如果int i=3;int j=4,则k=i+++j执行之后k,i和j的值分别为_________。 (A) 7,3,4 (B) 8,3,5 (C) 7,4,4 (D) 8,4,5 5.sizeof(double)是___________ A)一种函数调用 B)一个双精度型表达式 C)一个整型表达式 D)一个不合法的表达式 6.在C语言中,下列类型属于基本类型的是__________。 (A) 整型、实型、字符型 (B) 空类型、枚举型 (C) 结构体类型、实型 (D) 数组类型、实型 7.以下选项中,非法的字符常量是________。 A ' \\ t ' B ' \\17 ' C \" \\ n \" D ' \\ xaa' 8.下列符号中,可以作为变量名的是__________。 (A) +c (B) *X (C) _DAY (D) next day 9.下面C语言中非法的转义字符为________。 A '\' B '\\108' C '\\n' D'\\xff' 10.以下程序的输出结果是__________。 main() { int i=010,j=10,k=0x10; printf(\"%d,%d,%d\n\ (A) 8,10,16 (B) 8,10,10 (C) 10,10,10 (D) 10,10,16 11.将十进制21转化为二进制为__________。 (A) 11111 (B) 10101 (C) 10011 (D) 10001 12.以下程序的输出结果是__________。 main() { int i=011,j=11,k=0x11; printf(\"%d,%d,%d\n\ (A) 9,11,17 (B) 9,11,11 (C) 11,11,11 (D) 11,11,16 13.在C语言中,合法的字符常量是________。 A '\\084' B '\\x43' C 'ab' D \"\\0\" 14.以下叙述正确的是________ A 可以把define和if定义为用户标识符 B 可以把define定义为用户标识符,但不能把if定义为用户标识符 C 可以把if定义为用户标识符,但不能把define定义为用户标识符 D define和if都不能定义为用户标识符 15.在C语言中,以下合法的字符常量是__________。 (A) '\084' (B) '\x43' (C) '0' (D) \"\0\" 16.在C语言中,合法的长整型常数是________。 A 0L B 4962710 C 0.054838743 D 2.1869e10 17.下列符号中,可以作为变量名的是__________。 (A) +a (B) 12345e (C) a3B (D) 5e+0 18.在C语言中,下列类型属于构造类型的是__________。 (A) 整型 (B) 字符型 (C) 实型 (D) 数组类型 19.下列类型不属于基本类型的是__________。 (A) 结构体类型和整型 (B) 结构体类型、数组、指针 (C) 实型 (D) 空类型和枚举型 20.下列常数中,不合法的C常量是__________。 (A) -0x3bl (B) 123e+2.3 (C) '}' (D) 6e+7 21.下列常数中,不合法的C常量是__________。 (A) -0x2al (B) lg3 (C) '[' (D) \"CHINA\" 22.C语言提供的合法的数据类型关键字是________。 A doubl B short C integer D Char 23.C语言中最简单的数据类型包括__________。 (A) 整型,实型,逻辑型 (B) 整型,实型,字符型 (C) 整型,字符型,逻辑型 (D) 整型,实型,逻辑型,字符型 24.当执行下面两个语句后,输出的结果为________。 char c1=97; c2=98; printf(\"%d %c\ A 97 98 B 97 b C a 98 D a b 25.设d为字符变量,下列表达式正确的是__________。 (A) d=678 (B) d='a' (C) d=\"d\" (D) d='gjkl' 26.内存中每一个基本单位,都被赋予一个唯一的序号,称为__________。 (A) 容量 (B) 地址 (C) 编号 (D) 字节 27.两个字节表示__________。 (A) 32位 (B) 16位 (C) 8位 (D) 4位 28.以下可用作C语言用户标识符的一组标识符是__________。 (A) void (B) a3_b3 (C) For (D) 2a define _123 -abc DO WORD IF Case sizeof 29.下列数中,__________最小。 (A) 二进制数100 (B) 十进制数8 (C) 十六进制数12 (D) 八进制数10 30.C语言提供的合法关键字是________。 A switch B chan C Case D default 31.下列字符串不是标识符的是__________。 (A) sum (B) average (C) day_night (D) M.D.JOHN 32.下列说法正确的是__________。 (A) main函数必须放在C程序的开头 (B) main函数必须放在C程序的最后 (C) main函数可以放在C程序的中间部分,即在一些函数之前在另一些函数之 后,但在执行C程序时是从程序开头执行的 (D) main函数可以放在C程序的中间部分,即在一些函数之前在另一些函数之 后,但在执行C程序时是从main函数开始的 33.表达式(int)2.1416的值为__________。 (A) 2 (B) 2.1 (C) 0 (D) 3 34.C语言中能用来表示整常数的进制是__________。 (A) 十进制、八进制 、十六进制 (B) 十二进制、十进制 (C) 六进制、八进制 (D) 二进制、十进制 35.下列常数中,合法的C常量是__________。 (A) \"x-y\" (B) '105' (C) 'Be' (D) 7ff 36.下列常数中,合法的C常量是__________。 (A) -0. (B) '105' (C) 'AB' (D) 3+5 37.下列常数中,合法的C常量是__________。 (A) '\n' (B) e-310 (C) 'DEF' (D) '1234' 38.以下程序的输出结果是_______。 #include int i=011, j=11; printf(\"%d,%d\n\ (A) 10,11 (B) 12,10 (C) 11,11 (D) 10,9 39.下面各运算符中,优先级别最低的是______ A ?: B - - C && D - = 40.在C语言中,要求运算数必须是整型的运算符是__________。 (A) % (B) / (C) < (D) ! 41.在以下一组运算符中,优先级最高的运算符是__________。 (A) <= (B) = (C) % (D) && 42.下列运算符中优先级最高的是__________。 (A) >> (B) + (C) && (D) != 43.如果int i=3,则printf(\"%d\的结果为____________,i的值为 __________。 (A) -3,4 (B) -4,4 (C) -4,3 (D) -3,3 44.设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是 _________。 A)3 B)0 C)9 D)-12 45.如果int i=3,则k=(++i)+(++i)+(i++)执行过后k的值为_________,i 的值为__________。 (A) 15,6 (B) 12,5 (C) 18,6 (D) 15,5 46.C语言中,运算对象必须是整型数的运算符是__________。 (A) % (B) / (C) %和/ (D) ** 47.当运行以下程序时输入OPEN T H E DOOR (此处 { char s[81], *p=s; gets(s); while(*p) { *p=fun(p);putchar(*p);p++; } putchar('\n'); } (A) oPEN tHE dOOR (B) open the door (C) OPEN T H E DOOR (D) Open The Door 48.写出下面程序的输出结果__________。 main() { int x=2,y=0,z; x+=3+2;printf(\"%d\ x*=y=z=4;printf(\"%d\ } (A) 7 28 (B) 无法计算 (C) 7 4 (D) 8 4 49.写出下面程序的输出结果__________。 main() { int x,y,z; x=y=1; z=x++ -1; printf(\"%d,%d\t\ z+=-x++ +(++y||++z); printf(\"%d,%d\ (A) 2,0 3,-1 (B) 2,1 3,0 (C) 2,0 2,1 (D) 2,1 0,1 50.写出下面程序的输出结果__________。 main() { int x; x=-3+4*5-6;printf(\"%d\ x=3+4%5-6;printf(\"%d\ x=-3*4%-6/5;printf(\"%d\ x=(7+6)%5/2;printf(\"%d\ (A) 11 1 0 1 B) 11 -3 2 1 (C) 12 -3 2 1 (D) 11 1 2 1 51.下面程序的输出结果是__________。 main() { int x=0x23; printf(\"%d\n\ } (A) 36 (B) 35 (C) 23 (D) 24 52.以下关于运算符优先级的描述中,正确的是__________。 (A) !(逻辑非)>算术运算>关系运算>&&(逻辑与)>||(逻辑或)>赋值运算 (B) &&(逻辑与)>算术运算>关系运算>赋值运算 (C) 关系运算>算术运算>&&(逻辑与)>||(逻辑或)>赋值运算 (D) 赋值运算>算术运算>关系运算>&&(逻辑与)>||(逻辑或) 53.若已定义x和y为double类型,则表达试: x=1,y=x+3/2的值是________。 A 1 B 2 C 2.0 D 2.5 54.以下程序的运行结果是__________。 main() { int c,x,y; x=0; y=0; c=0; c=x++&&y++; printf(\"\n%d %d %d\n\(A) 1 0 0 (B) 2 1 1 (C) 0 1 1 (D) 0 0 1 55.为表示关系x>=y>=z,应使用C语言表达式__________。 (A) (y<=x)&&(y>=z) (B) (x>=y)AND(y>=z) (C) (x>=y>=z) (D) (x>=y)&(y>=z) 56.表达式(double)(20/3)的值为__________。 (A) 6 (B) 6.0 (C) 2 (D) 3 57.程序段:int i=65536:printf(\"%d\\n\); 则输出结果是________。 A 65536 B 0 C有语法错误,无输出结果 D -1 58.在下面关于多种类型数据的混合运算的叙述中,正确的一条是___。 A 一个int整型与一个double型数据运算,先将double型转换成int型 B 一个int型与一个long型数据运算,先将int型转换成long型 C float型数据在运算时一律先转换成单精度型 D 一个int型与一个short型数据运算,先将int型转换成short型 59.10+'a'+1.5-567.345/'b'的结果是__________型数据。 (A) long (B) double (C) int (D) unsigned float 60.对于下面的程序,说法正确的是__________。 main( ) { int x=3, y=1, z=1; if(x=y+z) printf(\"x=y+z\"); else printf(\"x!=y+z\"); } (A) 有语法错误不能通过编译 (B) 输出x=y+z (C) 可以通过编译,但是不能通过连接,因而不能运行 (D) 输出x!=y+z 61.语句int i=3;k=(i++)+(i++)+(i++);执行过后k的值为__________,i的值为__________。 (A) 9,6 (B) 12,5 (C) 18,6 (D) 15,5 62.假设所有变量均为整型,表达式a=2,b=5,a>b? a++: b++,a+b的值是_____。 A 7 B 8 C 9 D 2 63.分析以下程序 #include { int a,b,c=246; a=c/100%9;b=(-1)&&(-1); printf(\"%d,%d\n\ } 其输出结果是__________。 (A) 2,1 (B) 3,2 (C) 4,3 (D) 2,-1 64.若x=3,y=z=4,则下列表达式的值分别为__________。 (1) (z>=y>=x)? 1:0 (2) z>=y&&y>=x (A) 0 1 (B) 1 1 (C) 0 0 (D) 1 0 65.设有如下定义: int x=10,y=3,z;则语句printf(\"%d/n\的输出结果是__________。 (A) 3 (B) 0 (C) 4 (D) 1 66.设有语句char a='\\72';则变量a __________ A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法 67.以下程序的运行结果是__________。 main() { int a=5,b=6,c=7,d=8,m=2,n=2; printf(\"%d\n\ } (A) 0 (B) 1 (C) 2 (D) 3 68.下面程序的输出结果是__________。 main() { int a,b,c; a=100; b=200; printf(\"%d\ } (A) 200 (B) 100 (C) 100 200 (D) 输出格式符不够,输出不确定的值 69.在C语言中,如果下面的变量都是int类型,则输出的结果是____。 sum=wa=10; wa=sum++,wa++,++wa; printf(\"%d\n\ (A) 10 (B) 12 (C) 11 (D) 13 70.若已定义int a=25,b=14,c=19;以下三项运算符(?:)所构成的语句的执 行结果是__________。 a++<=25&&b--<=2&&c++? printf(\"***a=%d,b=%d,c=%d\n\ printf(\"###a=%d,b=%d,c=%d\n\ (A) (***a=25,b=14,c=19) (B) (***a=26,b=13,c=19) (C) (###a=25,b=14,c=19) (D) (###a=26,b=13,c=19) 71.表达式:10!=9的值是__________。 (A) true(B) 非零值 (C) 0(D) 1 72.表达式a73.表达试:10!=9的值是_________。 A true B非零值 C 0 D 1 74.逻辑运算符运算对象的数据类型__________。 (A) 只能是0或1 (B) 只能是.T.或.F. (C) 只能是整型或字符型 (D) 任何类型的数据 75.判断字符型变量ch为小写字母的表达式是__________。 (A) 'a'<=ch<='z' (B) (ch>=a)&&(ch<=z) (C) (ch>='a') || (ch<='z') (D) (ch>='a')&&(ch<='z') 76.若t为double类型,表达试t=1,t+5,t++的值是________。 A 1 B 6.0 C 2.0 D 1.0 77.下面程序的输出是__________。 main() { int x=10,y=3; printf(\"%d\n\ } (A) 0 (B) 1 (C) 3 (D) 不确定的值 78.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为_______ A a<>0 B !a C a=0 D a 79.若有以下函数关系 x<0→y=2x x>0→y=x x=0→y=x+1 下面程序段能正确表示以上关系的是__________。 (A) y=2x; if(x!=0) if(x>0) y=x; else y=x+1; (B) y=2x; if(x<=0) if(x==0) y=x+1; else y=x; (C) if(x>=0) if(x>0) y=x; else y=x+1; else y=2x; (D) y=x+1; if(x<=0) if(x<0) y=2x; else y=x; 若有以下变量定义: float x;int a,b;则正确的switch语句是__________。 (A) switch(x) { case 1.0:printf(\"*\n\"); case 2.0:printf(\"**\n\"); } (B) switch(x) { case 1,2:printf(\"*\n\"); case .3:printf(\"**\n\"); } (C) switch(a+b) { case 1:printf(\"*\n\"); case 2*a:printf(\"**\n\"); } (D) switch(a+b) { case 1:printf(\"*\n\"); case 1+2:printf(\"**\n\"); } 80.设a、b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0 的表达式是__________。 (A) 'a'&&'b' (B) a<=b (C) a||b+c&&b-c (D) !((a<b)&& !c||1) 81.设int a=12, 则执行完语句a+=a-=a*a的值是_______ A 522 B 264 C 144 D -264 82.设int x=10,y=3,z;则语句printf(\"%d\\n\)的输出结果是________。 A 1 B 0 C 4 D 3 83.下列赋面语句中符合C语言语法的是__________。 (A) a=7+b+c=a+7; (B) a=7+b++=a+7; (C) a=7+b,b++,a+7 (D) a=7+b,c=a+7; 84.下面不正确的赋值语句是________ A i++; B i=i=5; C k=2*4, k*4 D y=float(i); 85.以下程序的输出结果是_______ main() { int x=10, y=10; printf(\"%d %d\\n\} A 10 10 B 9 9 C 9 10 D 10 9 86.以下程序的输出结果是__________。 main() { int x=10,y=10; printf(\"%d%d\n\(A) 10 10(B) 9 9(C) 9 10(D) 10 9 87.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关 系的表达式为__________。 (A) a<>0 (B) !a (C) a=0 (D) a 88.以下程序的输出结果是 _________ # include { int i=010 , j = 10; printf(\"%d,%d\\n\ } A) 11,10 B ) 9,10 C) 010,9 D) 10,9 89.设m、n、p、q为整形变量,则下面选项中不正确的赋值语句是_______ A m=n=p=q=168; B m+n; C p++; D p=m+n-(q=23); 90.设有以下说明:char ch='B',且有下面的表达式: ch=(ch>='A'&& ch<='Z')?(ch+32):ch; 则上面表达式的值是__________。 (A) B (B) b (C) Z (D) z 91.设有语句 int a=5,b=6,c=7,d=8,m=2,n=2; (m=a>b)&&(n=(++c>d && b 93.设语句int a=3; ,则执行了语句a-=a-=a*a; 后,变量a 的值是______ A 3 B 0 C 9 D -12 94.下面语句中为C语言中正确的赋值语句是_________ A x=1,y=2 B k++; C x=y=2 D y=int(x) 95.写出下面程序的输出结果__________。 main() { int x=2,y=0,z; x*=3+2;printf(\"%d\ x*=y=z=4;printf(\"%d\ (A) 8 40 (B) 10 40 (C) 10 4 (D) 8 4 96.以下程序的输出结果是 __________ # include { int a=1,b=4,c=2; float x=10..5 , y=4.0 , z; z=(a+b)/c+sqrt((double)y)*1.2/c+x; pritnf(\"%f\\n\ A) 14.000000 B) 015.400000 C) 13.700000 D) 14.900000 97.以下C语言赋值语句合法的是__________。 (A) X=Y=58 (B) j++; (C) X=58,Y=58 (D) M=int(X+Y); 98.下面程序的输出是__________。 main() { int a=-1,b=4,k; k=(a++<=0)&&(!(b--<=0)); printf(\"%d %d %d\n\ (A) 0 0 3 (B) 0 1 2 (C) 1 0 3 (D) 1 1 2 99.以下程序的输出结果是______ # include A) 6,1 B) 2,1 C) 6,0 D) 2,0 100.以下程序的运行结果是__________。 main() { int c,x,y; x=1; y=1; c=0; c=x++||y++; printf(\"\n%d %d %d\n\ } (A) 1 1 0 (B) 2 1 1 (C) 0 1 1 (D) 0 0 1 101.有以下程序 main()? {?int?a;?char?c=10; float?f=100.0;? doubl?e?x; a=f/=c*=(x=6.5); printf(\"%d?%d?%3.1f??%3.1f\\n\} 程序运行后的输出结果是 A)1? 65? 1? 6.5? B)1 ?65? 1.5? 6.5 C)1 ?65? 1.0? 6.5? D)2? 65? 1.5 ?6.5 102.执行下面程序中的输出语句后,a的值是__________。 main() { int a; printf(\"%d\n\(A) 65 (B) 20 (C) 15 (D) 10 103.如果int i=3,则k=(++i)+(++i)+(++i)执行过后k的值为_________,i 的值为__________。 (A) 9,6 (B) 12,5 (C) 18,6 (D) 15,5 104.若已知a=10,b=20,则表达式! a105.能正确表示x的取值范围在[-10,-5]和[0,100]内的表达式是_______。 (A) (x<=-10)||(x>=-5) && (x<=0)||(x>=100) (B) (x>=-10)&&(x<=-5) || (x>=0)&&(x<=100) (C) (x>=-10)&&(x<=-5) && (x>=0)&&(x<=100) (D) (x<=-10)||(x>=-5) && (x<=0)||(x>=100) 106.写出下面程序的输出结果__________。 main() { int x=4,y=0,z; x*=3+2;printf(\"%d\ x*=(y==(z=4));printf(\"%d\ } (A) 14 40 (B) 20 0 (C) 20 4 (D) 14 4 二.填空题 1.以下程序的输出结果是__________ #define MAX(x,y) (x)>(y)?(x):(y) main() { int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf(\"%d\\n\} 2.在C语言中,程序运行期间,其值不能被改变的量叫____ 3.在一个变量定义语句中可以同时定义多个变量,变量之间用__________隔开。 4.在TURBO C中,单精度实数的数值范围约在_____~_____之间。 5.在C语言中,字符型数据和整型数据之间可以通用,一个字符数据既能以__________输出,也能以__________输出。 6.C的字符常量是用__________括起来的一个字符。 7.在C语言中,系统在每一个字符串的结尾自动加一个\"字符串结束标志符\"即__________,以便系统据此判断字符串是否结束。 8.十进制数153转化为二进制数为__________。 9.C语言的关键字都用__________{大写或小写}。 10.符号常量是指__________。 11.在C语言中,实数有两种表示形式,即__________和__________。 12.在一个整常量后面加一个字母__________或__________,则认为是longint型常量。 13.在C语言中,常量有不同的类型,包括___________、___________、___________和_____________等。 14.在C语言中,习惯上符号常量名用__________,变量用__________。{大写或小写} 15.整型常量和实型常量也称为__________,它们有正负值之分。 16.C语言基本数据类型包括__________、__________、__________、__________。 17.实型变量分为__________和__________,即float和duble型。 18.int型的取值范围是_____ ~ _____。 19.C语言中规定,在变量定义的同时也可以给变量赋初值,叫做__________。 20.C语言数据类型中构造类型包括三种,它们是__________、__________、 __________。 21.若想通过以下输入语句a使中存放字符串1234,b中存放字符5,则输入数据的形式应该是──. char a [10],b; scanf(\"a=%sb=%c\ 22.C的字符串常量是用__________括起来的字符序列。 23.位无符号二进制数能表示的最大十进制数是______。 24.C语言中逻辑运算符的优先级是__________高于__________高于__________。 25.C语言中运算符的优先级最小的是__________运算符。 26.在ASCII代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码大__________。 27.在C语言中,算术运算符的结合性是__________。 28.在C语言中,算术运算符有加、减、乘、除等,这些运算符需要两个运算对象,称为__________运算符。 29.一个C源程序至少包含一个__________,即__________。 30.sizeof用于计算出各个数据类型使用多少内存空间(以bytes为单位),若有语句: i=sizeof(int);和j=sizeof(char); 则:i=_________;j=_________。 31.在C语言中,变量是指__________。 32.在C语言中,可以利用__________将一个表达式的值转换成指定的类型。 33.sizeof用于计算出各个项数据类型使用多少内存空间(以bytes为单位),若有语句: i=sizeof(float);和j=sizeof(double); 则:i=_______ ;j= ________。 34.与八进制小数0.1等值的十六进制小数为__________。 35.下面的程序 main() { float x; int i; x=3.6; i=(int)x; printf(\"x=%f,i=%d\ 运行结果为__________。 36.下面的程序 main() { char c1,c2; c1='A';c2='B';c1=c1-32;c2=c2-32; printf(\"%c %c\运行结果为__________。 37.下面程序 main() { int i,j,m,n; i=8;j=10; m=++i;n=j++; printf(\"%d,%d,%d,%d\运行后i,j,m,n的值是__________。 38.表达式10+'a'+1.5-0.5*'B'的结果是__________。 39.表达式10+'a'+1.5-567.345/'b'的结果是__________型数据。 40.表达式x=(a=3,6*3)和表达式x=a=3,6*a分别是__________表达式和_________表达式,两个表达 式执行完的结果是__________和__________。两个表达式执行完后x的值是__________,__________。 41.如果int i=3,则printf(\"%d\执行后的输出以及i的结果分别是 __________。 42.写出以下数学式的C语言表达式_________。 ab·c 43.若已知a=10,b=20,则表达式!a<b的值为________。 44.设x和y均为int型变量,且x=1,y=2,则表达式2.0+y/x的值为______。 45.下面程序的执行结果是__________。 main() { int a=5,b=4,c=9; printf(\"###%d\ } 46.若x=3,y=2,z=1,求下列表达式的值分别为: (1)________ (2)________ (3)__________ (1) x for(cc=1;cc<4;cc++) fun() printf(\"\\n\"); } 49.逗号表达式如下: 表达式1,表达式2 则逗号表达式的结果是__________的值。 第三章 基本语句 一.单项选择题 1.以下程序的输出结果是________ # include for ( i=1;i<=5;i + + ) {if ( i%2 ) printf(\"*\"); else continue; printf(\"#\");} printf(\"$\\n\"); } A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$ 2.以下程序的输出结果是_________ # include printf(\"a=%%d,b=%%d\\n\ A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d 3.设k 为int 变量,下面语句将输出_____ k=1988; printf(\"|%-06d|\\n\ A 输出格式描述符不合法 B 输出为|001988| C 输出为|1988| D 输出为|-01988| 4.若欲表示在if后a不等于0的关系,则能正确表示这一关系的表达式为 __________。 (A) a< >0 (B) ! a (C) a=0 (D) a 5.判断字符型变量ch为大写字母的表达式是__________。 (A) 'A'<= ch <='Z' (B) (ch>='A')&(ch<='Z') (C) (ch>='A')&&(ch<='Z') (D) (ch>='A')AND(ch<='Z') 6.以下程序的输出结果是__________。 main() { int a=-1,b=4,k; k=(++a<=0)&&! (b--<=0); printf(\"%d %d %d\n\ (A) 1 0 4 (B) 0 0 4 (C) 1 0 3 (D) 0 0 3 7.有以下程序 main() { int a=1,b=2,m=0,n= 0,k; k=(n=b>a)||(m=a ) ; printf(\"%d,%d\\n\ } 程序运行后的输出结果是 A)0,0 B)0,1 C)1,0 D)1,1 8.若int类型数据占两个字节,则下列语句的输出为________。 int k=-1; Printf (\"%d, %u, \\n\ A -1, -1 B -1,32767 C -1,32768 D -1,65535 9.若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存 储单元: int *p; p=__________malloc(sizeof(int)); 则应填入__________。 (A) int (B) int * (C) (*int) (D) (int*) 10.设a为float 变量,下面语句将输出_____ float a=271.828; printf(\"%-4.2f\\n\ A 输出格式描述符的域不够宽,不能输出 B 输出为271.83 C 输出为271.82 D 输出为-271.82 11.在下列选项中,不正确的赋值语句是_______ A ++t; B n1=(n2=(n3=0)); C k=i=j; D a=b+c=1; 12.若有以下定义各语句: char c1='b', c2='e'; printf (\"%d, %c \\n\ 则输出结果是_______ A 2, M B 3, E C 2, E D 输出结果不确定 13.以下程序的输出结果是__________。 main() { char c1='6',c2='0'; printf(\"%c,%c,%d,%d\n\(A) 因输出格式不合法,输出出错信息 (B) 6,0,6,102 (C) 6,0,7,6 (D) 6,0,5,7 14.若k为int变量,则以下语句________。 k=8567; printf(\"| %-06d | \\n\); A 输出格式描述符不合法 B输出为0085671 C输出为|8567| D输出为|-08567| 15.分析程序片段(字符串内没有空格字符): printf(\"%d\n\\n012\1\\\")); 上面程序片段的输出结果是__________。 (A) 11 (B) 10 (C) 9 (D) 8 16.分析程序: #include scanf(\"%2d%3f%4f\ printf(\"\na=%d,b=%f,c=%f\n\ } 若运行时从键盘上输入9876543210 (A) a=98,b=765,c=4321 (B) a=10,b=432,c=8765 (C) a=98,b=765.000000,c=4321.000000 (D) a=98,b=765.0,c=4321.0 17.当输入为\"quert?\"时,下面程序的执行结果是__________。 #include (A) quert (B) Rvfsu (C) quert? (D) rvfsu? 18.printf函数中用到格式符\"%4s\其中数字4表示输出的字符串占用4列。 如果字符串长度大于4,则按原字符长从左向右全部输出;如果字符串长度小于4,则输出方式为__________。 (A) 左对齐输出该字符串,右补空格 (B) 按原字符长从左向右全部输出 (C) 右对齐输出该字符,左补空格 (D) 输出错误信息 19.以下程序的输出结果是 _____ # include { int k=4,m=1,p; p=func(k,m); printf(\"%d,\func(a,b) int a,b; { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } A) 8,17 B) 8,16 C) 8,20 D) 8,8 20.已知在ASCII代码中,字母A的序号为65,以下程序的输出结果是________。 #include char ch1='A',ch2='b'; printf(\"%d,%d\n\ } (A) 因输出格式不合法,输出错误信息 (B) 65,98 (C) A,b (D) 65,89 21.有定义语句:int?x,?y;,若变量x得到数值11,变量y得到数值12,下面四组输入要通过scanf(\"%d,%d\语句使变量x得到数形式中,错误的是 A)11?12<回车> ?B)11,?12<回车> C)11,12<回车>? D)11?,<回车> 12<回车>? 22.已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为______。 main() { char x,y; x='0'; y='9'; printf(\"%d,%d\n\(A) 因输出格式不合法,输出错误信息 (B) 48,57 (C) 0,9 (D) 48,58 23.已知在ASCII集中,字母A的序号是65,以下程序的输出结果是__________。 main() { char c1='B',C2='Y'; printf(\"%d,%d\n\(A) 输出格式不合法,输出错误信息 (B) 67,88 (C) 66,89 (D) C,X 24.分析程序片段: int i=65536;printf( \"%d\n\ 上面程序片段的输出结果是__________。 (A) 65536 (B) 0 (C) -1 (D) 有语法错误,无输出结果 25.根据题目中已给出的数据输入和输出形式,程序中输入输出语句的正确内容是__________。 main() { int a;float x; printf(\"input a,x:\"); 输入语句 输出语句 } 输入形式 input a,x: 3 2.1 输出形式 a+x=5.10 (A) scanf(\"%d,%f\\na+x=%4.2f\(B) scanf(\"%d%f\\na+x=%4.2f\(C) scanf(\"%d%f\\na+x=%6.1f\(D) scanf(\"%d%3.1f\\na+x=%4.2f\ 26.已知在ASCII字符集中,字母A的序号为65,下面程序的输出结果为_______。 main() { char c='A'; int i=10; c=c+10; i=c%i; printf(\"%c,%d\n\ (A) 75,7 (B) 75,5 (C) K,5 (D) 因存在非图形字符,无法直接显示出来 27.下面程序段运行时输出结果是________。 char s[18]=\"a book !\"; printf(\"%.4s\",s); A a book ! B a bo C a book! D 格式描述不正确,没有确定输出 28.如a为整形变量,以下语句_________. printf(\"%d\\n\ A 赋值不合法 B输出为不确定值 C输出值为-2 D 输出值为2 29.在scanf函数的格式控制中,格式说明的类型与输入项的类型应该一一对应匹配。如果类型不匹配,系统将__________。 (A) 不予接收 (B) 并不给出出错信息,但不可能得到正确数据 (C) 能接收到正确输入 (D) 给出出错信息,不予接收输入 30.若有定义:int x,y;char a,b,c;并有以下输入数据(此处, (A) scanf(\"x=%dy=%d\(B) scanf(\"%dy%d\(C) scanf(\"%d%d%c%c%c%c%c%c\(D) scanf(\"%d%d%c%c%c\31.在C语言中,退格符是__________。 (A) \n (B) \t (C) \v (D) \b 32.有以下程序? main()? {?int?x=3,?y=2,?z=1;? printf(\"%d\\n\ }? 程序运行后的输出结果是? A)3?B)2?C)1?D)0 33.以下程序的输出结果是________。 #include int a=2, c=5; printf(\"a=%%d, b=%%d\\n\} A a=%2, b=%5 B a=2, b=5 C a=%%d D a=%d, b=%d 34.写出下面程序的输出结果__________。 main() { int x=40,y=4,z=4; x=y==z; printf(\"%d\ x=x==(y-z); printf(\"%d\ (A) 4 0 (B) 4 1 (C) 1 1 (D) 1 0 35.下面程序的输出结果是__________。 main() { int k=11; printf(\"k=%d,k=%o,k=%x\n\ } (A) k=11,k=12,k=11 (B) k=11,k=13,k=13 (C) k=11,k=013,k=0xb (D) k=11,k=13,k=b 36.下列说法正确的是__________。 (A) 输入项可以是一个实型常量,如scanf(\"f%\ (B) 只有格式控制,没有输入项,也能进行正确输入,如scanf(\"a=%d,b=%d\"); (C) 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如 scanf(\"%5.3f\ (D) 当输入数据时,必须指明变量的地址,如scanf(\"%f\37.下面程序的输出结果是__________。 main() { char x=060; printf(\"%d\n\ (A) 96 (B) 160 (C) 24 (D) 48 38.设有如下程序段?:? int?x=2002,?y=2003;? printf(\"%d\\n\ 则以下叙述中正确的是? A)输出语句中格式说明符的个数少?于输出项的个数,不能正确输出? B)运行时产生出错信息? C)输出值为2002? ?D)输出值为2003? 39.下列程序的输出是_________ main( ) { char ch='A'; ch--; printf(\"%d\\n\} A 18 B 9 C -18 D -9 40.若x是int型变量,且有下面的程序片段: for(x=3;x<6;x++) printf((x%2)?(\"**%d\"):(\"##%d\n\"),x); 上面程序片段的输出结果是__________。 (A) **3 (B) ##3 (C) ##3 (D) **3##4 ##4 **4 **4##5 **5 **5 ##5 41.若k是int型变量,且有下面的程序片断: k=-3; if(k<=0)printf(\"# # # #\") else printf(\"&&&&\"); 上面程序片断的输出结果是_______. A # # # # B &&&& C # # # # D 有语法错误,无输出结果 42.若k是int型变量,且有下面的程序片段: k=-3; if(k<=0) printf(\"# # # #\") else printf(\"& & & &\"); 上面程序片段的输出结果是__________。 (A) # # # # (B) & & & & (C) # # # # & & & & (D) 有语法错误,无输出结果 43.在C语言中,如果下面的变量都是int类型,则输出的结果是 ________ sum=pad=5; pad=sum + + ,pad + + , + + pad; printf(\"%d\\n\ A) 7 B) 6 C) 5 D) 4 44.以下语句的输出结果是__________。 printf(\"%d\n\\t\\01\txt\n\")); (A) 5 (B) 14 (C) 8 (D) 输出项不合法,无正常输出 45.以下C程序,正确的运行结果是__________。(注:└┘表示空格) main() { long y=-34567; printf(\"y=%-8ld\n\ printf(\"y=%-08ld\n\ printf(\"y=%08ld\n\ printf(\"y=%+8ld\n\(A) y=└┘└┘-34567 y=-└┘└┘34567 y=-0034567 y=-34567 (B) y=-34567 y=-34567 y=-0034567 y=+└┘-34567 (C) y=-34567 y=-34567 y=-0034567 y=└┘└┘-34567 (D) y=└┘└┘-34567 y=-0034567 y=00034567 y=+34567 46.字符(char)型数据在微机内存中的存储形式是__________。 (A) 反码 (B) 补码 (C) EBCDIC码 (D) ASCII码 47.下面语句的输出结果是______ printf(\"%d\\n\(int)(2.5+3.0)/3); A 有语法错误不能通过编译 B 2 C 1 D 0 48.C语言中调用printf函数进行输出时需要注意,在格式控制串中,格式说明与输出项的个数必须相同。如果格式说明的个数小于输出项的个数,多余的输出项将________;如果格式说明的个数多 于输出项的个数,则对于多余的格式将输出不定值(或0)。 (A) 不予输出 (B) 输出空格 (C) 照样输出 (D) 输出不定值或0 49.设有如下定义 int x=10,y=5,z;则语句printf(\"%d\n\ 的输出结果是__________。 (A) 1 (B) 0 (C) 4 (D) 3 50.下面语句执行后的输出为_________ int=-1; if(i<0) printf(\"* * * *\\n\") else printf(\"%%%%\\n\") A * * * * B %%%% C %%%%c D 有语法错误,不能正确执行 51.在C语言中,反斜杠字符是__________。 (A) \n (B) \t (C) \v (D) \\ 52.有以下程序: #include { int i; char ch[2]; } a; main() { a.ch[0]=13; a.ch[1]=0; printf(\"%d\\n\ 程序的输出结果是 _______(注意: ch[0]在低字节,ch[1]在高字节。) A) 13 B) 14 C) 208 D) 209 53.若有以下程序段,w和k都是整形变量: w=k; LB: if(w= =0) goto LE; w--; printf(\"*\"); goto LB; LE: 则不能与上面程序段等价的循环语句是_______ A for(w=k ; w!=0; w--) printf(\"*\"); B w=k; C w=k; do{w--;printf(\"*\");} while(w!=0); D for(w=k ; w; --w) printf(\"*\"); 二.填空题 1.要使以下程序段输出10个整数,请填入一个整数。for(i=0;i<=_________;printf(\"%d\\n\2.函数mycmp (char*s,chat *t)的功能是比较字符串s和t的大小,当s等于t 时返回0,否则返回s和t的第一个不同字符的ASCII码的差值,即当s>t时返回正值, 当s等于t 时返回0,否则返回s和t的第一个不同字符的ASCII码的差值,即当s>t时返回正值, 当s 3.若输入字符串:abcde<回车>,则以下while循环体将执行_________次。 While((ch=getchar())=='e') printf(\"*\"); 4.下面程序的输出结果是 7 ───. char b []=\"ABCD\"; main() { char *chp ; for (chp =b;*chp ;chp +=2) printf(\"%s\printf(\"\\n\"); } 5.下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。 int add(int x,int y, ________z) { ______ =x+y;} 6.(下面程序把从终端读入的文本用@作为文本结束标志)复制到一个名为bi.dat的新文件中,请填空。 #include if((fp=fopen(_______))==NULL)exit(0); while ((ch=getchar())!='@')fputc(ch,fp); _______;} 7.函数pi的功能是根据以下近似公式求鹬担?(?*?)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n) 现在请你在下面的函数中填空,完成求鸬墓δ堋£ #include \"math.h\" double pi(long n) { double s=0.0; long i; for(i=1;i<=n;i++)s=s+ ________ ; return(sqrt(6*s)); } 8.下列程序的输出结果是__________。 #include \"stdio.h\" main() { char b[]=\"ABCDEFG\" char *chp=&b[7]; while(--chp>&b[0]) putchar(*chp); putchar('\n'); } 9.下面程序的输出结果是__________ main() { int x,y,z; x=3;y=z=4; printf(\"%d\printf(\"%d\ } 10.C语言是通过__________来进行输入和输出的。 11.通过以下输入语句给x赋值2,给y赋值3,则输入数据的形式应该是 __________。 int x,y; scanf(\"x=%d,y=%d\ 12.scanf函数中的\"格式控制\"后面应当是__________,而不是__________。 13.如果想输出字符\"%\则应该在\"格式控制\"字符串中用__________表示。 14.写出下列程序的输出结果__________。 #include printf(\"%d %c\ 15.printf函数的\"格式控制\"包括两部分,它们是__________和_________。 16.分析下面程序(回车换行符用 x=16;y=(x++)+x);printf(\"%d\n\ x=15;printf(\"%d,%d\n\ x=20;y=x-- +x;printf(\"%d\n\ x=13;printf(\"%d,%d\程序的输出结果是__________。 17.分析下面程序(回车换行符用 x*=3+2;printf(\"%d\n\ x*=y=z=4;printf(\"%d\n\ x=y=z;printf(\"%d\n\ x=(y=z);printf(\"%d\n\ 程序的输出结果为__________。 18.分析下列程序 main() { printf(\"%d\ printf(\"%d\ printf(\"%d\ printf(\"%d\ printf(\"%d\程序的输出结果是__________。 19.对不同类型的数据有不同的格式字符。例如:__________格式字符是用来输出十进制整数,________格式字符是用来输出一个字符,_________格式字符是用来输出一个字符串。 20.编制程序对实数a与b进行加减乘除计算,要求显示如下结果。 jia=70.000000 jian=30.000000 cheng=1000.000000 chu=2.500000 程序:#include printf(\"jia=%f\n\ printf(\"jian=%f\n\ printf(\"cheng=%f\n\ printf(\"chu=%f\n\ 将缺少的部分,填在空白处。 21.putchar函数的作用是__________。 22.阅读程序 main() { char str1[]=\"people and computer\[10]; char *p1=str1,*p2=str2; scanf(\"%s\ printf(\"%s\ printf(\"%s\n\ 运行上面的程序,输入字符串PEOPLE AND COMPUTER,则程序的输出结果是__________。 23.以下程序的输出结果是 _________ main() { unsigned short a=65536; int b; printf(\"%d\\n\} 24.在C语言中,用来标识变量名,符号常量名,函数名,数组名,类型名,文件名的有效字符序列称为__________。 25.在C语言中,要求对所有用到的变量,遵循先定义后__________的原则。 26.在C语言中,标识符只能由__________、__________和__________三种字符组成,且第一个字符必须是__________或__________。 27.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后按照逆序输出该字符串,补足所缺语句。 #include { char str[81],*sptr; int i; for(i=0;i<80;i++) { str[i]=getchar( ); if(str[i]=='\n')break; } str[i]=____(1)____; sptr=__________; while(*sptr) putchar(*sptr--); } 28.可以用来表示C的整常数的进制是__________、__________、__________。 29.分析下面的程序 main() { int a,b,c; a=b=c=1; a+=b; b+=c; c+=a; printf(\"(1)%d,\ printf(\"(2)%d,\ (a>=b>=c)? printf(\"AA\"):printf(\"CC,\"); printf(\"a=%d,b=%d,c=%d\n\} 运行结果为(1)___。 (2)_______________。 30.C语言的数据类型有四大类,其分别为__________、__________、 __________、__________。 31.表示条件:10 printf(\"%s%s%s\\n\ 33.若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是_________ c=(a-=(b-5)); c=(a%11)+(b=3); 34.若想通过以下输入语句给a赋于1,给b赋于2,则输入数据的形式应该是_______ int a,b; scanf(\"a=%b,b=%d,&a,&b); 35.下面程序的输出结果是__________。 main() { int x=1,y=1,z=1; y=y+z;x=x+y; printf(\"%d\ printf(\"%d\ printf(\"%d\ printf(\"%d\ 36.想通过以下输入语句给a赋值1,给b赋值2,则输入数据的形式应该是 __________。 int a,b; scanf(\"a=%d,b=%d\ 37.变量也有不同类型,如__________、__________和__________等。 38.C语言在定义变量的同时说明变量的__________,系统在编译时就能根据变量定义及其__________为它分配相应大小的存储空间。 第四章 选择结构程序设计 一.单项选择题 1.写出下面程序的运行结果__________。 main() { int x,y=1,z=0; if(y!=0) x=5; printf(\"x=%d\t\ printf(\"x=%d\t\n\ x=1; if(z<0) if(y>0) x=3; else x=5;printf(\"x=%d\t\n\ if(z=y<0) x=3; else if(y==0) x=5; else x=7; printf(\"x=%d\t\ printf(\"z=%d\t\n\ if(x=z=y) x=3; printf(\"x=%d\t\ printf(\"z=%d\t\n\(A) x=5 x=5 x=1 x=7 z=0 x=3 z=1 (B) x=5 x=5 x=1 x=5 z=0 x=3 z=0 (C) x=5 x=5 X=5 x=7 z=0 x=3 z=1 (D) x=5 x=5 x=1 x=7 z=0 x=3 z=0 2.若执行下面的程序时从键盘上输入3和5,则输出是__________。 main() { int a,b,s; printf(\"Please Enter a and b\"); scanf(\"%d %d\ s=a; if(a>b) s=a%b; else s=b%a; printf(\"%d\n\ } (A) 0 (B) 3 (C) 2 (D) 5 3.假定所有变量均已正确说明,下列程序段运行后x的值是__________ a=b=c=0;x=35; if(!a) x-=1; else if(b); if(c) x=3; else x=4; (A) 34 (B) 4 (C) 35 (D) 3 4.假定所有变量均已正确说明,下列程序段运行后x 的值是_____ a=b=c=0; x=35; if(!a) x--; else if(b); if(c) x=3; else x=4; A 34 B 4 C 35 D 3 5.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 __________。 main() { int x; printf(\"Please input a integer\"); scanf(\"%d\ if(x++>5) printf(\"%d\ else printf(\"%d\n\ } (A) 7和5 (B) 6和3 (C) 7和4 (D) 6和4 6.以下if语句书写正确的是__________。 (A) if(x=0;)printf(\"%f\(B) if(x>0){ x=x+1;printf(\"%f\(C) if(x>0);{ x=x+1;printf(\"%f\(D) if(x>0){ x=x+1;printf(\"%f\7.分析程序: #include else if((x<5.0)&&(x!=2.0)) y=1.0/(x+2.0); else if(x<10.0) y=1.0/x; else y=10.0; printf(\"%f\n\ } 若运行时从键盘上输入2.0 if(n++<10) printf(\"%d\\n\else printf(\"%d\\n\} 9.写出下面程序的执行结果__________。 main() { int x=1,y=1,z=0; if(z<0) if(y>0) x=3; else x=5; printf(\"%d\t\ if(z=y<0) x=3; else if(y==0) x=5; else x=7; printf(\"%d\t\ printf(\"%d\t\ (A) 1 7 0 (B) 3 7 (C) 5 5 0 (D) 1 5 10.以下程序的输出结果是________ A 1 B 2 C3 long fun( int n) { long s; if(n==1 || n==2) s=2; else s=n-fun(n-1); return s; } main() { printf(\"%ld\\n\ 11.写出下面程序的执行结果__________。 main() { int x,y=1; if(y!=0) x=5; printf(\"%d\t\ 0 1 D 4 if (y==0) x=3; else x=5; printf(\"%d\t\n\(A) 1 3 (B) 1 5 (C) 5 3 (D) 5 5 12.写出下面程序的输出结果__________。 main() { int i,j; i=16;j=(i++)+i;printf(\"%d\ i=15;printf(\"%d %d\ (A) 32 16 15 (B) 33 15 15 (C) 34 15 16 (D) 34 16 15 13.以下程序的输出结果是__________。 main() { int x=10,y=10; printf(\"%d %d\n\(A) 10 10 (B) 9 9 (C) 9 10 (D) 10 9 14.运行下面程序将输出_________ # include if(i<=0) printf(\"111\") else printf(\"222\"); } A 111 B 222 C 1122 D 将显示语法错误 15.阅读以下程序: main() { int x; scanf(\"%d\if(x--<5) printf(\"%d\"'x); else printf(\"%d\"'x++); } 程序运行后,如果从键盘上输人5,则输出结果是________ A 3 B 4 C 5 D 6 16.下面程序的输出结果是__________。 main() { int x=100,a=10,b=20,ok1=5,ok2=0; if(a<b) if(b!=15) if(!ok1) x=1; else if(ok2)x=10; x=-1; printf(\"%d\n\ } (A) -1 (B) 0 (C) 1 (D) 不确定的值 17.在C语言的if 语句中,用作判断的表达式为_______ A 关系表达式 B 逻辑表达式 C 算术表达式 D 任意表达式 18.若执行下面的程序时从键盘上输入5,则输出结果是__________。 #include scanf(\"%d\ switch( ++x ) { case 1: case 2: case 3: case 4: case 5: printf(\"****\"); break; case 6: printf(\"####\"); break; default: printf(\"@@@@\"); break; } } (A) **** (B) #### (C) @@@@ (D) ####@@@@ 19.有如下程序 main0 { int x=1,a=0,b=0; switch(x){ case 0: b++; case 1: a++; case 2: a++;b++; } printf(\"a=%d,b=%d\\n\} 该程序的输出结果是________ A a=2,b=1 B a=1,b=1 C a=1,b=0 D a=2,b=2 20.以下程序的输出结果是________ main() { int a=0,i; for(i=0;i<5;i++) { switch(i) { case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; } } printf(\"%d\\n\} A 31 B 13 C 10 D 20 21.下面程序的输出结果是__________。 int aa[3][3]={{2},{4},{6}}; main() { int i,*p = aa[0]; for( i = 0;i<3;i++) { switch(i) { case 0: aa[i][1]=*p+1; break; case 1: aa[i][1]=aa[i][0]*2; break; default : ++p; } printf(\"%d\ } } (A) 223 (B) 236 (C) 234 (D) 226 22.有以下程序: # include while((c=getchar())!='\\n') { switch(c-'2') { case 0: case 1: putchar(c+4); case 2: putchar(c+4);break; case 3: putchar(c+3); case 4: putchar(c+2);break; } } printf(\"\\n\"); } 从第一列开始输入以下数据, 程序的输出结果是 _________ A) 668977 B) 668966 C) 6677877 D) 6688766 23.分析程序: #include { int x=1,y=0,a=0,b=0; switch( x ) { case 1: switch(y) { case 0: a++; case 1: b++;break; } case 2:a++;b++;break; } printf(\"a=%d,b=%d\n\ } 上面程序的输出结果是__________。 (A) a=2,b=1 (B) a=1,b=1 (C) a=1,b=0 (D) a=2,b=2 24.运行下面程序将输出_________ # include switch(ch++) { case'a': n++; break; case'b': n- -; case'c': n+=2; break; case'd': n=n%2; continue; case'e': n=n*10; break; default:n=n/3; } n++; } printf(\"%d \\n\} A 0 B 2 C 3 D 4 25.运行下面程序将输出_________ # include { case8: k++; case10: k++; case20: k++; case30: k++; } printf(\"%d\\n\} A 10 B 11 C12 D 13 26.下面程序的输出是____ main() { char * s=\"12134211\"; int v1=0, v2=0, v3=0, v4=0, k; for(k=0; s[k]; k++) switch(s[k]) { default: v4++; case'1': v1++; case' 3': v3++; case' 2': v2++;} printf(\"v1=%d, v2=%d, v3=%d, v4=%d\\n\} A v1=4, v2=2 , v3=1, v4=1 B v1=4, v2=9 , v3=3, v4=3 C v1=5, v2=8, v3=6, v4=1 D v1=8, v8=2 , v3=8, v4=8 27.运行下面程序将输出_________ # include int x=1, y=0 , a=0, b=0; switch(x) {case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; case 3: a++; b++; } printf(\"a=%d, b=%d\\n\ b); } A a=1, b=0 B a=2, b=1 C a=2, b=1 D a=2, b=2 28.若有定义: float w; int a, b; 则合法的switch语句是________ A switch(w) B switch(a); { case 1.0: printf(\"*\\n\"); { case 1 printf(\"*\\n\"); case 2.0: printf(\"**\\n\"); case 2 printf(\"**\\n\"); } } C switch(b) D switch(a+b); { case 1: printf(\"*\\n\"); { case 1: printf(\"*\\n\"); default: printf(\"\\n\"); case 2: printf(\"**\\n\"); case 1+2: printf(\"**\\n\"); default: printf(\"\\n\"); } } 29.运行下面程序将输出_________ # include { int k=10;char c='A'; do {switch(c++) { case'A': k++; break; case'B': k- -; case'C': k+=2; break; case'D': k=k%2; continue; case'E': k=k*10; break; default : k=k/3; } k++; }while(c<'G'); printf(\"k=%d \\n\} A k=3 B k=4 C k=2 D k=0 30.有以下程序 main() { int k=4,n=0; for( ; n ) { n++; if(n%3!=0) continue; k--; } printf(\"%d,%d\\n\ } 程序运行后的输出结果是 A)1,1 B)2,2 C)3,3 31.下面程序的输出结果是__________。 main() { char *s=\"12134211\"; int v1=0,v2=0,v3=0,v4=0,k; for (k=0;s[k];k++)switch (s[k]) { default:v4++; case '1':v1++; case '3':v3++; case '2':v2++; D)4,4 } printf(\"v1=%d,v2=%d,v3=%d,v4=%d\n\(A) v1=4,v2=2,v3=1,v4=1 (B) v1=4,v2=9,v3=3,v4=1 (C) v1=5,v2=8,v3=6,v4=1 (D) v1=8,v2=8,v3=8,v4=8 32.如果从键盘上输入a~z26个字母后,下面程序将输出_________ # include char c; int v0=0, v1=0 , v2=0; do switch(c=getchar()) { case'a': case'A'; case'e': case'E'; case'i': case'I'; case'o': case'O'; case'u': case'U'; v1+=1; default:v0+=1;v2+=1; } while(c!='\\n') printf(\"v0=%d, v1=%d, v2=%d\\n\} A v0=7, v1=4, v2=7 B v0=8, v1=4, v2=8 C v0=27, v1=5, v2=27 D v0=12, v1=4, v2=12 33.与 y=(x>0?1:x<0?-1:0);的功能相同的if语句是________ A if (x>0) y=1; B if(x) else if(x<0)y=-1; if(x>0)y=1; else y=0; else if(x<0)y=-1; else y=0; C y=-1 D y=0; if(x) if(x>=0) if(x>0)y=1; if(x>0)y=1; else if(x==0)y=0; else y=-1; else y=-1; 34.有如下程序 Main() { int a=2,b=-1,c=2; if(a该程序的输出结果是________ A 0 B 1 C 2 D 3 35.有如下程序 Main() { float x=2.0,y; if(x<0.0) y=0.0; else if(x<10.0) y=1.0/x; else y=1.0; printf(\"%f\\n\} 该程序的输出结果是________ A 0.000000 B 0.250000 C 0.500000 D 1.000000 36.下面程序的输出是_____ main() { int x=3, y=6, a=0; while(x++!=(y- =1)) {a+=1; if(y A x=4, y=4, a=1 B x=5, y=5, a=1 C x=5, y=4, a=3 D x=5, y=4, a=1 37.以下程序的输出结果是______ main( ) { int x, i; for(i=1; i<=100; i++) { x=i if(++x%2= =0) if(++x%3= =0) if(++x%7= =0) printf(\"%d\} } A 39 81 B 42 84 C 26 68 D 28 70 38.下面程序的输出结果是______ main() { char * s=\"121\"; int k=0, a=0, b=0; do { k++; if(k%2= =0){a=a+s[k]-'0'; continue;} b=b+ s[k]-'0'; a=a+s[k]-'0';} while(s[k+1]); printf(\"k=%d a=%d b=%d\\n, k, a, b); } A k=3 a=2 b=3 B k=3 a=2 b=3 C k=2 a=3 b=2 D k=2 a=2 b=3 39.若i , j 已经定义为int类型,则以下程序段中内循环体总的执行次数是_______ for(i=5; i; i-- ) for(j=0;j<4;j++) {…} A 20 B 24 C 25 D 30 40.假定a和b为int型变量,则执行以下语句后b 的值为_______ a=1; b=10; do {b=-a; a++} while(b--<0); A 9 B-2 C -1 D 8 二.填空题 1.下面程序的输出结果是___________ #define MAX 3 int a[MAX]; main ( ) { funl( ); fun2(a); printf(\"\\n\");} funl( ) { int k,t=0; for (k=0;k FILE *fp; main() {int i,j; if ((fp=fopen(19)==NULL)exit(0)); for (i=0;i<10;i++) {scanf(\"%d\ fwite(&j,sizeof(int ),1, 20 ); } fclose(fp); } 2.下面程序的输出是__________ #define MAX 5 int a[MAX],k; main() { fun1();fun3(); fun2(); fun3(); printf(\"\\n\"); } fun1() { for(k=0;k for(k=0;k<5;k++) a[k]=k; } fun3() { int k; for(k=0;k printf(\"\nPlease enter 1 number:\");c=getchar(); while(c!='\n') { if(c=='.') label=1; c=getchar(); } if(label==1) printf(\"\nfloat\"); else printf(\"\nint\"); } 4.把for(表达式1;表达式2;表达式3);改写为等价的While语句为_______。 5.设有程序片段如下: switch(class) { case 'A':printf(\"GREAT! \n\");break; case 'B':printf(\"GOOD! \n\");break; case 'C':printf(\"OK! \n\");break; case 'D':printf(\"NO! \n\");break; default:printf(\"ERROR! \n\"); } 若class的值为'C',则输出结果是__________。 6.以下程序段的运行结果是__________。 int x=1,y=0; switch(x) { case 1 : switch(y) { case 0:printf(\"x=1 y=0\n\");break; case 1:printf(\"y=1\n\");break; } break; case '2':printf(\"x=2\n\"); } 7.C语言中的空语句就是__________。 8.while语句的特点是_____,_____;dowhile语句的特点是_____,_____。 9.返回语句的功能是从__________返回__________。 10.复合语句是由一对__________括起来的若干语句组成的。 11.由一次函数调用加一个分号构成一个__________语句。 12.语句标号由标识符表示,由__________、__________和__________组成。第一个字符必须是字母或下划线。 13.goto语句的主要用途是__________和__________。 14.循环的嵌套是指__________。 15.条件1016.以下程序的功能是计算一元二次方程(如下所示)的根,补足程序中空缺 的语句。 #include { float a,b,c,_abs,_derta,_doublea,part1,part2; printf(\"enter a,b,c:\"); scanf(\"%f%f%f\ if(__________) if(__________) printf(\"no answer due to input error\n\"); else printf(\"the single root is %f\n\ else{ _derta =b*b-4*a*c;_doublea=2*a; part1=-b/(2*a);_abs=abs(_derta); part2=sqrt(_abs)/_doublea; if(__________) printf(\"complex root\n real part=%f image part=%f\n\ part1,part2); else printf(\"real roots\n root1=%f root2=%f\n\ part1-part2);} } 17.以下两条if语句可合并成一条if语句为 。 if(a<=b) x=1; else y=2; if(a>b) printf(\" * * * * y=%d\n\ else printf(\" # # # # x=%d\n\ 应该为:______ {x=1;printf(\"####x=%d\n\ else {y=2;printf(\"****y=%d\n\ 第五章 循环结构程序设计 一.单项选择题 1.下面的程序的输出结果是__________。 main() { char *s=\"121\"; int k=0,a=0,b=0; do { k++; if(k%2==0) {a=a+s[k]-'0';continue;} b=b+s[k]-'0';a=a+s[k]-'0'; }while(s[k+1]); printf(\"k=%d a=%d b=%d\n\(A) k=3 a=2 b=3 (B) k=3 a=3 b=2 (C) k=2 a=3 b=2 (D) k=2 a=2 b=3 2.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是________ A s=a+b; B s=a+c; C s=s+c; D s=b+c; 3.如有以下程序 main() { int i; sum; for(i=1;i<=3; sum++) printf(\"%\\n\} 该程序的输出结果是????????????________ A 6 B 3 C 死循环 D 0 4.以下循环体的执行次数是________ main() { int i, j; for(i=0,j=1;i<=j+1;i+=2,j--); printf(\"%d\\n\ A 3 B 0 C 1 D 2 5.以下程序输出的结果是________ A 741 B 852 C 963 D 975421 main( ) { int y=10; for(; y>0; y--) if(y%3==0) { printf (\"%d\ continue; }} 6.下面程序的输出结果是__________。 main() { int y=9; for(;y>0;y--) { if(y%3==0) { printf(\"%d\ } } (A) 741 (B) 852 (C) 963 (D) 875421 7.下列程序的输出结果为__________。 main() { int n[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=2; for(i=0;i<k;i++) for(j=0;j<k;j++) n[j]=i*j; printf(\"%d\n\[1]); } (A) 2 (B) 1 (C) 0 (D) 3 8.for语句中的表达式可以部分或全部省略,但两个_________不可省略。但当三个表达式均省略后,因缺少判断条件,循环会无限制地执行下去,形成死循环。 (A) 0 (B) 1 (C) ; (D) , 9.分析程序: #include for(a=1,b=1;a<=100;a++) { if(b>=20)break; if(b%3==1) { b+=3; continue; } b-=5; } printf(\"%d\n\ } 上面程序的输出结果是__________。 (A) 7 (B) 8 (C) 9 (D) 10 10.下述for循环语句是________ int i, k; for(i=0, k=1, i++, k++) printf(\"* * *\"); A 判断循环结束的条件非法 B 是无限循环 C 只循环一次 D 一次也不循环 11.若X是int型变量,以下程序段的输出结果是________. A **3 B ##3 C ##3 D **3##4 ##4 **4 **4##5 **5 **5 ##5 for(x=3; x<6; x++) printf((x%2)?(\"**%d\"): (\"##%d\\n\"), x); 12.以下程序输出的结果是________ A 39 81 B 42 84 C 26 68 D 28 70 main() { int x, i; for(i=1; i<=100; i++) { x=i; if(++x%2==0) if(++x%3==3) if(++x%7==0) printf(\"%d \} pfrintf(\"\\n\"); } 13.分析以下程序: main() { int x=5,a=0,b=0; if(x=a+b) printf(\"****\n\"); else printf(\"####\n\"); } 以上程序__________。 (A) 有语法错,不能通过编译(B) 通过编译,但不能连接 (C) 输出**** (D) 输出#### 14.下面程序的输出结果是__________。 #include for(i=0;i<k;i++) for(j=0;j<k;j++) str[j]=str[i]+32; printf(\"%c\n\[k]); } (A) 不确定的值 (B) A (C) B (D) a 15.while循环语句中,while后一对圆括号中表达式的值决定了循环体是否进行,因此,进入while循环后,一定要有能使此表达式的值变为_______的操作,否则,循环将会无限制地进行下去。 (A) 0 (B) 1 (C) 成立 (D) 2 16.执行下面程序片段的结果是__________。 int x=123; do { printf(\"%3d\n\ while(!x); (A) 打印出321 (B) 打印出123 (C) 不打印任何内容 (D) 陷入死循环 17.程序段如下: int k=0; while(k++<=2) printf(\"%d\n\ 则正确的执行结果是__________。 (A) 1 (B) 2 (C) 0 (D) 无结果 2 3 1 3 4 2 18.有以下程序 main( ) { int x=0,y=5,z=3; while(z-->0&&++x<5) y=y-1; printf(\"%d,%d,%d\\n\} 程序执行后的输出结果是________ A 3,2,0 B 1,4,2 C 4,3,-1 D 5,-2,-5 19.有以下程序 main() { int s=0,a=1,n; scanf(\"%d\do { s+=1; a=a-2; } while(a!=n); printf(\"%d\\n\}