11.23~11.29作业(2)

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值