43. 设有以下说明语句: struct stu
{ int a; float b; } stutype;
则下面的叙述不正确的是 。 A.struct是结构体类型的关键字 B.struct stu是用户定义的结构体类型名 C.stutype是用户定义的结构体类型名 D.a 和 b都是结构体成员名 44. 若有如下定义
struct data
{ int x,y;} test1={10,20}, test2;
则以下赋值语句中错误的是 。 A. test2=test1; B. test2.x=test1.x; C. test2.x=test1.y D. test2={30,40};
45. 以下对结构体变量stu1中成员age的非法引用是 。 struct student
{ int age; int num;} stu1,*p; p=&stu1;
A. stu1.age B. student.age C. p->age D. (*p).age
46. 当说明一个共用体变量时,系统分配给它的内存是 。 A. 各成员所需内存量的总合 B.结构中第一个成员所需内存量 C.成员中占内存量最大者所需的容量 D.结构中最后一个成员所需内存量
47. 以下对C语言中共用体类型数据的叙述正确的是 。 A.可以对共用体变量名直接赋值
B.一个共用体变量中可以同时存放其所有成员 C.一个共用体变量中不能同时存放其所有成员 D.共用体类型定义中不能出现结构体类型的成员 48. 若有以下定义和语句: union data
{ int i; char c; float f;} a; int n;
则以下语句正确的是 。 A.a=5; B. a={2,?a?,1.2} C. printf(“%d\\n”,a); D. n=1;
49. 设有以下说明,则下面不正确的叙述是 。
union
{ int i; char c; float f;} un;
A. un所占的内存长度等于成员f的长度 B.un的地址和它的成员地址都是同一地址 C.un可以作为函数参数
D.不能对un赋值,但可以在定义un时对它初始化 50. C语言共用体类型变量在程序运行期间 A.所有成员一直驻留在内存中 B.只有一个成员驻留在内存中 C.部分成员驻留在内存中 D.没有成员驻留在内存中
51. 使用typedef定义一个新类型的正确步骤是 。 A.(2)、(4)、(1)、(3) B. (1)、(3)、(2)、(4) C.(2)、(1)、(4)、(3) D. (4)、(2)、(3)、(1) (1) 把变量名换成新类型名 (2) 按定义变量的方法写出定义体 (3) 用新类型名定义变量 (4) 在最前面加上关键则typedef
52. 下面对typedef的叙述中不正确的是 。 A.用typedef可以定义各种类型名,但不能用来定义变量 B.用typedef可以增加新类型
C.用typedef只是将已存在的类型用一个新的标识符来代表 D.使用typedef有利于程序的通用和移植
53. 下面试图为double说明一个新类型名real的语句中,正确定是 。 A.typedef real double; B. typedef double real; C. typedef real=double; D. typedef double=real;
54. 下面能正确进行字符串赋值操作的是 。
A. char s[5]={“ABCDE”}; B. char s[5]={?A?, ?B?, ?C?, ?D?, ?E?}; C. char *s; s=“ABCDE”; D. char *s; scanf(“%s”,s); 55. 下面程序段的运行结果是 。 char *s=”abcde”;
s+=2; printf(“%d”,s);
A. cde B. 字符c C. 字符c的地址 D. 无确定的输出结果 56. 下面程序段的运行结果是 。 char str[ ]=”ABC”, *p=str;
printf(“%d\\n”, *(p+3));
A. 67 B. 0 C. 字符C的地址 D.字符C 57. 下面程序段的运行结果是 。
char a[ ]=”language”, *p; p=a;
while(*p!=?u?){printf(“%c”,*p-32); p++;}
A. LANGUAGE B. language C. LANG D. langUAGE 58. 有如下说明语句,则以下不正确的叙述是 。 char a[ ]=”It is mine”; char *p=”It is mine”;
A. a+1表示的是字符t所在存储单元的地址 B.p指向另外的字符串时,字符串的长度不受限制 C.p变量中存放的地址值可以改变 D.a中只能存放10个字符 答案:
1.A 2.C 3.C 4.D 5.C 6.B 7.D 8.A 9.B 10.A 11.B 12.C 13.D 14.B 15.C 16.B 17.A 18.D 19.A 20.C 21.D 22.B 23.A 24.C 25.D 26.C 27.C 28.C 29.A 30.D 31.B 32.B 33.D 34.C
35.C 36.B 37. D 38. B 39. D 40. D 41. C 42. A 43. C 44. D 45. B 46.C 47.C 48.B 49.C 50.B 51.C 52. B 53. B 54.C 55.C 56. B 57. C 58. D 二、填空题
1. 程序的三种基本的控制结构是: 、 、 。 2. C语言中的每条基本语句以 作为结束符,每条复合语句以 作为结束符。
3. 关系表达式x+y>5的相反表达式为 。 4. 下面的程序段中循环体的执行次数是 。
a=10;b=0;
do{b+=2;a-=2+b;} while(a>=0); 5. 下面程序段的运行结果为 。
x=2;
do{printf(\
6. 已知int a[3][2]={3, 2, 1}; 则表达式“a[0][0]/a[0][1]”的值是 。 7. 若用数组名作为函数调用时的实参,则实际上传递给形参的是 。 8. 如果一个函数无返回值,定义它时函数类型应是 。 9. 预处理命令以 开头。
10. 指针类型变量用于存储 ,在内存中它占有一个存储空间。 11. 赋值语句在执行时先计算 ,再将该值转换成与 一致的值,并将值赋给左部变量。
12. 在程序中else总是与 的if配对,而不管程序的书写格式如何。 13. 在函数中使用 语句返回值。
14. 函数的形参在未被调用前 分配空间,函数形参的 要和实参相同。
15. 函数调用一般分 、 ,前者的特点是形参和实参各有独立的存储空间,形参的存储空间在函数被调用时才分配,形参内容的变化不影响实参,后者的特点是形参实参共用一个存储空间,形参内容的改变可以改变实参值。
16. 在传值调用中,实际是把实参的 传给形参。 17. int a[3]=3; 则a[2]= 。 18. int a[3]={1, 3, 5, 7}; 则 。
19. 数组由 和 构成,其数组元素的数据类型是 。
20. 声明长度为10的float型数组a,且初始化为0的语句是: 。
21. 指针是存放一个变量的 的变量。 22. 当数组名作形参时,相当于 。
23. 要访问数组元素可以采用 、 、 。
24. 定义一个指针p,它指向一个有6个整型元素的一维数组,定义语句为 。
25. 定义一个指针数组p,它有4个元素,每个指针指向一个整型数据,定义语句为 。
26. 指针可以指向字符串,在定义一个字符型指针时,可以给它初始化,目的是把字符串的 放入指针变量。
27. 指针可以指向函数,这时它所指的是函数的 。
28. C语言的源程序必须通过 和 后,才能被计算机执行。 29. C语言源程序文件的后缀是 ;经过编译后,生成文件的后缀是 ;经过连接后,生成文件的后缀是 。
30. 在C语言中,表示逻辑“真”值用 。
31. 设y为int型变量,请写出描述“y是奇数”的表达式 。 32. C语言提供的3种逻辑运算符是 、 和 。
33. 若x、y、z均为int型变量,则描述“x或y中有一个小于z”的表达式是 。
34. 设a、b、c均为int型变量且a=7.5, b=2,c=3.6, 则表达式a>b && c>a || ab 的值是 。
35. 设a、b、c均为int型变量且a=6, b=4,c=2, 则表达式!(a-b)+c-1 && b+c/2的值是 。
36. 设a、b均为int型变量且a=2, b=4, 则表达式!(x=a) || (y=b) && 0的值是 。
37. 设a、b、c均为int型变量且a=1, b=4,c=3, 则表达式!(a
38. 若有条件“2 1. 顺序结构 选择结构 循环结构 2. ; } 3. 4. 5. 6. x+y<=5 3 ** 1 7. 数组首地址 8. 内置函数 9. # 10. 所指变量的地址 11. 表达式的值 左部变量类型 12. 它前面最近且未配对 13. return 14. 不 类型及数量 15. 传值调用 传址调用 16. 值 17. 0 18. 会出错 19. 数组名 下标 相同的