题目描述:
实现swap方法: void swap(int * array,int n); 传入数组和数组元素个数。 函数内部将数组的第一个元素和最后一个元素的值进行交换。 保存为swap.cpp。 遇到异常情况,输出"error";否则不要随意输出将视为错误。
参考代码:
#include<stdio.h>
void swap(int* array,int n);
int main(){
int i,n,a[100001];
scanf("%d",&n);
for(i=0;i<n;i++) scanf("%d",&a[i]);
swap(a,n);
for(i=0;i<n;i++) printf("%d ",a[i]);
return 0;
}
void swap(int* array,int n)
{
int x;
if(array==0||n<=0)
{
printf("error");
return ;
}
x = array[0];
array[0] = array[n-1];
array[n-1] = x;
return;
}
讲解:
函数,何谓函数,说到函数你可能会想到中学的f(x),对,既然他也叫函数,那么他们一定存在一定的联系。
我们来看一道中学数学题:“已知 ,求f(1)。”
类比上面这道数学题,“已知”就相当于代码第二行的函数声明,我首先要让计算机知道有一个函数!并且要告诉他这个函数是什么类型的。“f(x)”相当于“swap(int* array,int n)”,其作用为给这个函数去一个响亮的名字,并且说明函数的自变量(操作对象)是谁。“”相当于“{……}”,告诉你这个函数的解析式(如何对对象进行操作)。最后,如果这个函数不是void型的话,那么它是需要一个返回值的,即函数末尾应有“return …;”,其返回的值,就是函数式的值(f(x)的值)。
在函数这里还有一个值得注意的是,函数的操作对象是形参,而我们给函数传入的值是实参,由于实参和形参并不是同一个东西,所以对形参进行的改变不会引起实参的改变。举一个简单的例子。
void exchange(int a,int b)
{
int tmp=a;
a=b;
b=tmp;
}
对于上面这段代码,看起来是将a和b的值交换了,但是你调用此函数会发现并没有实现交换的功能。原因就是其只是将形参交换,而并没有对实参进行操作。
打个比喻。你有两份文件需要盖章,但是你在家里,于是你打电话请赵蒟蒻帮你盖章,而赵蒟蒻没有文件,于是你传了两份电子稿给他,他将文件打印出来盖了章。但是!盖章的是赵蒟蒻手里的文件,而你手里的文件并没有被盖章!为了解决这个问题,你只好告诉赵蒟蒻文件在哪里(地址),于是赵蒟蒻根据地址找到了你的文件并盖了章!wow,问题解决了!(上述代码问题解决方法详情参见指针)
写在最后的是,本题为teacher_main题目,只需要上传你的swap()函数的具体内容。
求实求真,大气大为。