Solotravel


私信TA

用户名:huodongquan

访问量:4649

签 名:

我该用怎样的速度才能和你相遇?

等  级
排  名 5072
经  验 1596
参赛次数 0
文章发表 9
年  龄 0
在职情况 学生
学  校
专  业 电子信息工程

  自我简介:

//开发环境: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 人评分

  评论区

厉害
2020-03-21 20:56:27
  • «
  • 1
  • »