标题:研习问题的模块化求解—特殊函数

关键词:函数

内容

A. 一句话概括今日目标完成情况

(a) 复习第五章 100%

(b) 学习第六章  90%

B.具体内容

(a)第五章实例讲解求输入三个数字中的最大值,并且在程序运行结束之后询问用户是否需要进行下一次操作。

#include<iostream>
using namespace std;
double maxThree(double a,double b,double c)
{
 double max;
 max=a>b?a:b;
 max=max>c?max:c;
 return max;
}
int main()
{
 double x1,x2,x3,max;
 char yes;
 do{
     cout<<"x1? x2? x3? ";
     cin>>x1>>x2>>x3;
     max=maxThree(x1,x2,x3);
     cout<<"最大数:"<<max<<endl;
     cout<<"continue(y/n)?";
     cin>>yes;
    }while(yes=='Y'||yes=='y');
    return 0;
}

构造求最大值的函数非常简单,主要就是在主函数中构造一个do while循环,定义一个字符型yes变量,检测用户输入的是否为Y或y,是则返回主函数的头部,进行下一轮循环。

下面是从一直数组中查找输入的数字是第几位:

#include<iostream>
using namespace std;
int Search(int a[],int n,int key)
{
 int low,high,mid;
 low=0;
 high=n-1;
 while(low<high)
 {
  mid=(low+high)/2;
  if(key==a[mid])return mid+1;
  else if(key>a[mid])low=mid+1;
  else high=mid-1;
 }
 return -1;
}
int main()
{
 int a[]={3,5,6,9,10,11,12,15,19,22,23,29,30,45,50,54};
 int k,x;
 char again='n';
 do
 {
  cout<<"您要找的数?";cin>>x;
  k=Search(a,18,x);
  if(k>=0)cout<<x<<"是第"<<k<<"个数"<<endl;
  else cout<<x<<"不在序列中!"<<endl;
  cout<<"还找另外一个数字么?(y or n)?";cin>>again;
 }while(again!='n');
 return 0;
}

在最后执行循环的时候使用的是do while结构, 定义了字符型变量again 当他不等于n的时候,就进行下一论循环。这个用二分法来寻找输入值的方法很值得思考。

(b)

第六章第一节这个递归很厉害啊

#include<iostream>
using namespace std;
int f(int n)
{
 if(n==0)
 return 1;
 else 
 return n*f(n-1);
}
int main()
{
 int n;
 int factorial;
 cin>>n;
 factorial=f(n);
 cout<<factorial<<endl;
 return 0;
}

不过回归这一方面还不是很懂,return n*f(n-1)我不知道他递归一个一个分下去之后是怎么回归回来的啊。

3.这个汉诺塔问题求解最后把这些个代码敲完F9F10之后我都被感动了:

