1.用指针变量的处理方法编写一个程序,功能为将数组s(共10个元素,由随机数生成)中的数据位置两两对倒,并输出结果。
程序要求:程序中对数组的处理全部使用指针方式。
运行结果示例:
1.#include "iostream.h"
#include "time.h"
#include "stdlib.h"
void main()
{
int s[10],*p,b;
srand ((unsigned)time(NULL));//用这种方式使得每次执行程序时生成的一组随机数是不一致的
cout<<"原数组:";
for(p=s;p<s+10;p++)
{
*p=rand()%100;//生成100以内的随机数
cout<<*p<<" ";
}
cout<<endl;
cout<<"调整后:";
for(p=s;p<s+10;p+=2)//步长是2
{
b=*p;
*p=*(p+1);
*(p+1)=b;//一瓶酱油一瓶醋的问题,需要关注的点是交换值得时候应该类型一致,所以中间类型b也是指针类型
cout<<*p<<" "<<*(p+1)<<" ";//输出这两个相邻的值
}
cout<<endl;
}
2.用指针变量的处理方法编写一个程序,功能为将一维数组s(数组元素的个数和数值均由用户即时输入的值决定)中的数据进行逆置,并输出结果。
程序要求:使用两个指针,指针p从数组首部向后移动,指针q从数组尾部与之同步向前移动。
运行结果示例:
#include "iostream.h"
void main()
{
int *p,*q,c[100],n,i,t;
cout<<"输入数组元素的个数:";
cin>>n;
cout<<endl;
cout<<"输入数组的"<<n<<"个元素值:";
for(i=0;i<n;i++)
cin>>c[i];//向数组中读入元素
cout<<endl;
cout<<"数组逆置后的结果:";
p=c;//第一个指针指向第一个元素
q=c+n;//第二个指针指向最后一个元素
for(i=0;i<n/2.0;i++)//中间对称分割,终值为n/2.0,用2.0的原因是考虑n的奇偶性的影响
{
t=*p;
*p=*q;
*q=t;//一瓶酱油一瓶醋的问题
p++;//两个指针都向中间靠拢
q--;
}
for(i=0;i<n;i++)
cout<<c[i+1]<<" ";//依次输出修改后的数组中的元素
cout<<endl;
}