C++编程代码修改

来源:百度知道 编辑:UC知道 时间:2024/09/22 03:40:53
1-18设有3个值大小不同的整数a、b和c,试编写一个C++函数,求
(1) 其中值最大的整数;
(2) 其中值最小的整数;
(3) 其中位于中间值的整数。

题目如上
我做的代码如下 帮我修改一下
//1_15.cpp
#include <iostream>
using namespace std;

int max(int a,int b,int c) {
int data[3]={a,b,c};
int m=0;
for (int i=1;i<3;i++)
if (data[i]>data[m]) m=i; //m记录新的最大者
return data[m];
}

int min(int a,int b,int c) {
int data[3]={a,b,c};
int m3=0;
for (int i=1;i<3;i++)
if (data[i]<data[m3]) m3=i;
return data[m3];
}

int mid(int a,int b,int c) {
int data[3]={a,b,c};
int m1=0,m2=-1; //m1指示最小整数,m2指示次小整数
for (int i=1;i<3;i++)
if (data[i]<data[m1]) { m2=m1; m1=i;} //原来最小变为次小,m1指示新的最小
else if (m2 ==-1 || data[i] < data[m2]) m2=i; //m2记录新的次小者
return data[m2];
}

void main() {
int a,b,c;
cout <

简化一下好了:
#include<iostream>
using namespace std;

void change(int &m,int &n)//用来交换m和n的值
{
int tmp;
tmp=m;
m=n;
n=tmp;
}
void CMP(int a,int b,int c)//比较并输出结果
{
if(a<b)
change(a,b);//先比较前两个数
if(b<c)
change(b,c);//再比较交换后的后两个数
if(a<b)
change(a,b);//再比较交换后的前两个数
cout<<"最大的数是:"<<a<<endl;
cout<<"最小的数是:"<<b<<endl;
cout<<"中间的数是:"<<c<<endl;
}
int main()
{
int a,b,c;
cout << "请输入三个值大小不同的整数:";
cin >>a>>b>>c;
CMP(a,b,c);
return 0;
}

晕!既然你定义了函数 为什么不用呢?函数写得也没错
int data[3]={a,b,c};
int m=0;
int m3=0;
int m1=0,m2=-1;
cout<<"最大的数是:"<<data[m];
cout<<"最小的数是:"<<data[m3];
cout<<"中间的数是:"<<data[m