#5 实现指定函数swap

题目描述:

实现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),对,既然他也叫函数,那么他们一定存在一定的联系。

        我们来看一道中学数学题:“已知 #5 实现指定函数swap,求f(1)。”

        类比上面这道数学题,“已知”就相当于代码第二行的函数声明,我首先要让计算机知道有一个函数!并且要告诉他这个函数是什么类型的。“f(x)”相当于“swap(int* array,int n)”,其作用为给这个函数去一个响亮的名字,并且说明函数的自变量(操作对象)是谁。“#5 实现指定函数swap”相当于“{……}”,告诉你这个函数的解析式(如何对对象进行操作)。最后,如果这个函数不是void型的话,那么它是需要一个返回值的,即函数末尾应有“return …;”,其返回的值,就是函数式的值(f(x)的值)。

        在函数这里还有一个值得注意的是,函数的操作对象是形参,而我们给函数传入的值是实参,由于实参和形参并不是同一个东西,所以对形参进行的改变不会引起实参的改变。举一个简单的例子。

void exchange(int a,int b)
{
    int tmp=a;
    a=b;
    b=tmp;
}

        对于上面这段代码,看起来是将a和b的值交换了,但是你调用此函数会发现并没有实现交换的功能。原因就是其只是将形参交换,而并没有对实参进行操作。

        打个比喻。你有两份文件需要盖章,但是你在家里,于是你打电话请赵蒟蒻帮你盖章,而赵蒟蒻没有文件,于是你传了两份电子稿给他,他将文件打印出来盖了章。但是!盖章的是赵蒟蒻手里的文件,而你手里的文件并没有被盖章!为了解决这个问题,你只好告诉赵蒟蒻文件在哪里(地址),于是赵蒟蒻根据地址找到了你的文件并盖了章!wow,问题解决了!(上述代码问题解决方法详情参见指针

        写在最后的是,本题为teacher_main题目,只需要上传你的swap()函数的具体内容。

求实求真,大气大为。

上一篇:2021-07-12


下一篇:c语言函数