ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

#5 实现指定函数swap

2021-11-04 22:30:39  阅读:164  来源: 互联网

标签:函数 形参 int void 指定 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),对,既然他也叫函数,那么他们一定存在一定的联系。

        我们来看一道中学数学题:“已知 f(x)=x^{3}+2x^{2}-x+1,求f(1)。”

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

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

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

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

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

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

求实求真,大气大为。

标签:函数,形参,int,void,指定,swap,实参
来源: https://blog.csdn.net/qq_35835847/article/details/121144060

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有