注册 登录
编程论坛 C++教室

把 10个 整数的 中的 最小位和 第1位互换

honghong88 发布于 2011-11-13 22:00, 612 次点击

#include<iostream>
using namespace std;
#include<string >

int main()

{
void compare (int * );
void print (int *);
int  a[10],i,j;
cout<<"input";
for(i=0;i<10;i++)
cin>>a[i];

compare(a);
print(a);




}



void compare(int *a  )
{
int *p=0;
int i, k,m  ;
  p=a;
for(i=1;i<10;i++)
{if( *p > *(a+i)  )
{*p = *(a+i);
k=i;
}}
m=*a;

*a=*(a+k);
*(a+k)=m;



}


void print ( int *a  )
{int i;
for(i=0;i<10;i++)
  cout<<*(a+i)<<" ";
}

把 10个 整数的 中的 最小位和 第1位互换
 用这指针互换不了不知道什么啊

4 回复
#2
dhyco2011-11-14 15:05
void compare(int *a  )
{
int *p=0;
int i, k,m  ;
  p=a;
for(i=1;i<10;i++)
{if( *p > *(a+i)  )
{*p = *(a+i);
//改为:
p =a+i;
k=i;
}}
m=*a;

*a=*(a+k);
*(a+k)=m;
#3
跳跳鱼2011-11-14 19:28
回复 楼主 honghong88
还是没法互换哦!
#4
pjfjx12342011-11-14 23:35
#include<iostream>
using namespace std;
#include<string >

int main()

{
void compare (int * );
void print (int *);
int  a[10],i,j;
cout<<"input";
for(i=0;i<10;i++)
cin>>a[i];

compare(a);
print(a);




}



void compare(int *a  )
{
int *p=(int *)malloc(sizeof(int));
int i, k,m  ;
  *p=*a;
for(i=0;i<10;i++)
{if( *p > *(a+i)  )
{*p = *(a+i);
k=i;
}}
m=*a;

*a=*(a+k);
*(a+k)=m;



}


void print ( int *a  )
{int i;
for(i=0;i<10;i++)
  cout<<*(a+i)<<" ";
}
#5
hxcet2011-11-18 11:41
回复 楼主 honghong88
试试这个吧。。。
#include<iostream>
using namespace std;
void compare(int *);
void print(int *);
int main()
{
int a[10],i;
cout<<"请输入10个整数: "<<endl;
for(i=0;i!=10;i++)
cin>>a[i];
compare(a);
print(a);
return 0;
}

void compare(int* a)
{
int* p=a;
int i,j,m,k=0;
for(i=1;i!=10;i++)
{ if(*p>=*(a+i)) {p=(a+i);k=i;} }
m=*a;
*a=*(a+k);
*(a+k)=m;
for(j=1;j!=10;j++)
if(*(a+j)==*a) *(a+j)=*(a+k);
}

void print(int* a)
{
int i;
cout<<"执行comepare后: ";
for(i=0;i!=10;i++)
  cout<<*(a+i)<<" ";
cout<<endl;
}
1