/*
* 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
* 编写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。
*/
#include<iostream>
using namespace std;
/*
* 用符号常量定义数组长度(const:constant)
*
* 说明:
* 由于使用 const 语句定义符号常量带有数据类型,以便系统进行类型检查,
* 同时该语句具有计算初值表达式和赋初值的功能,所以比宏命令(#define)定义符号常量要优越得多,
* 因此提倡使用 const 语句。
*/
const int arrayLength=10;
void main()
{
void inputNum(int number[],int temp_length);
void outputNum(int number[],int temp_length);
void swap(int number[],int temp_length);
int number[arrayLength];
cout<<"请输入10个整数:"<<endl;
//number为数组地址
inputNum(number,arrayLength);
swap(number,arrayLength);
outputNum(number,arrayLength);
}
/*
* 输入整数
*/
void inputNum(int number[],int temp_length)
{
int length=0;
length=temp_length;
for(int i=0;i<length;i++)
{
cin>>number[i];
}
}
/*
* 交换
*/
void swap(int number[],int temp_length)
{
int *max,*min,*pointer,temp,length;
//将数组首地址赋值给指针变量,即指针变量指向数组的第一个元素
max=min=number; //因为是右结合,所以这样写;一右而不右,三右赋值右
temp=0;
length=temp_length;
/*
* 循环变量初始值:数组第2个值的地址;循环条件:数组最后一个值的地址(number+length-1);循环变量增值:地址+1
*/
for(pointer=number+1;pointer<number+length;pointer++)
{
if(*pointer>*max)
{
//将大数地址赋给max
max=pointer;
}
else if(*pointer<*min)
{
//将小数地址赋给min
min=pointer;
}
}
//将最小数与第一个数交换
temp=number[0];
//把指针变量min所指向的值赋值给number数组的第一个值;
//'*':为指针运算符
number[0]=*min;
*min=temp;
//将最大数与最后一个数交换
temp=number[9];
number[9]=*max;
*max=temp;
}
/*
* 输出整数
*/
void outputNum(int number[],int temp_length)
{
int length=0;
length=temp_length;
for(int i=0;i<length;i++)
{
cout<<number[i]<<"\t";
}
}
运行结果:
备注:指针变量所占空间大小由地址总线决定。