重庆理工大学-C语言程序设计基础教程 - 习题答案(纪纲 - 金艳)(10)

2019-08-03 14:38

习题9

9.1 选择题

9.1.1 在宏定义#define PI 3.14159 中,宏名PI代替的是一个( D )。 A) 常量 B) 单精度数 C) 双精度数 D) 字符串

9.1.2 定义一个名为NEW(X)的宏,产生它的参数的负值,正确的语句是( C )。 A) #define NEW(X) -x B)#define NEW(X) x

C) #define NEW(X) (-x) D)#define NEW(X) (-x);

9.1.3 定义一个名为ABSVAL(X)的宏,产生它的参数的绝对值,正确的语句是( D )。 A) #define ABSVAL(X) (-x)

B) #define ABSVAL(X) (x<0 ? –x:x) C) #define ABSVAL(X) (x>0 ? x:-x) D) #define ABSVAL(X) ((x)<0 ?(-x):(x)) 9.1.4 下列格式中哪个是合法的( D)。

A) #define PI=3.14159 B) include "string.h" C) #include math.h; D) #define s(r) r*r 9.1.5 以下程序的输出结果是( B )。

#define MIN(x,y) (x)<(y)?(x):(y) main( )

{ int i=10,j=15,k; k=10*MIN(i,j);

printf("%d\\n",k); }

A) 10 B) 15 C) 100 D) 150 9.1.6 以下有关宏替换的叙述不正确的是( C )。

A) 宏替换只是字符替换 B) 宏名无类型

C) 宏名必须用大写字母表示 D) 宏替换不占用运行时间 9.1.7 设有以下宏定义,则执行语句“z=2*(N+Y(5+1));”后,z值为( C )。 #define N 3

#define Y(n) ((N+1)*n)

A) 42 B) 15 C) 48 D) 出错

9.1.8 设有以下定义:#define F(n) 2*n ,则表达式F(4+2)的值是( B )。 A) 12 B) 10 C) 22 D)20 9.1.9 关于预处理,以下叙述正确的是( B )。

A. 可以把define和if定义为用户标识符(即宏名或常量符号名)

B. 可以把define定义为用户标识符,但不能把if定义为用户标识符 C. 可以把if定义为用户标识符,但不能把define定义为用户标识符 D. define和if都不能定义为用户标识符 9.1.10 关于预处理,以下叙述正确的是( B )。

A. 预处理命令行必须位于C源程序的起始位置 B. 在C语言中,预处理命令行都以“#”开头

C. 每个C程序必须在开头包含预处理命令行:#include D. C语言的预处理不能实现宏定义和条件编译的功能

9.2 编程题

9.2.1 写出下列程序的运行结果,并上机予以验证。 #define LETTER 0 void main( )

{ char str[20]= "C Language",c; int i=0;

while( (c=str[i])!= '\\0' ) { i=i+1; #if LETTER

if( c>='a' &&c<='z' ) c=c-32; #else

if( c>='A' &&c<='Z') c=c+32; #endif

printf("%c",c); } }

运行结果: c language

9.2.2 写出下列程序的运行结果,并上机予以验证。

#define EXCH(a,b) { int t;t=a;a=b;b=t;} void main( ) { int x=5,y=9; EXCH(x,y);

printf("x=%d,y=%d\\n",x,y);

运行结果: x=9,y=5

9.2.3 写出下列程序的运行结果,并上机予以验证。 #define PR(x) printf("%d,",x) void main( )

{ int i,a[ ]={1,3,5,7,9,11,13,15},*p=a+5; for(i=3;i;i--) switch( i ) { case 1:

case 2: PR(*p++);break; case 3: PR(*(--p)); } }

运行结果: 9,9,11

9.2.4 编程,定义一个带参数的宏MAXD,计算从键盘输入两个数值中的最大值。 #include

#define maxd(x,y) x>y? x:y void main() {

int x,y;

