《C程序设计》期末复习练习题及参考答案(3)
一、单项选择题
1.若有定义int (*p)[4],则标识符p是一个 。
A)指向整型变量的指针变量 B)指向函数的指针变量
√C)指向有四个整型元素的一维数组的指针变量
D)指针数组名,有四个元素,每个元素均为一个指向整型变量的指针
2.下列对字符串的定义中,错误的是: 。 √A) char str[7] = \ B) char str[] = \C) char *str = \
D) char str[] = {'F','O','R','T','R','A','N',0};
3.针对下面程序段,下面哪些说法是正确的?
#include
void Swap(int *x, int *y); main() { int a, b; a = 5; b = 9;
Swap(&a, &b);
printf(\}
void Swap(int *x, int *y) { int *pTemp; *pTemp = *x; *x = *y;
*y = *pTemp; }
A) 程序运行结果为乱码;
B) 程序运行后将导致程序崩溃;
C) 程序编译时出错导致程序无法运行; √ D) 程序执行了危险的操作;
4.已知学生记录描述为:
struct student { int no; char name[20]; char sex; struct { int year; char month[15]; int day;
1
}birth; }; struct student s;
设变量s中的生日是1984年11月11日,下列对生日的正确赋值方式是_____ A) s.birth.year = 1984; s.birth.month = \B) s.birth.year = 1984; s.birth.month = 11; s.birth.day = 11;
√ C) s.birth.year = 1984; strcpy(s.birth.month, \ s.birth.day = 11; D) s.birth.year = 1984; strcpy(s.birth.month, 11); s.birth.day = 11;
5. 要使下面程序的输出1, 2, 34,则从键盘输入的数据格式应为 。
#include
{ char a,b;
int c;
scanf(\printf(\}
A)1 2 34 B)1, 2, 34 C)’1’,’2’,34 √ D)12 34
6. 以下选项中为合法整型常量的是( )。
A) -080 √B) -80 C) -8e1.0 D) -80.0e
7. 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为( )。
A) 4 B) 16 √C) 32 D) 52
8. 下列程序执行后的输出结果是( )。
#include
void func(int *a, int b[]) { b[0]=*a+6; } main()
{ int a,b[5]; a=0; b[0]=3;
func(&a,b); printf(\}
√A)6 B)7 C)8 D)9
9. 设有定义 char grade = 'A'; 则以下给出的程序运行结果或说法正确的是( )。
switch(grade) { case 'A': case 'B':
case 'C': printf(\ case 'D': printf(\
default : printf(\ }
A) >= 60 pass! B) < 60 C) error! √D) 以上结果都不正确
10. 以下程序执行后的输出结果是( )。
2
#include
{ int i = 1, j = 1, k = 2;
if((j++ || k++ ) && i++ ) printf(\return 0; }
A) 1,1,2 B) 2,2,1 √C) 2,2,2 D) 2,2,3
11. 执行完循环语句 for(i = 1; i < 10; i++); 后,以下关于变量i的值及循环体的执行次数的
说法正确的是( )。
A) i的值是9,循环体执行9次 B) i的值是9,循环体执行10次 √C) i的值是10,循环体执行9次 D) i的值是10,循环体执行10次
12. 以下程序的运行结果是( )。
#include
A) 6,7 B) 7,6 √C) 9,7 D) 7,9
13. 以下程序的运行结果是( )。
#include
A) 1 5 9 √B) 7 5 3 C) 3 5 7 D) 5 9 1
14. 下列可用于C语言用户标识符的一组是( )。
A)void, define, WORD √B)a3_3,_123,Car C)For, -abc, IF Case D)2a, DO, sizeof
15. 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为
( )。.
A) a<>0 B) !a C) a=0 √D) a!=0
16. 以下程序的输出结果是( )。
#include
{ int x=10,y=10;
3
printf(\
}
A) 9 9 √B) 10 9 C) 9 10 D) 10 10
17. 若有定义:char *name[] = {\,则name[2]
的值是( )。 A) 字符'G' B) 字符串\√C) 字符串\的首地址 D) 不确定
18. 有以下程序,程序执行后的输出结果是( )。
#include
int main()
{ char a[] = {\ p = &a[3]; fun(p); printf(\ return 0; }
√A) Prohsbn B) Prphsbn C) Progsbn D) Program
19. 下面列出的C语言提供的合法的数据类型关键字是( )。
A) Double √B) short C) integer D) Char
20. 字符(char)型数据在微机内存中的存储形式是( )。
A) 反码 B) 补码 C) EBCDIC码 √D) ASCII码
21. 设 int a=12,则执行完语句a+=a-=a*a后,a的值是( )。
A) 552 B) 264 C) 144 √D) -264
23. 能够完成如下函数计算的程序段是( )。
-1 x<0 Y= 0 x=0 1 x>0
A) y=1; √B) if (x>=0)
if(x!=0) if(x>0) y=1; if(x>0) y=1; else y=0; else y=0; else y=-1; C) y=0; D) y=-1;
if (x>=0) if (x>0) y=1; if (x>0) y=1; else y=0;
?
4
else y=-1;
24. 有如下程序
#include
{ int x=1,a=0,b=0; switch(x) {
case 0: b++; case 1: a++; case 2: a++;b++; }
printf(\ }
该程序的输出结果是( )。
√A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2
25. 下面程序的输出结果是( )。
#include
for(i=1;i<6;i++)
{ if (i%2!=0) {printf(\ printf(\ }
printf(\ }
√A) #*#*# B) ##### C) ***** D) *#*#*
26. C语言中while 和do-while 循环的主要区别是( )。. √A) do-while的循环体至少无条件执行一次
B) while 的循环控制条件比do-while 的循环控制条件严格C) do-while 允许从外部转到循环体内 D) do-while 的循环体不能是复合语句
27. 当对两个字符串进行比较时,应该使用的函数是( )。A) strcat √B) strcmp C) strcpy D)
28. 以下程序的运行结果是( )。 #include
printf(\
5
strlen