函数和带参的宏,从三个数中找出最大的数
1041: C语言程序设计教程(第三版)课后习题9.8
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 5 Solved: 5
[Submit][Status][Web Board]
Description
分别用函数和带参的宏,从三个数中找出最大的数。
Input
3个实数
Output
最大的数,输出两遍,先用函数,再用宏。 保留3位小数。
Sample Input
1 2 3
Sample Output
3.000
3.000
关于宏定义,形式和应用的网址:
http://baike.baidu.com/view/2129127.htm?fr=aladdin
#include<iostream> #include<stdio.h> #define max(s,t,u) (s>=t)?((s>=u)?s:u):((t>=u)?t:u) using namespace std; double zuida(double a,double b,double c) { double max; if(a>b) max=a; else max=b; if(max<c) max=c; return max; } int main() { double a,b,c,d,e; while(scanf("%lf%lf%lf",&a,&b,&c)!=EOF) { d=zuida(a,b,c); printf("%.3lf\n",d); e=max(a,b,c); printf("%.3lf\n",e); } return 0;
#include<iostream> #define jiaohuan(a,b) {int t;t=a;a=b;b=t;} using namespace std; void reverse(int a,int b) { int t;t=a;a=b;b=t; } void change(int &a,int &b) { int t;t=a;a=b;b=t; } int main() { int x,y; cin>>x>>y; jiaohuan(x,y);//利用宏就可以直接x,y进行交换 cout<<x<<" "<<y<<endl; reverse(x,y);//a,b交换,但对x,y没有影响 cout<<x<<" "<<y<<endl; change(x,y);//引用别名,x,y交换 cout<<x<<" "<<y<<endl; return 0; }
输入样例:
1 10
输出
10 1
10 1
1 10