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

求大神解惑,输出不对,求求了,(顺便说说,我是新手)谢谢

zhouykddd 发布于 2014-04-13 18:35, 659 次点击
/*输入十个数,将最大的数排到第一位,最大数排到最后一位
    用三个函数(1)输入十个数(2)处理函数(3)输出函数*/

#include<iostream>
using namespace std;
void input(int*shuzhu)
{
    cout<<"请输入10个整数:";
    for(int i=0;i<10;i++)
        cin>>shuzhu[i];
}
void chuli(int*shuzhu)
{
    int nummin=*shuzhu,nummax=*shuzhu,q,w,tmp;
    for(int j=1;j<=10;j++)
        if(nummin>*(shuzhu+j))
            q=j;
        if(nummax<*(shuzhu+j))
            w=j;
    tmp=*(shuzhu+q);
    *(shuzhu+q)=*shuzhu;
    *shuzhu=tmp;
    tmp=*(shuzhu+w);
    *(shuzhu+w)=*(shuzhu+9);
    *(shuzhu+9)=tmp;
}
void output(int*shuzhu)
{
    cout<<"处理后的排序为:";
    for(int i=0;i<10;i++)
        cout<<shuzhu[i]<<" ";
}
int main()
{
    int number[10];
    input(number);
    chuli(number);
    output(number);
    return 0;
}
6 回复
#2
紫罗兰丹丹2014-04-14 06:46
排序问题用个冒泡排序或者快速排序法就行吧?为什么非要用指针指来指去呢?好晕啊+_+
最简单的冒泡排序。。
void bubble
{
   int i,temp;
   for(int pass=1;pass<size;pass++) //共进行size-1轮比较
   {
        for(i=0;i<size-pass;i++)//比较一轮
           if(a[i]>a[i+1])
           {
              temp=a[i];
              a[i]=a[i+1];
              a[i+1]=temp;
           }
   }
}

...应该是这样emoij...
同样新手..本能的不喜欢用指针。。
大神们.多多包涵~emoij
#3
zhouykddd2014-04-14 17:51
回复 2楼 紫罗兰丹丹
这是那一章的习题,叫我们用指针,谢谢指教
#4
zhouykddd2014-04-14 17:56
回复 2楼 紫罗兰丹丹
题目要求是把最小的拍到第一位,最大的排到最后一位,其他数的位置不变
#5
rjsp2014-04-15 08:32
程序代码:
#include <iostream>
#include <utility>
using namespace std;

void foo1( int vals[] )
{
    cout<<"请输入10个整数:";
    for( size_t i=0; i!=10; ++i )
        cin >> vals[i];
}

void foo2( int vals[] )
{
    int minidx=0, maxidx=9;

    for( size_t i=0; i!=10; ++i )
    {
        if( vals[minidx] > vals[i] )
            minidx = i;

        if( vals[maxidx] < vals[i] )
            maxidx = i;
    }

    std::swap( vals[0], vals[minidx] );
    if( maxidx == 0 )
        maxidx = minidx;

    std::swap( vals[9], vals[maxidx] );
}

void foo3( int vals[] )
{
    cout << "处理后的排序为:";
    for( size_t i=0; i!=10; ++i )
        cout << " " << vals[i];
    cout << endl;
}

int main()
{
    int vals[10];
    foo1( vals );
    foo2( vals );
    foo3( vals );

    return 0;
}
#6
lplumblossom2014-04-15 18:21
#include<iostream>
using namespace std;
void input(int *shuzhu)
{
    cout<<"请输入10个整数:";
    for(int i=0;i<10;i++)
        cin>>shuzhu[i];
}
void chuli(int *shuzhu)
{
    int nummin=*shuzhu,nummax=*shuzhu,q=0,w=0,tmp;
    for(int j=1;j<10;j++)
    {
        if(nummin>*(shuzhu+j))
        {
            nummin=*(shuzhu+j);
            q=j;
        }
        if(nummax<*(shuzhu+j))
        {
            nummax=*(shuzhu+j);
            w=j;
        }
    }
    tmp=*(shuzhu+q);
    *(shuzhu+q)=*shuzhu;
    *shuzhu=tmp;
    if(w==0)
        w=q;
    tmp=*(shuzhu+w);
    *(shuzhu+w)=*(shuzhu+9);
    *(shuzhu+9)=tmp;
}
void output(int *shuzhu)
{
    cout<<"处理后的排序为:";
    for(int i=0;i<10;i++)
        cout<<shuzhu[i]<<" ";
    cout<<endl;
}
int main()
{
    int number[10];
    input(number);
    chuli(number);
    output(number);
    return 0;
}
#7
骚年来一发2014-04-18 19:18
#include<iostream>
using namespace std;
int number[10];  //定义为外部变量
void input(int*shuzhu)
{
    cout<<"请输入10个整数:";
    for(int i=0;i<10;i++)
        cin>>shuzhu[i];
}
void chuli(int*shuzhu)//这个指针指向向的是 number【0】
{
    int q,w,a,tmp;
    for(q=0;q<=10-2;q++)
    {  
       a=q;
      for(w=q+1;w<=9;w++)
      {
       if(*(shuzhu+a)>*(shuzhu+w))
         a=w;
      }
         tmp=*(shuzhu+q);
         *(shuzhu+q)=*(shuzhu+a);
         *(shuzhu+a)=tmp;

     }
}
  

   

void output(int*shuzhu)
{
    cout<<"处理后的排序为:";
    for(int i=0;i<10;i++)
        cout<<shuzhu[i]<<" ";
}
int main()
{
  
    input(number);
    chuli(number);
    output(number);
    return 0;
}
1