c++程序入门(二)——指针代码举例

来源:互联网 发布:阿里java校招面试 编辑:程序博客网 时间:2024/05/28 11:48

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