/* * 输入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"; } }
运行结果:
备注:指针变量所占空间大小由地址总线决定。