77范文网 - 专业文章范例文档资料分享平台

C练习答案(4、12章)(2)

来源:网络收集 时间:2020-04-17 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

习题解答

else

bonus=bonus10+(i-1000000)*0.01; printf(\}

习题十二

12.1 12.2 12.3

C C

写出下列程序段的运行结果。

(1)15

分析:在带参数宏声明中,宏展开后的赋值语句为k=10* (i)<(j)?(i):(j);由于*的优先级比<高,条件表达式的条件判断过程是:先计算10*i的结果,再与j值比较。由于10*10大于15,所以条件表达式取y的值,即15。 (2)7

-6

分析:宏展开后的语句为: a=5+1;

printf(\printf(\

第一个输出语句中的表达式值为7,第二个输出语句中a的值是6。 (3)9

分析:在宏声明PRINT(a)中使用已经声明的宏PR(a)。本题宏PRINT的实参是F(3)*x,包含了一个宏F,由于宏替换是直接照字符原样替换,替换后实参成为:3.84+3*x,用它来替换宏PRINT(a)中的a, 得到语句:printf(\ 3.84+3*x))。表达式的值是9.84,取整输出为9。 (4)c=15

分析:由于标识符DEBUG已在文件开始被#define命令声明过,主程序不执行第一个printf语句。 12.4

编写程序实现求a+b+c的值,要求使用宏。

2

2

2

分析:声明一个带参的宏S(x,y,z),在主函数调用并输出。

#include

#define S(x,y,z) ((x)*(x)+(y)*(y)+(z)*(z)) void main() { int a,b,c;

scanf(\ printf(\

习题解答

}

12.5 声明一个带参的宏 swap(x,y),实现两个整数的互换,并利用它将一维数组 a 和 b 的值进行交换。

分析:声明带参的宏 swap(x,y),注意宏中包含多个语句,在主函数的循环中调用它来实现数组值的交换。 #include

#define Swap(x,y) {t=x; x=y; y=t;} #define N 3 void main() { int a[N],b[N]; int i,t;

for(i=0;i

scanf(\ %d\ for(i=0;i

}

Swap(a[i],b[i]);

printf(\ %d\

for(i=0;i

12.6 设x=3.4,y=2.0,z=9.1,请写出一个宏Prin(x,y,z),要求此宏能输出如下: x = 3.4 y = 2.0 z = 9.1

分析:用宏来定义好输出格式,实数采用“%4.1f”的输出格式,每输出一个变量后换行。

#include

#define Prin(x,y,z) printf(\ void main() {

float a,b,c;

scanf(\ Prin(a,b,c); }

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C练习答案(4、12章)(2)在线全文阅读。

C练习答案(4、12章)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/986250.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: