1、1第 5 章 函数与预处理1利用递归函数调用方式,将所输入的 5 个字符以相反顺序打印出来。#include using namespace std;int main() int i=5;void palin(int n);cout using namespace std;int GCD(int a,int b) if(a%b=0)return b;elsereturn GCD(b,a%b);int main() int i,x,y;coutxy;i=GCD(x,y);2cout using namespace std;int fib(int n) if(n=0)return 1;else i
2、f (n=1)return 1;else int i;i=fib(n-1)+fib(n-2);return i;int main(void) int i,z;coutz;i=fib(z);cout using namespace std;int fact(int n) if(n=0|n=1) return 1;else return n*fact(n-1);int main() long s;s=fact(22)+fact(32);cout using namespace std;void nzp(int b,int n) int i;for(i=0;i0)coutai;nzp(a,5);co
3、ut using namespace std;float aver(int b,int m) int i,sum=0;float pjz;for(i=0;in;for(i=0;iai; cout using namespace std;int stringLength(char str)/*函数 ,求一个字符串的长度*/4 int length=0,i=0;while(stri+!=0) length+;return length;int main() char s1000;int len;coutusing namespace std;int month_days = 0, 31, 28,
4、31, 30, 31, 30, 31, 31, 30, 31, 30, 31;char month_m1310=“0“,“January“,“February“,“March“,“April“,“May“,“June“,“July“,“August“,“September“,“October“,“November“,“December“;char message315=“year error“,“month error“,“day error“;int y,m,d;int year(int y) if( (y%4 = 0 else return 0;int month(int m) if(m=
5、1if(y=y1value_input(year1,year2,message);coutusing namespace std;int f(int n) if(n=1|n=2) return 1;else return f(n-2)+f(n-1);int main() 6 int i,n;coutn;coutusing namespace std;float aver(int b,int n) int i,sum=0;float avg;for(i=0;imax) max=bi;return max;int min_value(int b,int n) int i,min;min=b0;fo
6、r(i=0;in;coutai;coutusing namespace std;long sum(int n) if(n=1) return 1;Else return n+sum(n-1);int main() int n;coutn;cout using namespace std; double fact(int n) double result=0; if (n=0) return 1; else return fact(n-1)*n; return result; double result(double m, double n) return fact(n)/(fact(n)*fa
7、ct(m-n);int main() double m=0,n=0;coutm;coutn;cout using namespace std; int acm(int m,int n) if(m=0)return n+1; if(n=0 if(n0 int main() int m,n; do coutmn;if(m using namespace std; #define MYALPHA(c) (c=acout using namespace std;#include #define S(a,b,c) (a+b+c)/2 #define AREA(a,b,c) sqrt(S(a,b,c)*(
8、S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c)int main()9 int a,b,c;coutabc;if(a(b+c)|(b(a+c)|(c(a+b)cout using namespace std;#define sum(n) (1+(n)*(n)/2int main() int n,sum;coutn;sum=sum(n);cout“the sum is “sumendl;return 0;17.写出程序的运行结果,并说明原因。(1)运行结果为:8原因:主函数定义的局部变量 a 和全局变量 a 同名,局部变量被赋值为 8,进行函数调用时的传递过去的值为 8
9、,8 和 3 进行比较求取最大值,返回 8,故此结果为 8。(2)运行结果为:333537原因:因为在函数 f 中 c 为静态存储变量,能够保留上一次循环时 c 的值,在第一次循环中 c 的值变为 7,a+b+c=20+6+7=33,在第二次循环时 c 的值变为7+2=9, a+b+c=20+6+9=35,在第三次循环时,c 的值变为 9+2=11,a+b+c=20+6+11=37, 所以结果为 33 35 37。(3)运行结果为:817原因:在函数 func 中使用了静态存储变量,原因与本题中( 2)的原因类似。(4)运行结果为:a= 300 b= 400a= 300 b= 400原因:调用
10、函数 printab 时,输出传递过去的参数 a,b 的值 300 和 400,printab 函数执行过程中改变了 printab 函数中局部变量 a,b 的值,并不影响 main 函数中的 a,b 的值,所以在 main 函数输出 a,b 的值时,依然是 300 和 400。(5)运行结果为:9310原因:在进行编译预处理时,x=3*(A+B(7)变成 x=3*(3+(3+1)*7),所以运行结果为93。(6)运行结果为:19原因:在编译预处理的过程中,循环变为:while(i=4)cout(i+)*(i+ );当 i=1 时,输出 1*1 的值,为 1,本次循环执行后 i 的值变成了 3,第二次循环输出3*3 的值,为 9,i 的值变成 5,退出循环。(7)运行结果为:a=8 b=9c=0原因:因为 DEBUG 在#define 中被定义,所以执行“cout“a=“a “b=“bendl;”语句,输出 a=8 b=9,输出后换行,再输出 a/b 的结果 c,c=0。