第一个学期也快要结束了,但感觉自己学习c++的任务依然任重道远。我发现自己对掌握的知识不是十分的熟悉,也不能快速,完整的写出代码,具体就表现在打代码的时候经常有些忘记怎么打或者是打得很慢需要一点点推理出来。很多时候都要上网找或者是翻书看一下。
目前自己薄弱的知识部分应该是指针。下面是cpp-9第二道编程题
在主函数中输入n个整数到数组中,调用函数(要求被调参数为⑴数组名 ⑵数组元素的个数)完成将数组中的最小值与第0个元素对调,将数组中的最大值与最后一个元素对调,主函数中输出调换后的数组。要求函数用指针变量作形参。
第一行是一个整数n,表示元素个数; 第二行是n个整数,表示数组的n个元素。
输出调换元素后的数组,以空格分隔。
在这里给出一组输入。例如:
5
2 4 1 6 3
在这里给出相应的输出。例如:
1 4 2 3 6
交换。但因为对指针的不是很理解与熟练导致我没有用指针来做,导致代码比较复杂繁冗。
大体思路:定义一个整形数组a[],找到最大值(最小值),利用指针变量*p指向最大值(最小值)然后使最后一个(第一个)元素与最大值(最小值)
改进后代码如下:#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 << " ";
}
}
}
原文:https://www.cnblogs.com/1807tangjr/p/10088565.html