//开发环境:VS2010 #include "stdafx.h" void WayOne();//方法1 void WayTwo();//方法2... void WayTwo_exchange(int *num1,int *num2); void WayThree(); void WayFour(); void WayFour_exchange(int& a,int& b); void WayFive(); void WaySix(); int _tmain(int argc, _TCHAR* argv[]) { //思路:对输入的三个数排序,重新存储,a最小,c最大. 缺点:改变了原值 //WayOne(); //WayTwo(); //对wayone的优化,指针的使用。 //WayThree();//数组排序 //WayFour();//引用的使用 //思路:先找到最小值,输出,再对比剩下的,输出较小的,...逐一找最小值,逐一输出,不改变原值,数据多时效率较低 // WayFive();//最原始的比较,树形图 WaySix();//三目运算符求:最小值,中间值,最大值 return 0; } /*********************************WayOne**********************************************/ void WayOne() { //思路:对输入的三个数排序,重新存储,a最小,c最大 int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a>b) { b+=a; a=b-a; b=b-a; } if(b>c) { c+=b; b=c-b; c=c-b; } if(a>b) { b+=a; a=b-a; b=b-a; } printf("%d %d %d\n",a,b,c); } /***********************************WayTwo*******************************************/ void WayTwo() { int a,b,c; scanf("%d%d%d",&a,&b,&c); WayTwo_exchange(&a,&b); WayTwo_exchange(&b,&c); WayTwo_exchange(&a,&b); printf("%d %d %d\n",a,b,c); //或者,将函数改成宏函数, #define EXCHANGE(num1,num2) if(num1>num2){num1+=num2;num2=num1-num2;num1=num1-num2;} } void WayTwo_exchange(int* num1,int* num2) //指针,地址传递 { if(*num1>*num2) { *num2+=*num1; *num1=*num2-*num1; *num2=*num2-*num1; } } /**********************************WayThree*******************************************/ void WayThree() { int i,j,a[3]; for(i=0;i<3;i++) scanf("%d",&a[i]); for(i=0;i<2;i++) for(j=i+1;j<3;j++) if(a[i]>a[j]) { a[i]+=a[j]; a[j]=a[i]-a[j]; a[i]=a[i]-a[j]; } for(i=0;i<2;i++) printf("%d ",a[i]); printf("%d\n",a[i]); } /************************************WayFour*******************************************/ void WayFour() { int a,b,c; scanf("%d%d%d",&a,&b,&c); WayFour_exchange(a,b); WayFour_exchange(b,c); WayFour_exchange(a,b); printf("%d %d %d\n",a,b,c); } void WayFour_exchange(int& a,int& b)//与指针的地址传递不一样,它是直接使用变量,不存在分配地址 { if (a>b) { b+=a; a=b-a; b=b-a; } } /***********************************WayFive*******************************************/ void WayFive() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a<b) if(b<c) printf("%d %d %d\n",a,b,c); else if(a<c) printf("%d %d %d\n",a,c,b); else printf("%d %d %d\n",c,a,b); else if(a<c) printf("%d %d %d\n",b,a,c); else if(b<c) printf("%d %d %d\n",b,c,a); else printf("%d %d %d\n",c,b,a); } /************************************WaySix*******************************************/ void WaySix() { int a,b,c,Min,Med,Max; scanf("%d%d%d",&a,&b,&c); Min=(a<b?a:b)<c?(a<b?a:b):c; Max=(a>b?a:b)>c?(a>b?a:b):c; // Med=(a<b?b:a)<c?(a<b?b:a):((a<b?a:b)<c?c:(a<b?a:b)); Med=a<b?(b<c?b:(a<c?c:a)):(a<c?a:(b<c?c:b)); // Med=a+b+c-Max-Min; printf("%d %d %d\n",Min,Med,Max); } /**************************************END********************************************/
0.0分
3 人评分
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:1432 |
兰顿蚂蚁 (C++代码)浏览:1159 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1314 |
C语言训练-大、小写问题 (C语言代码)浏览:792 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:651 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:721 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:331 |
前10名 (C语言代码)浏览:773 |
勾股数 (C语言代码)浏览:830 |
买不到的数目 (C语言代码)浏览:3134 |