题目1描述:
在主函数中输入n个整数到数组中,调用函数(使用指针)完成将数组中的最小值与第0个元素对调,将数组中的最大值与最后一个元素对调,主函数中输出调换后的数组
#include<iostream.h>
#define N 5
void Input(int array[])
{
int i;
for(i=0;i<5;i++)
cin>>*(array+i);
}
void Change(int *p)
{
int max,min,k=0,w=0,t,i;
max=*p;
min=*p;
for(i=1;i<5;i++)
{
if(*(p+i)<min)
{
min=*(p+i);
k=i;
}
}
for(i=1;i<5;i++)
{
if(*(p+i)>max)
{
max=*(p+i);
w=i;
}
}
t=*p;
*p=*(p+k);
*(p+k)=t;
t=*(p+4);
*(p+4)=*(p+w);
*(p+w)=t;
}
void main()
{
int array[N];
int *p,*q;
p=array;
q=p+5;
int i;
Input(array);
Change(p);
cout<<"the changed array:"<<endl;
for( ;p<q;p++)
cout<<*p<<'\t';
}
题目2描述:
在主函数中输入10个整数到数组中,调用函数(使用指针)完成将数组元素循环移动k位。当k>0时,实现循环右移;当k<0时,实现循环左移。循环右移一位的意义是:将数组整体元素向后一个下标位置移动一个元素的位置,原数组最后一个元素移动到数组最前面第0个元素的位置。
#include<iostream.h>
#define N 10
void swap(int *p,int k)
{
int b[10];
int i;
for(i=0;i<10;i++)
b[i]=*(p+i);
if(k>0)
{
for(i=9;i>=k;i--)
*(p+i)=*(p+i-k);
for(i=0;i<k;i++)
*(p+i)=b[i+10-k];
}
if(k<0)
{
k=-k;
for(i=k;i<10;i++)
*(p+i-k)=*(p+i);
for(i=0;i<k;i++)
*(p+9-i)=b[k-i-1];
}
}
void main()
{
int i,k ;
int a[N];
int *p;
p=a;
cout<<"please input:"<<endl;
for(i=0;i<N;i++)
cin>>a[i];
cout<<"please input k:";
cin>>k;
cout<<endl;
swap(p,k);
for(i=0;i<N;i++)
cout<<a[i]<<endl;
}
题目3描述:
在主函数中输入任意的四个整数存入变量a,b,c,d中,调用函数(用引用实现参数传递)将这四个整数进行排序。
#include<iostream.h>
void order(int &a,int &b,int &c,int &d)
{
int m,n,p,q,t;
m=a;
n=b;
p=c;
q=d;
if(m>n)
{
t=m;
m=n;
n=t;
}
if(m>p)
{
t=m;
m=p;
p=t;
}
if(m>q)
{
t=m;
m=q;
q=t;
}
if(n>p)
{
t=n;
n=p;
p=t;
}
if(n>q)
{
t=n;
n=q;
q=t;
}
if(p>q)
{
t=p;
p=q;
q=t;
}
d=q;c=p;b=n;a=m;
}
void main()
{
int a,b,c,d;
cout<<"please input 4 numbers:"<<endl;
cin>>a>>b>>c>>d;
order(a,b,c,d);
cout<<"the ordered numbers are:"<<endl;
cout<<a<<'\t'<<b<<'\t'<<c<<'\t'<<d<<endl;
}