一、swap函数的代码及运行情况

1.代码

 #include<stdio.h>
int main()
{
void swap(int *m,int *n);
int a,b;
int *p1,*p2;
scanf("%d,%d",&a,&b);
p1=&a;
p2=&b;
swap(p1,p2);
printf("%d,%d\n",*p1,*p2);
return ;
}
void swap(int *m,int *n)
{
int t;
t=*m;
*m=*n;
*n=t;
}
/*
第04行://对函数进行声明
第05行://定义两个整型变量
第06行://定义两个指针变量*p1,*p2 量
第07行://输入两个整形数据a,b第08行://令指针p1指向a
第09行://令指针p2指向b
第10行://执行函数p1,p2
第11行://输出交换后的值
第12行://结束 第16行://定义变量t,作用为交换变量
第17行://将*m赋值给t
第18行://将*n赋值给*m
第19行://将t赋值给*n
*/

swap函数

2.运行结果

(1)键入74,23:

文字

 
,
, --------------------------------
Process exited after 19.35 seconds with return value
请按任意键继续. . .

键入74,23

图片

(2)键入89,42:

文字

 
,
, --------------------------------
Process exited after 17.43 seconds with return value
请按任意键继续. . .

键入89,42

图片

二、comp函数的代码及运行情况

1.代码

 
 #include<stdio.h>
int main()
{
int comp(int *m,int *n);
int a,b;
int *p1,*p2;
scanf("%d,%d",&a,&b);
p1=&a;
p2=&b;
printf("max=%d",comp(p1,p2));
return ;
}
int comp(int *m,int *n)
{
return *m>*n?*m:*n;
}
/*
第04行://对函数进行声明
第05行://定义三个整型变量
第06行://定义两个指针变量*p1,*p2
第07行://输入两个整形数据a,b
第08行://令指针p1指向a
第09行://令指针p2指向b
第10行://执行函数comp,并将返回值赋值给max
第11行://输出最大的值
第12行://结束 第16行://运用了函数return及运算符 ? :
先判断传递过来的值,当满足条件*m>*n时,
执行前一条语句*m并返回*m的值;不满足条
件时,执行后面一条语句*n并返回*n的值
*/

comp

2.运行结果

(1)键入78,15

文字

 
,
max=
--------------------------------
Process exited after 4.703 seconds with return value
请按任意键继续. . .

键入78,15

图片

(2)键入14,58

文字

 
,
max=
--------------------------------
Process exited after 7.876 seconds with return value
请按任意键继续. . .

键入14,58

图片

三、swap函数两种无法达到交换效果的分析
1.void swap(int *m,int *n){int *t;*t=*m;*m=*n;*n=*t;}无法实现交换的原因:

*t是指针变量t所指向的变量,但未给t进行赋值,t无确定的值,所以t指向了不可预见的地址。因此,不能将变量或整型地址的值直接赋给未经初始化指针。编译会完成,但无法运行。

2.void swap(int *m,int *n){int *t; t=m; m=n; n=t;}无法实现交换的原因:

仅仅将形式参数地址进行了交换,键入22,33,swap函数只是将两个实际数的地址不断的变换,并没有将两个实际参数中的值进行交换;即此种情况为:形参变化,实参未动,没有实际果。像旅馆住的人,只将房门号调换,人并没有进行调换。

四、总结(也包括代码的注释)

1.swap函数

主函数:声明函数---->定义变量---->输入数值---->取其地址---->执行函数---->显示数据---->结束语句

swap函数:定义交换变量---->将前一个形参指针赋给交整型换变量---->将后一个形参指针赋给前一个形参指针---->将整型交换变量赋给后一个形参指针需注意上文提到的两种无法达到交换效果的分析。

2.comp函数

语句中max=comp(p1,p2);printf("max=%d",max);可变为printf("max=%d",comp(p1,p2));所以主函数思路也为:

主函数:声明函数---->定义变量---->输入数值---->取其地址---->执行函数---->显示数据---->结束语句

comp函数:直接使return函数中嵌套运算符 (判断条件)?(成立时的执行):(不成立时的执行)   不仅可以起到判断的作用,而且直接将判断后得出的值返回给主函数,简洁明了,省去了大量操作中的纷繁复杂的步骤。

