flag=0; } } 7.16
#i nclude
{int c,i,flag,flag1; char t[MAX]; i=0; flag=0;
flag1=1;
while((c=getchar())!='\\0'&&i {if(c>='0'&&c<='9'||c>='A'&&c<='F'||c>='a'&&c<='f') {flag=1; t[i++]=c; } else if(flag) {t[i]='\\0'; printf(\ printf(\ c=getchar(); if(c=='n'||c=='N') flag1=0; else {flag=0; i=0; } } } } htoi(s) char s[]; {int i,n; n=0; for(i=0;s[i]!='\\0';i++) {if(s[i]>='0'&&s[i]<='9') n=n*16+s[i]-'0'; if(s[i]>='a'&&s[i]<='f') n=n*16+s[i]-'a'+10; if(s[i]>='A'&&s[i]<='F') n=n*16+s[i]-'A'+10; } 31 return(n); } 7.17 #i nclude {int i; if((i=n/10)!=0) convert(i); putchar(n+'0'); } main() {int number; scanf(\ if(number<0) {putchar('-'); number=-number; } convert(number); } 7.18 main() {int year,month,day; int days; scanf(\ days=sum_day(month,day); if(leap(year)&&(month>=3)) days+=1; printf(\} static int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31} int sum_day(month,day) int month,day; {int i; for(i=1;i int leap(year) int year; {int leap; leap=year%4==0&&year0!=0||year@0==0; 32 return(leap); } 第八章 编译预处理 8.1 #define SWAP(a,b) t=b;b=a;a=t main() {int a,b,t; scanf(\ SWAP(a,b); printf(\} 8.2 #define SURPLUS(a,b) ((a)%(b)) main() {int a,b; scanf(\ printf(\} 8.3 #i nclude\ #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))) main() {float a,b,c; scanf(\ if(a+b>c&&b+c>a&&a+c>b) printf(\ else printf(\} 8.4 #define LEAP(y) (y%4==0)&&(y0!=0)||(y@0==0) main() {int year; scanf(\ if(LEAP(year)) printf(\ else printf(\} 33 8.5 printf(\ printf(\ printf(\输出结果: value=5.000000ormat \value=3.000000ormat \ 8.6 \#define NL \#define Fs \#define F \#define F1 F NL #define F2 F \#define F3 F \main() {float a,b,c; scanf(Fs,&a); scanf(Fs,&b); scanf(Fs,&c); PR(NL); PR(F1,a); PR(F1,b); PR(F1,c); PR(NL); PR(F2,a,b); PR(F1,c); PR(NL); PR(F3,a,b,c); } 8.7 /*format.h文件*/ #define DIGIT(d) printf(\#define FLOAT(f) printf(\#define STRING(s) printf(\/*用户文件*/ #i nclude\main() {int d,num; float f; char s[80]; 34 scanf(\ switch(num) {case 1:scanf(\ DIGIT(d); break; case 2:scanf(\ FLOAT(f); break; case 3:scanf(\ STRING(s); break; default:printf(\ } } 8.8 main() {int a,b,c; scanf(\ printf(\} max(a,b,c) int a,b,c; {int t; t=x>y?x:y; return(t>z?t:z); } #define MAX(a,b) ((a)>(b)?(a):(b)) main() {int a,b,c; scanf(\ printf(\} 8.10 #i nclude\#define MAX 80 #define CHANGE 1 main() {char str[MAX]; int i; scanf(\ #if(CHANGE) 35