c++程序入門(二)——指針代碼舉例

題目1:輸入五個浮點數,存入數組中。然後分別按照升序和降序的方式排列輸出,再分別輸出最大值和最小值。

#include <iostream>
using namespace std;
const int M=5;
int main()
{
    int T,i,k=0;
    float a[M],*p;
    cin>>T;
    while(T--)
    {
        k++;
        for(i=0;i<M;i++)
        {
          cin>>a[i];
        }
        int x=a[0];
        int y=a[0];
        /*
        //使用數組的方法
        cout<<"case"<<k<<":"<<endl;
        for(i=0;i<M;i++)
            cout<<a[i]<<" ";//順序輸出

        cout<<endl;

        for(i=M-1;i>=0;i--)
            cout<<a[i]<<" ";//倒序輸出
        cout<<endl;

        //輸出最大值和最小值 
        for(i=1;i<M;i++)
        {
            if(x<a[i])
                x=a[i];
        }
     cout<<"Max:"<<x<<endl;

        for(i=1;i<M;i++)
        {
            if(y>a[i])
                y=a[i];
        }
    cout<<"Min:"<<y<<endl;
    */
        //使用指針
        cout<<"case"<<k<<":"<<endl;
        for(p=a;p<a+M-1;p++)
            cout<<*p<<" ";     //順序輸出
            cout<<endl;
        for(p=a+M-1;p>=a+1;p--)
            cout<<*p<<" ";    //倒序輸出

         p=a;
        for(i=1;i<M-1;i++)
        {
            if(*p<a[i])
                p=a+i;//p<a[i]的值,p指針後移i,直到循環結束,得到最大值
        }
        cout<<"Max:"<<*p<<endl;

        p=a;
        for(i=1;i<M-1;i++)
        {
            if(*p>a[i])
                p=a+i;//p<a[i]的值,p指針後移i,直到循環結束,得到最大值
        }
        cout<<"Min:"<<*p<<endl;
    }
}

題目2、編寫冒泡排序算法,使用指針將n個整型數據按從小到大的順序排序

void bubble(int a[],int n);
int main()
{
    int *p;
    int T, n,i,k=0;
    cin>>T;
    while(T--)
    {
        cin>>n;
        p=new int[n];
        for(i=0;i<n;i++)
            {
                cin>>p[i];
            }
        bubble(p,n);
        cout<<"case"<<k<<":"<<endl;
        for(i=0;i<n-1;i++)
            {
                cout<<p[i]<<" ";
            }
        cout<<p[i]<<endl;
    }
    return 0;
}

void bubble(int a[],int n)//冒泡排序法
{
    int i,j,t,*p=a;
    for(i=0;i<n-1;i++)
        for(j=0;j<n-i-1;j++)
        {
          if(*(p+j)>*(p+j+1))
          {
                t=*(p+j); //這裏要注意要有括號。指針的結合性從左向右,後移之後再用指針操作符
                *(p+j)=*(p+j+1);
                *(p+j+1)=t;
          }
        }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章