数据结构上机实践第二周项目1

【项目1 - C/C++语言中函数参数传递的三种方式】 

  C语言提供了两种函数参数传递的方式:传值和传地址。在C++中,又拓展了引用方式。通过本项目,确认自己已经掌握了这三种方式的原理,为后续学习做好准备。

       主函数代码如下: 

//*Copyright  (c)2017,烟台大学计算机与控制工程学院*   
//*All rights reservrd.*   
//*文件名称 :test.cpp*   
//*作者:田长航*
//*完成时间:2017年9月7日*    
//*版本号:v1.0*
//*问题描述:用于交换的主函数*   
//*输入描述:输入要交换的两个数*   
//*程序输出:与输入值顺序相反的两个数*   
int main()
{
    int a, b;
    printf("请输入待交换的两个整数:");
    scanf("%d %d", &a, &b);
    __________________;  //分三个程序,分别写上调用myswap的合适形式
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
    return 0;
}
      根据以下三种myswap函数对横线处填充内容进行修改

方式 1:

//*Copyright  (c)2017,烟台大学计算机与控制工程学院*   
//*All rights reservrd.*   
//*文件名称 :test.cpp*   
//*作者:田长航*
//*完成时间:2017年9月7日*    
//*版本号:v1.0*
//*问题描述:传值的方法交换值函数*   
//*输入描述:无*   
//*程序输出:无*   
//(1)传值
void myswap(int x, int y)
{
    int t;
    t=x;
    x=y;
    y=t;
}
在myswap函数中 整型变量x和y为形式参数,其值由主函数中调用次函数的实参传递,调用函数时,为x开辟内存空间,为y开辟内存空间,但是实参a,b与形参x,y都为独立的内存空间,调用myswap函数后,调换的是x与y的值,x与y的内存空间在myswap函数结束时释放空间,并不能使a,b的值调换,所以这种方式不能在此题的条件下不能完成主函数中a与b的调换,输出结果仍未原结果。

方式 2:

//*Copyright  (c)2017,烟台大学计算机与控制工程学院*   
//*All rights reservrd.*   
//*文件名称 :test.cpp*   
//*作者:田长航*
//*完成时间:2017年9月7日*    
//*版本号:v1.0*
//*问题描述:传地址的方法交换值函数*   
//*输入描述:无*   
//*程序输出:无*   
//(2)传地址
void myswap(int *p1, int *p2)
{
    int  t;
    t=*p1;
    *p1=*p2;
    *p2=t;
}
这种方式下,myswap函数的形参使两个整型指针变量,在此函数结束后虽然指针变量会释放,但是可以改变指针变量所指向的变量,所以,主函数可修改为

//*Copyright  (c)2017,烟台大学计算机与控制工程学院*   
//*All rights reservrd.*   
//*文件名称 :test.cpp*   
//*作者:田长航*
//*完成时间:2017年9月7日*    
//*版本号:v1.0*
//*问题描述:传地址的方法交换值主函数*   
//*输入描述:两个数*   
//*程序输出:反顺序输出两个数*   
int main()
{
    int a, b;
    printf("请输入待交换的两个整数:");
    scanf("%d %d", &a, &b);
    myswap(&a,&b);  //分三个程序,分别写上调用myswap的合适形式
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
    return 0;
}
通过主函数传递a的地址和b的地址给myswap函数的p1,p2,通过改变指针所指向的变量(a,b)来调换a,b的值。

运行结果:


方式 3:

//*Copyright  (c)2017,烟台大学计算机与控制工程学院*   
//*All rights reservrd.*   
//*文件名称 :test.cpp*   
//*作者:田长航*
//*完成时间:2017年9月7日*    
//*版本号:v1.0*
//*问题描述:引用作形参的方法交换值函数*   
//*输入描述:无*   
//*程序输出:无*   
//(3)引用作形参
void myswap(int &x, int &y)
{
    int t;
    t=x;
    x=y;
    y=t;
}
在这个myswap函数中,形式参数改为了int &x,int &y,即为与主函数传递的实参共用一块内存空间,还可以说x,y是变量a,b的别名,所以主函数中只需要将变量a,b传递给myswap函数即可。

修改主函数为:

//*Copyright  (c)2017,烟台大学计算机与控制工程学院*   
//*All rights reservrd.*   
//*文件名称 :test.cpp*   
//*作者:田长航*
//*完成时间:2017年9月7日*    
//*版本号:v1.0*
//*问题描述:引用作形参的方法交换值主函数*   
//*输入描述:两个数*   
//*程序输出:反顺序输出两个数*   
int main()
{
    int a, b;
    printf("请输入待交换的两个整数:");
    scanf("%d %d", &a, &b);
    myswap(a,b);  //分三个程序,分别写上调用myswap的合适形式
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
    return 0;
}
运行结果:










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moresweet猫甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值