热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[0318]C++简单程序设计-2

南京信息工程大学实验报告实验名称C++简单程序设计-2实验日期2018-3-20得分指导教师耿学华系计软院专业计嵌+软嵌年级2017级班次(1)姓名施昊阳学号

南京信息工程大学实验报告

实验名称 C++简单程序设计-2 实验日期 2018-3-20 得分 指导教师 耿学华 计软院 专业 计嵌+软嵌 年级 2017 级 班次 (1) 姓名 施昊阳 学号 20161334026

一、实验目的


  • 理解和掌握 C++中函数的定义与使用方法
  • 理解 C++中函数调用过程中值传递与引用传递的区别
  • 灵活、综合运用 C++中分支结构、循环结构及 continue、break 等应用编程求解问题。

二、实验准备


实验前,请围绕以下内容预习/复习指定内容

  • C++中函数的定义与使用方法
    阅读、学习教材 3.1 节,学习/复习如下内容:
    • 函数定义的语法形式;函数形参和实参、返回值的作用;函数调用形式;函数参
      数传递方式(值传递和引用传递)
    • 指定学习示例:第 3 章例 3-1,例 3-4,例 3-11,例 3-12
  • C++中 if 语句、switch 语句、while 语句、do…while 语句的用法及其嵌套使用
  • C++中 continue 语句、break 语句的用法

三、实验内容


  • 验证性实验
    • 运行教材 P68 例 3-4 源码,据此理解函数声明、函数定义、函数调用的方法,以
      及形参、实参、返回值的作用,以及参数的值传递过程。
    • 运行教材 P78 例 3-11 源码、P79 例 3-12 源码,观察二者运行结果的区别,结合
      3.1.3 节的分析,理解并总结值传递和引用传递的区别
  • 编程实验
    用 c++编程实现以下内容:
    • 习题 2-28(教材 P63)
    • 习题 2-29(教材 P63)
    • 习题 2-32(教材 P63)
    • 习题 2-34(教材 P63)

四、实验结论


  • 验证性实验部分
    • 函数声明和函数定义各自的作用,二者的区别;
      • 函数声明用于声明一个新的函数,可以将声明语句放在main函数之前,方便子函数之间的乱序调用,例如int max(int a,int b);
      • 函数定义是指对函数内容的具现,例如int max(int a,int b){return a>b?a:b;}
      • 两者区别在于函数声明只是告诉编译器有一个函数,并没有告知具体的参数调用,函数过程,返回值,而函数定义函数声明不具备的元素完整的呈现给编译器。
    • 什么是形参?什么是实参?函数参数和返回值在函数中起到什么作用?
      • 形参指出现在函数定义中,只能在函数内使用的参数。
      • 实参指出现在主调用函数中,进入被调用函数后不能使用的参数,在被调用函数运算结束后,实参的值不会发生改变
      • 函数参数是指调用时该函数必须传递的参数,在函数中利用其实现算法
      • 函数返回值在函数中起到返回函数算法结果的作用
    • 函数参数传递过程中,值传递和引用传递区别是什么?
      • 值传递只传递参数的值,引用传递传递参数的地址
  • 编程实验部分

    2-28


    • else-if

      #include
      using namespace std;
      int main(){
      while(1){
      char tmp;
      cout<<"Menu:A(dd) D(elete) S(ort) Q(uit) Select One:"<>tmp;
      if(tmp=='A'){cout<<"数据已经增加"<
    • switch-case

      #include
      using namespace std;
      int main(){
      while(1){
      char tmp;
      cout<<"Menu:A(dd) D(elete) S(ort) Q(uit) Select One:"<>tmp;
      switch(tmp){
          case 'A':cout<<"数据已经增加"<
    • Screenshot:
      .

      2-29


    • 筛法求素数,对大于2的素数倍数设为合数,剩下的即是素数
    • Code:

      #include
      using namespace std;
      int main(){
      bool num[101]={0};
      for(int i=2;i<=100;++i){
      if(!num[i])for(int j=i*2;j<=100;j+=i)num[j]=1;
      }
      for(int i=1;i<=100;++i)if(!num[i])cout<
    • Screenshot:

      2-32


    • while:

      #include
      using namespace std;
      int main(){
      srand((unsigned)time(NULL)); 
      int n=rand()%100;
      int guess=101;
      while(guess!=n)
      {
      cin>>guess;
      if(guessn)cout<<"Answer is smaller than ur guess number!"<
    • do-while:

      #include
      using namespace std;
      int main(){
      srand((unsigned)time(NULL)); 
      int n=rand()%100;
      int guess=101;
      do{
      cin>>guess;
      if(guessn) cout<<"Answer is smaller than ur guess number!"<
    • Screenshot:

      2-34


    • 使用DFS模拟拿球,use数组存放使用情况,每次种类为:,对每次模拟拿球结果累加,得到结果。
    • Code:

      #include
      #define rap(a,b) for(int a=0;a
    • Screenshot:
      • 填充1:

        验证:
      • 填充2

        验证:

五、实验总结与体会


  • 值传递和地址引用是C++学习过程中最易混淆的概念,特别是函数调用参数是数组的情况下,需要特别注意。大牛博客中的解析
  • 算法学习与数学密不可分,2-34中体现的即是统计学知识,概统与高数万万不可放弃
  • 采用了新的CSS样式,补全了博客园markdown的一些不足

推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 2020年第十一届蓝桥杯决赛JAVA B G题“皮亚诺曲线距离“的个人题解目录
    本文是2020年第十一届蓝桥杯决赛JAVA B G题“皮亚诺曲线距离“的个人题解目录。文章介绍了皮亚诺曲线的概念和特点,并提供了计算皮亚诺曲线上两点距离的方法。通过给定的两个点的坐标,可以计算出它们之间沿着皮亚诺曲线走的最短距离。本文还提供了个人题解的目录,供读者参考。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
author-avatar
大女人小诺
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有