1、用指针变量的处理方法编写一个子函数,功能为把读入的数组(10个数据)中的所有奇数放在另一个数组中,并输出新数组的内容。
子函数要求:
实参为指针变量;形参为指针变量,且形式为:int select(int *p, int *q);
其中:指针p用来接收原数组(的地址),指针q用来接收新数组(的地址);函数返回新数组元素的个数。
提示:两个数组全部在主函数中定义。
运行结果示例:
#include<iostream.h>
int select(int *p,int *q)
{
int i,j=0;//j的作用是记下奇数的个数
for(i=0;i<10;i++)
if(*(p+i)%2==1)
{
*q++=*(p+i);//如果是奇数,那么把当前值赋给q指针,指针自增(下跳)
j++;//对于符合条件的值就对于j加1
}
return j;
}
void main()
{
int *p,*q, a[10],b[10],i,j;
cout<<"输入10个数组元素:";
p=a;
q=b;
for(i=0;i<10;i++)
cin>>*(p+i);//指针不动,通过改变i的值来改变指针p所指对象的值
j=select(p,q);
cout<<"挑选后的新数组:";
for(i=0;i<j;i++)
cout<<*(q+i)<<" ";//逐个输出新数据,新的数据位于新的数组中
cout<<endl;
}
2.用指针变量的处理方法编写一个子函数,功能为从键盘读入一个已经排好序的数组(共10个数),再输入一个数m,将此数按次序规律插入到数组中后输出结果。
子函数要求:
实参、形参均为指针变量,且形式为:void insert(int *a, int m);
其中:形参m为要插入的数据;函数无返回值。
运行结果示例:
#include<iostream.h>
void insert(int *a,int m)
{
int i,j;
for(i=0;i<10;i++)
if(m<*(a+i))//如果m的值小于当前值,直接跳出循环,i自增
break;
for(j=10;j>i;j--)
*(a+j)=*(a+j-1);//先不插入m,让数组顺次后移,从最后一个元素开始依次后移
*(a+i)=m;//顺次后移完成后把m进行插入
}
void main()
{
int *p,a[11],m;
cout<<"输入10个数组元素:";
for(p=a;p<a+10;p++)
cin>>*p;//读入数组元素的值
cout<<"输入插入数据的值:";
cin>>m;
p=a;//把指针置于数组的开头
insert(p,m);
cout<<"插入数据后的结果:";
for(p=a;p<a+11;p++)//当前数组一共有11个值
cout<<*p<<" ";//逐个输出
cout<<endl;
}