三、 理论习题 1. 第一章
1. C语言的函数体由(
)括起来。
C) []
D) ()
A) <> B) {} 2. 下面叙述错误的是()
A) 一个C源程序可由一个或多个函数组成 B) 构成C语言源程序的基本单位是语句
C) C源程序中大、小写字母是有区别的 D) 若一条语句较长,可分写在下一行或多行上 3. 下面叙述正确的是()
A) 每行最多只能写两条语句
B) main()函数必须位于源程序文件的开头 4. C源程序中main()函数的位置()。
A) 必须位于程序的最前面 B) 必须在自定义函数前面
5. main()函数的位置()
A) 必须位于用户自定义函数的前面
C) 所有语句都必须以分号;结束 D) 程序中必须含有自定义函数 C) 必须在系统库函数后面 D) 可以在自定义函数后面
B) 必须位于程序文件的最前面
C) 可位于用户字定义函数之前,也可位于用户自定义函数之后 D) 必须位于用户自定义函数的后面 6. 结构化程序设计不包括( )。
A) 最优化 B) 自顶而下,逐步细化
7. ( )是结构化程序设计应遵循的原则
A) B) C) D)
C) 模块化设计 D) 结构化编程
根据需要可使用嵌套基本控制结构表示程序逻辑
应使用顺序、选择、循环三种基本控制结构表示程序逻辑 选用的控制结构可有多个入口和一个出口 为提高程序效率,应尽量使用goto语句
C) 高级语言、字软语言和伪代码 D) 汇编语言、高级语言和低级语言
8. 描述一个算法可以有不同的方式常见的有() A) 机器语言、汇编语言和高级语言 B) 自然语言、流程图和伪代码 9. 下列叙述正确的是()
A) 花括号“{}“只能用作函数体的定界符
B) 注释部分可在C源程序单独占一行,也可以跟在一行语句后面 C) 分号是C语句之间的分隔符,并不调试一条语句的结束 D) 函数是C源程序的基本单位,所有函数名都可以由用户命名 10. 下面叙述错误的是()
A) 语句是构成C语言源程序的基本单位 B) 所有语句都必须以分号“;”结束
11. 能将C源程序转换为目标程序的软件是()
A) 编译程序
C) C语言源程序必须包含一个main()函数 D) 注释部分在程序编译和运行时不起作用 C) 解释程序
6
B) 汇编程序 D) 编辑程序
12. 下面叙述中,( )不是结构化程序设计中的三种基本结构之一。
A) 数据结构 B) 选择结构 C) 循环结构
D) 顺序结构
2. 第二章(略)
3. 第三章 数据类型、运算符和表达式
1. ( )为合法的常量。 A) 5,236
B) 1.23E+8
2. 下列合法的浮点数的是()
A) .66 B) 123 3. 下列()是不正确的常量形式; A) ‘x5’ B) 1.6E6 4. ( )为正确的用户标识符。 A) min-5 B) max_at 5. 下列()是不合法的用户标识符 A) Div B) _f6 6. 合法的用户标识符是() A) 0.6f B) _struct 7. 正确的常量是() A) ‘a3’ B) “\\0” 8. 整型常量没有()形式
A) 十六进制
B) 十进制 9. 不合法的长整型常量是()
A) 1E10 B) 0L
10. 以下( )是正确的变量名。
A) a.bee
B) -p11
11. 以下( )是正确的变量名。
A) 5f
B) if
12. 以下( )是正确的常量。
A) E-5
B) 1E5.1
13. 以下( )是不正确的字符串常量。
A) 'abc'
B) \
14. 以下( )是正确的字符常量。
A) \
B) '\\\\'
C) ‘b_k’ D) 3.21E-6.5
C) 2E0.5 C) 1E-2 C) 3_row C) _num C) for C) 1E6.1 C) 二进制 C) 6246245 D) (Long)6246245
C) int
C) f.5
C) 'a12'
C) \
C) 'W' 7
D) E2
D) “\\0”
D) union
D) 5x
D) 5d
D) E-3
D) 八进制
D) p_11
D) _f5
D) 32766L
D) \
D) \
15. ( )为非法的字符串常量
A) “056”
B) ?123?
C) “
“
16. 下列不合法的字符常量是()
A) ‘\\\\’ C) ‘\\t’ B) “a”
D) ‘\\n’
17. char型变量存放的是( )。
A) ASCII代码值
C) 十进制代码值 B) 字符本身
D) 内码值
18. ()为正确的字符常量
A) ‘\\084’
B) ‘bcd’ C) ‘165’ 19. ()运算符不能用于非整型数据运算
A) /
B) %
C) *
20. 下列运算符中,优先级最高的是()
A) != B) &&
C) + 21. 若有定义:int b=-15;则()为正确的赋值表达式。 A) *b=6 B) b=*5 C) b+10=-5 22. 若有定义:float x=2,y; int a=3 ;语句y=1*(x+a)/3;运行后,y的值为( )。A) 2.0 B) 1.666667 C) 1.0 23. 若有定义:int a,b=5;语句a=(b/2)+b%2;运行后,a的值为(
)
A) 3
B) 4
C) 0
24. 若已经定义:int i,j,k; double x;则下列表达式中语法正确的是()
A) j+=(k=4)*j C) i=k+2j B) x%5
D) j+2=k
25. 若已定义:int n=10,i=4;则赋值运算n%=i+1执行后,n的值是()。
A) 1
B) 0
C) 2
26. 若已定义int k=5;float d=3.5;则表达式d+k%3/2的值为()
A) 4.5 B) 3.5 C) 4 27. 下面叙述正确的是( ) A) 2/3与2%3等价 C) ++2与- -3等价 B) 5/(int)4.0与5/4等价
D) ++2与3等价
28. 若有定义:int a,b=6;语句a=--b;运行后,a、b的值分别是()。
A) 6 6 B) 5 6 C) 5 5 29. 若有定义:int i=3,j=6;则表达式(--i)*(j++)的值为( )。
A) 10
B) 18
C) 15
30. 若已经定义:int i=5,j;则语句j=(++i)+(i--);运行后的j的值为() A) 11 B) 9 C) 10 31. 若已经定义:int x,y,z;则()是不正确。
A) x=y+=10*x;
B) x=10,y=6;
C) x=2.5;
8
D) “case”
D) ‘@’
D) ++
D) ++
D) b+=b*3
D) 0
D) 2
D) 3
D) 5.5
D) 6 5
D) 12
D) 12
D) z=y+x=30
32. 若已经定义: double x;下列可以用于求x的绝对值的数学函数是()
A) fabs(x)
B) sqrt(x)
C) abs(x)
33. 已知int a='R'; 则正确的表达式是( )。
A) a=int(3e2)
C) a=a+a=a+3
B) 2*a=a++
D) a
34. 已知char a='R'; 则正确的赋值表达式是( )。
A) a=(a++)%4
B) a+2=3
C) a+=256--
35. 语句a=(3/4)+3%2;运行后,a的值为( )。
A) 0
B) 1
C) 2
36. 设整型变量a为5,使b不为2的表达式是( )。
A) b=(++a)/3
B) b=6-(--a)
C) b=a%2
37. 设单精度型变量f、g的值均为2.0,使f为4.0的表达式是( )。
A) f+=g
B) f-=g+2
C) f*=g-6
38. 若有定义:int k,i=2,j=4;则表达式k=(++i)*(j--)的值是( )。
A) 8
B) 12
C) 6
39. 若有定义: int a=3;语句a+=a-=a*a;运行后,a的值为()
A) -6
B) 0
C) -12
40. 若有定义:int b=-15; 则()为正确的赋值表达式。
A) b=*5
B) *b=6
C) b+10=-5
41. 下面叙述正确的是( )。
A) 2/3 与 2.0/3.0 等价 C) ++5 与 6 等价B) (int)2.0/3 与 2/3 等价
D) 'A'与\等价
42. 若有定义int x=1,y=2,n=3;则()为正确的表达式。
A) x=y*3,y=(x+n)/y C) float(y/n)
B) (x+y)(y+n)
D) x=ny
43. 若有定义:float x=3.5;int z=8;则表达式 x+z%3/4 的值为( )。 A) 3.75 B) 3.5 C) 3 44. 若有定义:float x=3.5,y=3.6,则表达式()的值为6。 A) (int)x+(int)y C) int(x+y) B) (int)(x+y) D) x+y 45. 下面叙述正确的是()。
A) (3+9)++是正确的表达式
B) “abc”+”xxx”是正确表达式
C) c语言中整型与字符型变量的混合运算表达式的结果是整型 D) 模运算符%两边运算数的数据类型是任意的
46. 下列四个运算符,按优先级别由高到低排列的是()
A) !、%、=、== C) !、%、==、= B) %、!、==、= D) !、=、%、==
9
D) labs(x)
D) a='\\078'
D) 3
D) b=a/2
D) f/=g*10
D) 9
D) -3
D) b+=b*3
D) 4
47. 若已定义:int x=3,y=2;则下列不正确的赋值表达式是()
A) x-=x+=y; C) x-y=1;
B) x=y+2
D) x=2,y=2;
48. 若有定义:int x;char c=?A?;则正确的赋值表达式是().说明‘A’的ASCII码的十进制值为65,‘a’的ASCII码的十进制值为97 A) x=c+’ABC’ C) x=c+’CBA’ B) x=c+32 D) x=’ABC’ 49. 若有定义:char c1=?A?,c2=?B?;语句printf(“%d+%d=%d”,c1,c2,c1+c2); 运行后的结果为()。说明:‘A’的ASCII码的十进制值为65 A) 65+65=AB B) A+B=131 C) 65+66=131 50. 下面叙述错误的是()。 A) 算术运算符中只有“*”、“/”优先级高于关系运算符 B) 模运算符“%”是C语言基本的算术运算符
C) 算术运算符中不包含“=”运算符
D) 自加和自减运算符只能用于变量,而不能用于常量或表达式 51. 下面关于算术运算符的叙述,错误的是( )。
A) %(模运算符)的运算对象只能为整型量
B) 算术运算符的结合方向是\自左至右\C) 自加和自减运算符的结合方向是\自右至左\D) 其运算对象不包含函数
52. 若已定义:int x=11;double y=3.5;则表达式y/2+x%2/2的值是()
A) 3.5 B) 1.0 C) 1.5 53. 若已经定义:int x=2,y;则执行语句y=x%2+(--x);后y的值是() A) 0 B) 3 C) 1
54. 若已经定义:double x=3,y;int z=2;则语句y=(x+z)/2*z;执行后,y的值为() A) 4.0 B) 1.0 C) 1.25 55. 若已经定义:double x,y;则下列表达式不能正确计算(x-2)/3*y的是() A) (x-2)*y*1/3 C) y*(x-2)/3
B) y/3*(x-2)
D) (1/3)*(x-2)*y
56. 若已经定义:double x=2.5;则求x的平方的正确的函数调用是()
A) sqrt(x)
B) pow(x,2)
C) exp(x)
57. 若已经定义:double x;则 exp(x)+sqrt(x)/2所表示的数学式是(3)
10
D) A+B=AB D) 1.75
D) 2
D) 5.0
D) rand(2,x)