printf(\ scanf(\

printf(\}

9.2.5 编程,定义一个带参数的宏,用来判断整数n是否能被5和7同时整除,其中n是由键盘任意输入的整型数据。 #include

#define cube(n) (n%5==0)&&(n%7==0)? 1:0 void main() {int n,t;

printf (\ scanf(\ t=cube(n); if (t==1) printf(\ else printf (\ }

9.2.6 编程,用条件编译方法实现以下功能:

输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一字母(如?a?变成?b?,……,?z?变成?a?),其他非字母字符不变。用#include命令来控制是否要译成密码。例如: #define CHANGE 1 则输出密码。若 #define CHANGE 0

则不译成密码,按原码输出。 #include \ #include \void main() {

char str[80],c; int i=0; gets(str);

while(str[i]!='\\0') { #if CHANGE if(str[i]==90||str[i]==122) str[i]=str[i]-25; else if(str[i]>=65&&str[i]<90||str[i]>=97&&str[i]<122) str[i]=str[i]+1; #endif i++; }

puts(str); }

习题10

10.1 填空题

10.1.1 C语言允许定义由不同数据项组合的数据类型,称为 结构 。 10.1.2 结构体 、 共用体 和 数组 都是C语言的构造类型。 10.1.3 结构体变量成员的引用方式是使用 · 运算符。

10.1.4 结构体指针变量成员的引用方式是使用 -> 运算符。 10.1.5 若有定义:

struct num {

int a ; int b ; float f ;

}n={1,3,5.0};

struct num *pn=&n ;

则表达式pn->b/n.a*(++pn->b)的值是 12 , 表达式(*pn).a+pn->f的值是 6.00000 。

10.1.6 C语言可以定义共用体类型,其关键字为 union 。

10.1.7 C语言允许用 typedef 声明新的类型名来代替已有的类型名。

10.1.8 链表中,每个结点包括两个部分:一个是存储数据元素的 数据域 ,另一

个是存储下一个结点地址的 指针域 。

10.1.9 相比于线性表顺序结构,链表比较方便 插入 和 删除 操作。 10.1.10 常用的内存管理函数有 malloc 、 calloc 、 free 。 10.2 选择题

10.2.1 有如下说明语句,则下面叙述不正确的是 。

struct stu {

int a ; float b ; }stutype;

A)struct是结构体类型的关键字 B)struct stu是用户定义的结构体类型

C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名 10.2.2 以下对结构类型变量的定义中不正确的是 。

A)#define STUDENT struct student B)struct student STUDENT { { int num;

int num ; float age ; float age;

}std1 ; }std1;

C)struct { D)struct {

int num ; int num ; float age ;

float age ; }student;

} std1 ; struct student std1 ;

10.2.3 当定义一个结构体变量时,系统分配给它的内存是 。

A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大的容量 D)结构中最后一个成员所需内存量 10.2.4 已知学生记录描述为:

struct student

{

int no ; char name[20]; char sex; struct {

int year; int month ; int day ; } birth ;

} s ; 设结构变量s中的“birth”应是“1985年10月1日”,则下面正确的赋值方式是 。

A)year=1985 B)birth.year=1985 month=10 birth.month=10

day=1 birth.day=1

C)s.year=1985 D)s.birth.year=1985 s.month=10 s.birth.month=10 s.day=1 s.birth.day=1 10.2.5 下面程序的运行结果是 。

main ( ) {

struct complx { int x; int y ;

} cnum[2]={1,3,2,7} ;

printf(“%d\\n”,cnum[0].y/cnum[0].x*cnum[1].x) ; }

A)0 B)1 C)2 D)6 10.2.6 以下对结构体变量成员不正确的引用是 。

struct pupil {

char name[20]; int age; int sex ; } pup[5], *p=pup ;

A)scanf(“%s”,pup[0].name); B)scanf(“%d”,&pup[0].age);

C)scanf(“%d”,&(p->sex)); D)scanf(“%d”,p->age); 10.2.7 若要利用下面的程序段使指针变量p指向一个存储整型变量的存储单元,则

在【】中应有的内容是 。 int *p ; p = 【】malloc(sizeof(int));

A)int B)int * C)(*int) D)

(int*)

10.2.8 当定义一个共用体变量时,系统分配给它的内存是 。

A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大的容量 D)结构中最后一个成员所需内存量 10.2.9 以下对C语言中共用体类型数据的叙述正确的是 。

A)可以对共用体变量直接赋值

B)一个共用体变量中可以同时存放其所有成员 C)一个共用体变量中不能同时存放其所有成员 D)共用体类型定义中不能出现结构体类型的成员 10.2.10 下面对typedef的叙述中不正确的是 。

A)用typedef可以定义多种类型名,但不能用来定义变量 B)用typedef可以增加新类型

C)用typedef只是将已存在的类型用一个新的标识符来代表 D)使用typedef有利于程序的通用和移植

10.3 编程题

10.3.1 编写一个函数output,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用output函数输出这些记录。


重庆理工大学-C语言程序设计基础教程 - 习题答案(纪纲 - 金艳)(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:单级斜齿圆柱齿轮减速器说明书例题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: