定义一个一维数组,写以下6个函数来完成相应功能,在主函数中调用这6个函数。(要求,函数形参都为指针变量)

// 121219  上机任务2.cpp : 定义控制台应用程序的入口点。
//
/*         
* Copyright (c) 2012, 烟台大学计算机学院         
* All rights reserved.         
* 作 者:  刘同宾       
* 完成日期:2012 年 12 月 18 日         
* 版 本 号:v1.0                  
* 输入描述:
* 问题描述:(2)定义一个一维数组,写以下6个函数来完成相应功能,在主函数中调用这6个函数。(要求,函数形参都为指针变量)

             函数1,完成对该数组元素的键盘值输入

             函数2,完成对该数组元素的遍历输出

             函数3,求该数组元素的最大值。

             函数4,用选择法对该数组进行从大到小排序

             函数5,用冒泡法对该数组进行从小到大排序

             函数6,对该数组元素进行逆向存储。
* 程序输出:
* 问题分析:略        
* 算法设计:略         
*/
#include "stdafx.h"
#include<iostream>
using namespace std;

int main()
{
	void input(int *,int);//函数声明 
	void output(int *,int);
	void max(int *,int);
	void select(int *,int);
	void bubble(int *,int);
	void save(int *,int);

	const int n=10;

	int a[n];

	int *p;

	p=a;//或者是p=&a[0];

	input(p,n);//函数调用
	output(p,n);
	max(p,n);
	select(p,n);
	bubble(p,n);
	save(p,n);

	cout<<endl;

	return 0;
}

//输入数组元素函数
 void input(int *p,int n)
{
	 cout<<"请输入10个数组元素:"<<endl;

	int i;

	for(i=0;i<n;i++)
	{
		cin>>*(p+i);
	}
}
//输出数组元素函数
 void output(int *p,int n)
 {
	 int i;

	 for(i=0;i<n;i++)
	 {
		 cout<<*(p+i)<<" ";
	 }

	 cout<<endl;
 }
//求数组最大值
void max(int *p,int n)
 {
	 int i,max;

	 max=*p;

	 for(i=0;i<n;i++)
	 {
		 if(max<*(p+i))
		 {
			 max=*(p+i);
		 }
	 }

	 cout<<"最大值:"<<endl
		 
		 <<"max="<<max<<endl;
 }
 //选择法对数组元素进行从大到小排序 函数
 void select(int *p,int n)
 {
	 void output(int *p,int n);//函数声明

	 int i,j,k,temp;

	 for(i=0;i<n-1;i++)
	 {
		 k=i;
		 for(j=i+1;j<n;j++)
		 {
			 if(*(p+k)<*(p+j))
			 {
				 k=j;
			 }

			 temp=*(p+k);
			 *(p+k)=*(p+i);
			 *(p+i)=temp;
		 }
	 }

	 cout<<"选择从大到小:"<<endl;

	 output(p,n);
 }
 //冒泡法对数组元素从小到大排序
 void bubble(int *p,int n)
 {
	 void output(int *,int);

	 int i,j,temp;

	 for(j=1;j<n;j++)
	 {
		 for(i=0;i<n-j;i++)
		 {
			 if(*(p+i)>*(p+i+1))
			 {
				 temp=*(p+i);
				 *(p+i)=*(p+i+1);
				 *(p+i+1)=temp;
			 }
		 }
	 }

	 cout<<"冒泡从小到大:"<<endl;

	 output(p,n);
 }
//对其进行逆序存储 函数
 void save(int *p,int n)
 {
	 void output(int *,int);

	 int i,temp;

	 for(i=0;i<n/2;i++)
	 {
		 temp=*(p+i);

		 *(p+i)=*(p+n-1-i);

		 *(p+n-1-i)=temp;
	 }

	 cout<<"逆序存储:"<<endl;

	 output(p,n);
 }

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值