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;
          }
        }
}

猜你喜欢

转载自blog.csdn.net/zhangying_496/article/details/78278473