第二次博客作业

目前在c++的学习上,存在的问题还有很多,尤其突出的问题就在数组这一方面

例如:

数组在作为函数参数传递的时候,就退化为指针了,这个时候无论是sizeof(array)还是sizeof(*array)得到的都只能是这个指针指的一个元素所占的字节数目(4),而不能得到数组的长度!!

7-2 数组元素换位

在主函数中输入n个整数到数组中,调用函数(要求被调参数为⑴数组名 ⑵数组元素的个数)完成将数组中的最小值与第0个元素对调,将数组中的最大值与最后一个元素对调,主函数中输出调换后的数组。要求函数用指针变量作形参。

输入格式:

第一行是一个整数n,表示元素个数; 第二行是n个整数,表示数组的n个元素。

输出格式:

输出调换元素后的数组,以空格分隔。

输入样例:

在这里给出一组输入。例如:

5

2 4 1 6 3

输出样例:

在这里给出相应的输出。例如:

1 4 2 3 6

 。

 

解题思路:先定义两个函数,把该数组的最大值和最小值找出来,然后通过指针作为形参,用*a=*(a+min); 和*(a+n-1)=*(a+max);这两个语句进行数组中的最小值与第0个元素对调和数组中的最大值与最后一个元素对调。

#include <iostream>

using namespace std;

void change(int *a,int n)

{

int min=0,i;

for(i=1;i<n;i++)

{

if(*(a+i)<*(a+min))

{

min=i;

}

}

int t;

t=*a;

*a=*(a+min);

*(a+min)=t;

 

int max=0,k;

for(i=1;i<n;i++)

{

if(*(a+i)>*(a+max))

{

max=i;

}

}

int l;

l=*(a+n-1);

*(a+n-1)=*(a+max);

*(a+max)=l;

}

int main()

{

int n;

cin >> n;

int a[n];

int i;

for(i=0;i<n;i++)

{

cin >> a[i];

}

change(a,n);

for(i=0;i<n;i++)

{

cout << a[i];

if(i<n-1)

{

cout << " ";

}

}

}

posted @ 2018-12-07 14:52  赖晓桐  阅读(157)  评论(0编辑  收藏  举报