《程序设计基础教程 C语言 教学课件 ppt 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1_ 第9章》由会员分享,可在线阅读,更多相关《程序设计基础教程 C语言 教学课件 ppt 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1_ 第9章(3页珍藏版)》请在金锄头文库上搜索。
1、第9章习题9-1定义一个带参数的宏,使两个参数的值互换。设计主函数调用宏将一维数组a和b的值进行交换。/*c9_1.c*/#include #define change(x,y) t=x;x=y;y=tvoid main(void)int x,y,t;printf(Input two numbers: );scanf(%d%d,&x,&y);change(x,y);printf(x=%d,y=%dn,x,y);习题9-2定义一个判断某年year是否为闰年的宏,设计主函数调用之。/*c9_2.c*/#include #define leap(x) (x%4=0&x%100!=0)|x%400=0
2、void main() int year; scanf(%d,&year); if(leap(year) printf(%d is leap year!n,year); else printf(%d is NOT leap year!n,year);习题9-3编写一个程序,求出三个数中的最大数,要求用带参数的宏实现。/*c9_3.c*/#include #define max2(a,b) (ab?a:b)#define max3(a,b,c) max2(a,b)c?max2(a,b):cvoid main(void)int a,b,c;float x,y,z;printf(输入三个整数:);s
3、canf(%d,%d,%d,&a,&b,&c);printf(最大整数为:%dn,max3(a,b,c);printf(输入三个实数:);scanf(%f,%f,%f,&x,&y,&z);printf(最大实数为:%gn,max3(x,y,z);习题9-4编写一个程序,将用户输入的一个字符串中大小写字母互换,即大写字母转换为小写字母,小写字母转换为大写字母。要求定义判断是大写、小写字母的宏以及大小写相互转换的宏。/*c9_4.c*/#include#define isupper(c) (c)=A & (c)=a & (c)=z)#define tolower(c) (isupper(c)?(c
4、)+(a-A):(c)#define toupper(c) (islower(c)?(c)-(a-A):(c)void main()char s20;int i;printf(输入字符串:);scanf(%s,s);for(i=0; si; i+)if(isupper(si)si=tolower(si);else if(islower(si)si=toupper(si);printf(转换的结果:%sn,s);习题9-5编写一个程序,求三角形的面积,三角形面积计算公式为:area=其中,s=(a+b+c)/2,a,b,c为三角形的边长。定义两个带参数的宏,一个用于求s,另一个求area。/*c
5、9_5.c*/#include#include#define s(a,b,c) (a+b+c)/2)#define area(a,b,c) (sqrt(s(a,b,c)*(s(a,b,c)-a)*(s(a,b,c)-b)*(s(a,b,c)-c)void main(void)float x,y,z,s;printf(输入x,y,z:);scanf(%f,%f,%f,&x,&y,&z);if(x+yz&x+zy&y+zx)s=area(x,y,z);printf(三角形面积=%gn,s);elseprintf(三边长不能构成一个三角形n);习题9-6设有变量a = 3 , b = 4 , c =
6、 5 , d = 1.2 , e = 2.23 , f = 43.56 , 编写程序,输入这些变量的值,并使程序输出为:a=3,b=4,c=*5d=1.2e=2.23f=43.5600*(其中表示空格)/*c9_6.c*/#include void main(void)int a,b,c;float d,e,f;printf(a=);scanf(%d,&a);printf(b=);scanf(%d,&b);printf(c=);scanf(%d,&c);printf(d=);scanf(%f,&d);printf(e=);scanf(%f,&e);printf(f=);scanf(%f,&f);printf(a=%3d,b=%-4d,c=*%dn,a,b,c);printf(d=%3.1fn,d);printf(e=%6.2fn,e);printf(f=%-10.4f*n,f);