#include<iostream>
using namespace std;
//函数move将一个盘子从x移到y
int s=0;
void move(char x,char y)
{
 cout<<x<<"---->"<<y<<endl;
 s++;

void hanoi(int n,char a,char b,char c)
{
 if(n==1)
 move(a,c);
 else
 {
  hanoi(n-1,a,c,b); //借助C将n-1个盘子从A移到B 
  move(a,c);        //从A移到C 
  hanoi(n-1,b,a,c); //借助A将n-1个盘子从B移到C 
 }
}
int main()
{
 int m;
 cout<<"请输入盘子的数量:";
 cin>>m;
 cout<<"移动"<<m<<"个盘子的过程如下:"<<endl;
 hanoi(m,'A','B','C');
 cout<<"一共需要移动"<<s<<"次。"<<endl;
 return 0; 
}

如此的牛逼,通过构造move函数,最后竟然连过程都可以显示出来。这个程序我好感动,想起了小时候玩大人手机上这个游戏的时候,琢磨着到底怎么样才是最快的解出答案,而如今短短几行code竟然就可以将小时候的愿望成真,很欣喜。

6.2 一般将规模很小,而使用频繁的简单函数声明为内联函数,这和6.1学习的递归函数相辅相成,互相配合。

6.3 函数重载更简单了,就是定义名字一样的不同函数,然后运行的时候,系统会自动根据参数的个数来判断使用哪一个函数,贴上最后的code把:

#include<iostream>
using namespace std;
int add(int x,int y)
{
 int sum;
 sum=x+y;
 return sum;
}
int add(int x,int y,int z)
{
 int sum;
 sum=x+y+z;
 return sum;
}
int add(int x,int y,int z,int t)
{
 int sum;
 sum=x+y+z+t;
 return sum;
}
int main()
{
 cout<<add(3,5)<<endl;
 cout<<add(3,5,7)<<endl;
 cout<<add(3,5,7,9)<<endl;
 return 0;
}

6.2 6.3感觉都好简单啊 我的天

6.4  1 局部变量这节主要讲的 编译系统一般将在循环语句中定义的变量作为该循环语句的局部变量,在循环之外一般是不可以适用的。即不可被访问。

2 全局变量 说明于所有函数之外,可以为所有函数共同使用。函数中,局部变量优先于全局变量

#include<iostream>
using namespace std;
int a=3,b=5;
int max(int a,int b)
{
 return a>b?a:b;
}
int main()
{
 int a=8;
 cout<<max(a,b)<<endl; 
}

比如这段code中我在第三行定义了全局变量int a=3,b=5;然后我在主函数里又定义了 int a=8;此时在我的函数里面a就是8,局部的优先于全局的。形参a,b是函数的局部变量。

而当全局和局部的同名时,在函数里又想使用全局变量,咋办呢。就在变量前面加上作用域运算符::就可以了。而在定义点之前要使用全局变量时,则要使用extern语句即可。

今天交的早,因为我实在是  太!困!了!

C.明日计划

第六节的完善和巩固

我的博客:http://blog.csdn.net/andr3zzzz

1508-张晨曦总结《2016年-10月-29日》【连续8天总结】相关推荐

  1. 武汉!武汉!10 月 29 日!HDG 华为开发者汇来啦!

    烂漫的樱花,巍峨的黄鹤楼,飘香四溢的热干面,这都让武汉这座城市散发出独特的魅力.10 月 29 日,"HDG 华为开发者汇"走进武汉,带您体验一场专属于武汉开发者的技术盛宴. 加入 ...

  2. 【活动预告】武汉!武汉!10 月 29 日!HDG 华为开发者汇来啦!

    文/华为eSDK PS:扫描文章末尾的二维码,即可即时获取HDG武汉站的实时讯息,报名通道即将火热开启,小伙伴们关注起来吧!! 武大樱花烂漫,黄鹤楼千古绝唱,户部巷.热干面都让这座城市散发亲民的魅力. ...

  3. 2016年10月9日 星期日 --出埃及记 Exodus 18:20

    2016年10月9日 星期日 --出埃及记 Exodus 18:20 Teach them the decrees and laws, and show them the way to live an ...

  4. 2016年10月13日 星期四 --出埃及记 Exodus 18:24

    2016年10月13日 星期四 --出埃及记 Exodus 18:24 Moses listened to his father-in-law and did everything he said. ...

  5. 热血江湖服务器维护时间,热血江湖2016年10月8日停机更新维护公告 喜庆大烟花套餐国庆上架...

    热血江湖2016年10月8日停机更新维护公告 喜庆大烟花套餐国庆上架 尊敬的热血江湖广大玩家: 为保证服务器的稳定运行,提高游戏品质,我们将于2016年10月8日(周六)6:00-16:00对所有服务 ...

  6. 【历史上的今天】10 月 29 日:互联网的正式诞生;MariaDB 发布首个版本;“天河一号”研制成功

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 10 月 29 日,在 8 年前的今天,世界首台比特币自动提款机在加拿大温哥华启用,办理加拿大元与比 ...

  7. 2009年千万亿次超级计算机,2009年10月29日 第一台国产千万亿次超级计算机亮相...

    2009年10月29日,"天河一号"超级计算机在湖南长沙亮相.该台超级计算机是由国防科技大学成功研制出的,峰值性能为每秒1206万亿次.这标志着我国成为继美国之后世界上第二个能够研 ...

  8. 梦想世界2014年5月29日服务器维护公告,《梦想世界3D》2016年12月29日维护内容

    <梦想世界3D>2016年12月29日维护内容 2016-12-28 作者:说玩小编 来源:说玩网 评论(9条) 我要评论 [优化调整] 1.元旦活动 1)万物复苏:12月31日10:00 ...

  9. “一带一路”国际商协会大会10月29日在京盛大开幕

    北京2018年10月30日电 /美通社/ -- 由全国工商联和中国"一带一路"网指导.人民网和环球时报主办.环球网承办.浙江中国小商品城集团协办的"一带一路"国 ...

最新文章

  1. 【前沿技术】被“围剿”的比特币,一个月“吃”掉4500万度电!
  2. 自己建文件111 txt python_这可能是最详细的Python文件操作
  3. 解决intellij idea中使用live edit插件不能在chrome即时显示css变化的方法(html可以)
  4. rtmp 常用字段含义
  5. Arduino MEGA 2560找不到驱动怎么办
  6. python的print
  7. 如何通过使用 64 位版本 Windows 查看系统注册表 WOW6432Node
  8. 【作者面对面问答】包邮送《Redis 5设计与源码分析》5本
  9. Asp.net MVC 移除视图引擎(WebFormViewEngine或者RazorViewEngine)
  10. 用《只狼》教你学会Git(中)
  11. LCD驱动芯片——BL55072A驱动程序
  12. 2019年最值得学习的编程语言TOP5
  13. 人员招聘与培训实务【2】
  14. 分布式事务(6)-分布式事务处理技术之RocketMQ
  15. 用Photoshop去除图片中的原有文字
  16. 从软件工程师到IT猎头:说说跳槽那点事
  17. vue使用v-for动态绑定div背景图片
  18. oracle增加表空间文件
  19. 个人入行做智能家居,应该从哪几方面入手?
  20. 这就是所谓的历史剧?

热门文章

  1. 2011-3-8下午方正阿帕比笔试面试
  2. Python使用Selenium实现淘宝网滑块登陆
  3. 贴片按键开关_一键控制全屋家居产品?想实现全屋智能,先安装一套智能开关吧...
  4. 2021/7/22 华为笔试复盘 1.自动驾驶出租车订单分配
  5. java计算机毕业设计农村留守儿童帮扶系统源程序+mysql+系统+lw文档+远程调试
  6. Android 杂文
  7. Win系统蓝牙设备频繁卡顿/断连 - 解决方案
  8. 基于SSM的台球室俱乐部管理系统Spring+SpringMVC+MyBatis
  9. 标准USB,Mini-USB接口线序定义
  10. 品优购电商系统部署----MyCat Nginx (2)