作业二、comp和swap函数的更多相关文章

  1. 作业二:构建swap函数

    一.swap代码 #include<stdio.h> int main() //主函数部分 { void swap(int *m,int *n); int a,b; int *p1,*p2 ...

  2. day1作业二:多级菜单操作(函数实现)

    作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 本示例的三级菜单是一个yaml文件格式,格式如下 ...

  3. 自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理

    验证的代码: #include <stdio.h> int main(){ char c = 'z'; ) + (c << ) + () + 'a'; printf(" ...

  4. [Effective C++ --025]考虑写出一个不抛异常的swap函数

    引言 在我的上一篇博客中,讲述了swap函数. 原本swap只是STL的一部分,而后成为异常安全性编程的脊柱,以及用来处理自我赋值可能性. 一.swap函数 标准库的swap函数如下: namespa ...

  5. EC读书笔记系列之13:条款25 考虑写出一个不抛异常的swap函数

    记住: ★当std::swap对你的类型效率不高时,提供一个swap成员函数,并确定其不抛出异常 ★若你提供一个member swap,也该提供一个non-member swap来调用前者.对于cla ...

  6. 《Effective C++》item25:考虑写出一个不抛异常的swap函数

    std::swap()是个很有用的函数,它可以用来交换两个变量的值,包括用户自定义的类型,只要类型支持copying操作,尤其是在STL中使用的很多,例如: int main(int argc, _T ...

  7. day1作业二:多级菜单操作

    作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 思路: (1)首先定义好三级菜单字典: (2)提 ...

  8. day1作业二:多级菜单

        作业二:多级菜单 1.三级菜单 2.可以次选择进入各子菜单 3.所需新知识点:列表.字典 4.打印b回到上一层 5.打印q退出循环 流程图如下: readme: (1)存储三级菜单的字典;设置 ...

  9. C++中swap函数

    本文是我用到swap函数时,对其产生好奇,所以结合网上有关博文写下的.个人水平有限,若有错误的地方,欢迎留言指出.谢谢! 一.通用的函数交换模板 template<class T> voi ...

随机推荐

  1. Eclipse在线集成SpringBoot

    在线集成下载地址:http://dist.springsource.com/release/TOOLS/update/e4.8/ 注意:需要更改后面的版本号,跟随自己eclipse版本号下载,只需要改 ...

  2. Oracle数据库TNS错误解决方法

    ORA-12154: TNS:could not resolve the connect identifier specified ,即无法解析指定的连接 标识符.这说明缺少了一个环境变量,TNS_A ...

  3. SSM中的Mybatis的操作

    一:整合日志含有log4j和logback logback是log4j的升级版他性能提升较大,有些甚至达到10倍以上,占的内存更小,slf4j能很好的整合它,还有很多数不胜数的优势 1.下载jar包, ...

  4. 汽车行业解决方案_K2助力车企实现费控/生产“端到端流程”

    如今汽车行业正面对一轮全球范围内新变革周期,这种“变革”一方面来源于在新能源技术.人工智能.信息技术.物联网技术等高新科技地猛烈敲击,另一方面源于全球的经济政策变幻莫测,贸易保护时代地到来,车企深陷发 ...

  5. typescript 属性默认值使用箭头函数 this指向问题

    今天注意到前端小伙伴用react 定义component class的方法的时候是通过箭头函数的方式,表示好奇. class Test extends React.Component { public ...

  6. Python 实现清屏

    使用Python的IDLE到某个程序节点时,需要清屏以提高清晰度. 但IDLE本身并没有这个功能,我们可以通过扩展来实现类似于Ctrl + L的清屏 资料来自于百度经验的 BinnLZeng 先制作一 ...

  7. c++ 指针、引用和取值;

    直接看代码: #include<iostream> using namespace std; int add(int *a,int *b){ int s; s = *a + *b; cou ...

  8. Java——值传递与引用传递

    1.基本类型和引用类型在内存中的保存 (1)基本类型的变量保存原始值,即它代表的值就是数值本身:   基本类型在声明变量时就为它分配了空间:   基本类型在参数传递过程中属于值传递,也就是复制一份数据 ...

  9. Python的基础语法

    一,编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: 1 # -*- coding: cp-1252 ...

  10. 作为新手在学习SSM+Easyui过程中遇到一系列问题

    对于初学SSM来说,如果不熟悉SSM中SpringMVC对数据处理,会造成很大的困扰, SSM中对前台页面放在WEB-INF下,对于读取外部信息,例如导入easyui的js文件.以及不能直接进行跳转. ...