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