(C++)怎么按从大到小或从小到大的顺序输出,或者只输出最大或最小的呢?

下面这个是输出任意两个整数的所有的公约数,请问要如何改变才可以
(1)按从大到小或从小到大的顺序输出,
(2)输出所有公约数后再输出最小or最大的公约数
(3)只输出最大或最小的呢?
#include"iostream.h"
int min(int a,int b);
int main()
{
int a,b;
cout<<"请输入两个数字:";
cin>>a>>b;
a=min(a,b);
for(int i=1;i<=a;i++)
{
if(a%i==0&&b%i==0)
cout<<i<<' ';
}
return 0;
}
int min(int a,int b)
{
a=a>b?a:b;
return a;
}
修改

将a=a>b?a:b;改为a=a<b?a:b;

这个刚刚没注意,我要问的是如何改变才可以
(1)按从大到小或从小到大的顺序输出,
(2)输出所有公约数后再输出最小or最大的公约数
(3)只输出最大或最小的呢?

1,你这个程序都是从小找到大的着公约数,也就是说已经从小到大排序了,如果要从大到小,改下FOR循环
for(i=a;i>0;i++)就OK了
2,输出最小的,定义一个TEMP值,将最小的或者最大额存在里面,输出的时候输出temp就好了
3,只输出最大或者最小的就是在找到第一个后,break
#include"iostream"
using namespace std;
int min(int a,int b);
int main()
{
int a,b;
int temp[100],temp_n=0;
int j=0;
cout<<"请输入两个数字:";
cin>>a;
cin>>b;
a=min(a,b);
cout<<"所有的公约数:";
for(int i=1;i<=a;i++)
{
if(a%i==0&&b%i==0)
{
temp[temp_n]=i;
cout<<temp[temp_n]<<" ";
temp_n++;

}
}
temp[temp_n]='\0';

cout<<endl;
cout<<"最小公约数是:"<<temp[0]<<endl;
cout<<"最大公约数是:"<<temp[temp_n-1]<<endl;
return 0;
}
int min(int a,int b)
{
a=a>b?b:a;
return a;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-04
min这个函数错了,a=a>b?a:b是把大的赋值给a了,跟函数意思想反,
改成a=a>b?b:a,或者a=a<b?a:b,就可以了
相似回答