w=fun2(1.1,2.0); ?? }
A.5.21 B.5 C.5.0 D.0.0 11.以下程序执行时,给变量x输入10,程序的输出结果是________。
#include \int fun(int n)
{if(n==1)return 1;
elsereturn(n+fun(n-1)); } main() {int x;
scanf(\x=fun(x);
printf(\
A.45 B.54 C. 55 D. 65 12.以下叙述中错误的是________。
A.C程序必须由一个或一个以上的函数组成 B.函数调用可以作为一个独立的语句存在
C.若函数有返回值,必须通过return语句返回 D.函数形参的值也可以传回给对应的实参 13.以下叙述中正确的是________。
A.预处理命令行必须位于C源程序的起始位置 B.在C语言中,预处理命令行都以\开头
C.每个C程序必须在开头包含预处理命令行:#include \D.C语言的预处理不能实现宏定义和条件编译的功能 14.以下叙述中正确的是________。
A.局部变量说明为static,其生存期将得到延长 B.全局变量说明为static,其作用域将被扩大
C.任何存储类的变量在未赋初值时,其值都是不确定的 D.形参可以使用的存储类说明符与局部变量完全相同
15.在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则________。
A.称为函数的直接递归调用 B.C语言中不允许这样的递归调用 C.称为函数的循环调用 D.称为函数的间接递归调用 16.以下程序的输出结果是________。
#include \long fib(int n)
{ if(n>2)return(fib(n-1)+fib(n-2)); else return(2);} void main()
{ printf(\A.2 B.4 C.6 D.8
17.以下所列的各函数首部中,正确的是________。
A.void play(var:Integer,var b:Integer)B.void play(int a,b) C.void play(int a,int b) D.Sub play(a as integer,b as integer)
18.以下程序的输出结果是________。
#include \#define f(x) x*x void main()
{ int a=6,b=2,c; c=f(a)/f(b);
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[],intm,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 10C.5 10 10 D.5 5 10 23.下列程序的输出结果是________。 #include \ int fun(int x,int y,int cp,int dp) { 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 第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; 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(\} A.4 B.0 C.5 D.6 9.有如下程序段,执行后的输出结果是______。 #include { structa{int x;int y;}num[2]={{20,5},{6,7}}; printf(\ A.0 B.28 C.20 D.5 10.以下程序的运行结果是______。 #include typedef struct {char name[9]; char sex; float score[2];} STU; void f(STU a) { STU b={\ strcpy(a.name, b.name); a.sex=b.sex; for(i=0;i<2;i++) a.score[i]=b.score[i]; } main()