昆明理工大学C语言程序设计课后习题答案

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 union con

{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 main()

{ structa{int x;int y;}num[2]={{20,5},{6,7}}; printf(\

A.0 B.28 C.20 D.5 10.以下程序的运行结果是______。 #include #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()

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4