《C程序設計》(譚浩強著)課后答案下載
《c程序設計》是2010年清華大學出版社出版的圖書,作者是譚浩強。以下是由陽光網小編整理關于《C程序設計》(譚浩強著)課后答案下載地址,希望大家喜歡!
《C程序設計》(譚浩強著)課后答案預覽
9.1定義一個帶參的宏,使兩個參數的值互換,并寫出程序,輸入兩個數作為使用宏時的實參。輸出已交換后的兩個值。
#define CHANGE(a,b,t) t=a;a=b;b=a
main()
{int c,d,s;
scanf("%d,%d",&c,&d);
CHANGE(c,d,s);
printf("c=%d,d=%d\n",c,d);
}
9.2輸入兩個整數,求他們相除的余數。用帶參的宏來實現,編程序。
#define Q(a,b) a%b
main()
{int c,d,t;
scanf("%d %d",&c,&d);
t=Q(c,d);
printf("t=%d\n",t);
}
9.3三角形面積為:
其中S=(a+b+c)/2,a、b、c為三角形的三邊。定義兩個帶參的宏S,一個用來求area,另一個宏用來求。寫程序,在程序中用帶實參的宏名來求面積area。
#include"math.h"
#define SSS(m,n,k) (m+n+k)/2
#define AQRT(m,n,k) sqrt(SSS(m,n,k)*(SSS(m,n,k)-m)*(SSS(m,n,k)-n)*(SSS(m,n,k)-k))
main()
{float a,b,c,s,area;
scanf("%f %f %f",&a,&b,&c);
s=SSS(a,b,c);
area=AQRT(a,b,c);
printf("s=%.3f area=%.3f\n",s,area);
}
或
#include"math.h"
#define SSS(m,n,k) (m+n+k)*0.5
#define AQRT(m,n,k) sqrt(((m+n+k)/2)*((m+n+k)/2-m)*((m+n+k)/2-n)*((m+n+k)/2-k))
main()
{float a,b,c,t,area;
scanf("%f %f %f",&a,&b,&c);
t=SSS(a,b,c);
area=AQRT(a,b,c);
printf("t=%.3f;area=%.3f\n",t,area);
}
或
#include"math.h"
#define SSS(m,n,k) ((m+n+k)/2)
#define AQRT(m,n,k,m,n,k,m,n,k,m,n,k,m,n,k,m,n,k,m,n,k,m,n,k,m,n,k) sqrt(SSS*(SSS-m)*(SSS-n)*(SSS-k))
main()
{float a,b,c,t,area;
scanf("%f %f %f",&a,&b,&c);
t=SSS(a,b,c);
area=AQRT(a,b,c,a,b,c,a,b,c,a,b,c,a,b,c,a,b,c,a,b,c,a,b,c,a,b,c);
printf("t=%.3f;area=%.3f\n",t,area);
}
9.4給年份year,定義一個宏,以判別該年份是否閏年。提示:宏名可以定義為LEAP_YEAR,形參為y,既定義宏的.形式為
#define LEAP_YEAR(y) (讀者設計的字符串)
在程序中用以下語句輸出結果:
if (LEAP_YEAR(year)) printf("%d is a leap year",year);
else printf ("%d is not a leap year",year);
#define LEAPYEAR(y) y%4
main()
{int y;
scanf("%d",&y);
if(LEAPYEAR(y)) printf("%d is a not leap year\n",y);
else printf("%d is a lear year\n",y);
}
9.6請設計輸出實數的格式,包括:⑴一行輸出一個實數;⑵一行內輸出兩個實數;⑶一行內輸出三個實數。實數用"6.2f"格式輸出。
#define PR1(x) printf("%6.2f\n",x)
#define PR2(x) printf("%6.2f\t%6.2f\n",x,x)
#define PR3(x) printf("%6.2f\t%6.2f\t%6.2f\n",x,x,x)
main()
{float a;scanf("%f",&a);
PR1(a);PR2(a);PR3(a);
}
9.7設計所需的各種各樣的輸出格式(包括整數、實屬、字符串等),用一個文件名"fornat.h",把信息都放到這個文件內,另編一個程序文件,用命令#include "fornat.h"以確保能使用這些格式。
分別用函數和帶參的宏,從三個數中找出最大的數。
#define MAX(a,b,c) (a>((b>c)? b:c))? a:((b>c)? b:c)
main()
{float x,y,z,t;
scanf("%f,%f,%f",&x,&y,&z);
t=MAX(x,y,z);
printf("%.4f\n",t);
}
9.10用條件編譯方法實現以下功能:
輸入一行電報文字,可以任選兩種輸出,一為原文輸出;一為將字母變成其下一字母(如’a’變成’b’……’z’變成’a’其它字符不變)。用命令來控制是否要譯成密碼。例如:
#define CHANGE 1
則輸出密碼。若:
#define CHANGE 0
則不譯為密碼,按原碼輸出。
#define CHANGE 1
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);
}
或
#define CHANGE 1
main()
{char str[80],*c;int i=0;
gets(str);c=str;
while(*c!=’\0’)
{
#if CHANGE
if(*c==90||*c==122) *c=*c-25;
else if(*c>=65&&*c<90||*c>=97&&*c<122) *c=*c+1;
#endif
c++;
}
puts(str);
}
【《C程序設計》(譚浩強著)課后答案下載】相關文章: