printf(\A.9 B.18 C.36 D.6 19.下列程序的运行结果为________。
#include \#define MA(x) x*(x-1) void main() { int a=1,b=2;
printf(\A.5 B.6 C.7 D.8 20.以下程序的输出结果是________。
#include \f(int b[],int m,int n) { int i,s=0;
for(i=m;i { int x,a[]={1,2,3,4,5,6,7,8,9}; x=f(a,3,7); printf(\A.10 B.18 C.8 D.15 21.下列的结论中只有________是正确的。 A.所有的递归程序均可以采用非递归算法实现 B.只有部分递归程序可以用非递归算法实现 C.所有的递归程序均不可以采用非递归算法实现 D.以上三种说法都不对 22.以下程序的运行结果为________。 #include \int x=2; int fun(int p) { static int x=3; x+=p; printf(\ return (x); } void main() { int y=3; printf(\ A.5 10 20 B.5 6 10 C.5 10 10 23.下列程序的输出结果是________。 #include \ int fun(int x,int y,int cp,int dp) 46 D.5 5 10 { cp=x*x+y*y; dp=x*x-y*y; } void main() { int a=4,b=3,c=5,d=6; fun(a,b,c,d); printf(\A.16 9 B.4 3 C.25 9 D.5 6 24.以下程序输出的结果是________。 #include \long fun(int n) { long s; if(n==1||n==2) s=2; else s=n-fun(n-1); return s; } main() { printf(\A.1 B.2 C.3 D.4 25.阅读下面的程序: #include \void main() { int swap(); int a,b; a=3;b=10; swap(a,b); printf(\swap(int a,int b) { int temp; temp=a; a=b; b=temp; } 下面的说法中,正确的是________。 A.在main()函数中调用swap()后,能使变量a和b的值交换 B.在main()函数中输出的结果是:a=3,b=10 C.程序第2行的语句int swap();是对swap()函数进行调用 D.swap()函数的类型是void 四、习题答案 (一)、是非题 1.A 2.A 3.B 4.B 5.A 6.B 7.A 8.B 9.B 10.B 11.B 12.B 13.B 14.B 15.A (二)、选择题 1.C 2.B 3.A 4.C 5.D 6.A 7.B 8.D 9.B 10.C 47 11.C 12.D 13.B 14.A 15.D 16.B 17.C 18.C 19.B 20.A 21.B 22.C 23.D 24.A 25.B 48 第7章 结构体 二、习题 (一)、是非题 1.结构体变量所占用空间是全部成员占用空间之和。 A.对 B.错 2.共用体可以作为结构体的成员,但结构体不能作为共用体的成员。 A.对 B.错 3.结构体中各个成员的数据类型必须是相同的。 A.对 B.错 4.有以下定义的结构体: typedef struct student { int num; char name[10]; int age; } stu1; 则,struct student 是结构体变量名。 A.对 B.错 5.枚举类型中,枚举值是常量,不能再在程序中对其赋值。 A.对 B.错 6.typedef的作用是给数据类型取一个别名。 A.对 B.错 7.如果两个结构体变量有相同的类型,则可以把其中一个结构体变量的值整体赋值给另一个结构体变量。 A.对 B.错 8.一个共用体变量可以有多个数据成员,这些数据成员共享同一个存储空间,但如果空间不够用可以临时由系统分配。 A.对 B.错 9.结构体变量可以整体赋值,但不能整体比较。 A.对 B.错 10.在定义了枚举变量后,系统才为该变量分配内存空间。 A.对 B.错 (二)、选择题 1.在定义一个共用体变量时,系统分配给它的内存是______。 A.各成员所需内存之和 B.第一个成员所需内存 C.成员中占用内存最大者 D.任意一个成员所需内存 2.以下结构体的定义语句中,正确的是______。 A.struct student {int num; char name[10];int age;};stu; B.struct {int num; char name[10];int age;}student; struct student stu; C.struct student {int num; char name[10];int age;}stu; D.struct student {int num; char name[10]; int age;}; student stu; 49 3.如有定义的枚举类型: enum week_day{Wed=3,Thu,Fri,Sat,Sun,Mon,Tue}everyday; 则,Mon的值为______。 A.1 B. 2 C. 8 D. 5 4.有如下定义的结构体类型: struct data { int year; int month; int day; }workday; 对其中成员month的正确引用方式是______。 A.data.month B.data.year.month C.month D.workday.month 5.已知对学生记录的描述为: struct student { int num; char name[20],sex; struct{ int year,month,day; }birthday; }; struct student stu; 设变量stu中的“生日”是“1995年11月12日”,对“birthday”正确赋值的程序是______。 A.year=1995;month=11;day=12; B.stu.year=1995;stu.month=11;stu.day=12; C.birthday.year=1995;birthday.month=11;birthday.day=12; D.stu.birthday.year=1995;stu.birthday.month=11;stu.birthday.day=12; 6.下列关于枚举类型的描述不正确的是______。 A.可以在定义枚举类型时对枚举元素进行初始化 B.在赋值时,不可以将一个整数赋值给枚举变量 C.枚举变量不可以进行关系运算 D.枚举变量只能取对应枚举类型的枚举元素表中的元素值 7.有如下的说明: union test { int a; char c; }test1; 则在VC环境下sizeof(union test) 的结果是______。 A.4 B.2 C.5 D.3 8.以下程序的运行结果是______。 #include { struct {int x,y,z;}m; int i; }num; main() { num.m.x=4;num.m.y=5;num.m.z=6;num.i=0; printf(\ 50