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