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