实验1 C++函数

一.实验目的:

  1. 掌握定义函数的方法、函数实参与形参的对应关系以及“值传递”的方式。
  2. 熟悉函数的嵌套调用和递归调用的方法。
  3. 熟悉全局变量、局部变量概念和使用方式。

二.实验内容:

  1. 运行调试第2章编程示例2-5减法游戏;完成练习题2.5.1,2.5.2和2.5.3;
  2. 运行调试第4章编程示例4-3素因数;完成练习题4.3.1,4.3.2,4.3.3;
  3. 运行调试第4章编程示例4-5汉诺塔;完成练习题4.5.1,4.5.2。

三.示例代码:

  1.第2章编程示例2-5减法游戏:

#include <iostream>

using namespace std;

int main() { int total, n; cout << "Welcome to NIM. Pick a starting total: "; cin >> total; while (true) {

// Pick best response and print results.

if ((total % 3) == 2) { total = total - 2; cout << "I am subtracting 2." << endl; } else { total--; cout << "I am subtracting 1." << endl; } cout << "New total is " << total << endl; if (total == 0) { cout << "I win!" << endl; break; }

// Get user's response; must be 1 or 2.

cout << "Enter number to subtract (1 or 2): "; cin >> n; while (n < 1 || n > 2) { cout << "Input must be 1 or 2." << endl; cout << "Re-enter: " << endl; cin >> n; } total = total - n; cout << "New total is " << total << endl; if (total == 0) { cout << "You win!" << endl; break; } } system("PAUSE"); return 0; }

  2. 第4章编程示例4-3素因数:

#include <math.h> #include <iostream> using namespace std;

void get_divisors(int n);

int main() { int n;

cout << "Enter a number and press ENTER: "; cin >> n;

get_divisors(n);

cout << endl; system("PAUSE"); return 0; }

// Get divisors function // This function prints all the divisors of n, // by finding the lowest divisor, i, and then // rerunning itself on n/i, the remaining quotient.

void get_divisors(int n) { int i; double sqrt_of_n = sqrt((double) n);

for (i = 2; i <= sqrt_of_n; i++) if (n % i == 0) { // If i divides n evenly, cout << i << ", "; // Print i, get_divisors(n / i); // Factor n/i, return; // and exit. }

// If no divisor is found, then n is prime; // Print n and make no further calls.

cout << n; }

  3.第4章编程示例4-5汉诺塔:

#include <cstdlib> #include <iostream>

using namespace std; void move_rings(int n, int src, int dest, int other);

int main() { int n = 3; // Stack is 3 rings high move_rings(n, 1, 3, 2); // Move stack 1 to stack 3 system("PAUSE"); return 0; }

void move_rings(int n, int src, int dest, int other) { if (n == 1) { cout << "Move from "<< src <<" to "<< dest << endl; } else { move_rings(n - 1, src, other, dest); cout << "Move from "<< src <<" to "<< dest << endl; move_rings(n - 1, other, dest, src); } }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老九学堂

2016计算机二级Java考试真题大放送,还不快收藏!

1、[单选题] 在软件开发中,需求分析阶段可以使用的工具是(  )。 A.N-S图 B.DFD图 C.PAD图 D.程序流程图 参考答案:B 参考解析:在软...

3574
来自专栏kalifaの日々

腾讯大连电话面试题目

1.项目相关的细节问题。 2.讲讲STL里你常用的数据结构 2.1那么map的时间复杂度是多少 2.2map的底层实现是什么 3.讲解MVC每一层分别是...

742
来自专栏零基础使用Django2.0.1打造在线教育网站

关于JAVA你必须知道的那些事(一):概述

第一次写文章,有点小紧张,不过没关系,因为我面对的都是小白。好了废话少说,直接开始吧。

812
来自专栏JackieZheng

Hadoop阅读笔记(七)——代理模式

  关于Hadoop已经小记了六篇,《Hadoop实战》也已经翻完7章。仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序、单表链接等,想得其精髓,...

21510
来自专栏nnngu

百度搜索 “Java面试题” 前200页(面试必看)

本文中的题目来源于网上的一篇文章《百度搜索 “Java面试题” 前200页》,但该文章里面只有题目,没有答案。因此,我整理了一些答案发布于本文。本文整理答案的原...

80111
来自专栏我是攻城师

关于Java里面多线程同步的一些知识

对于任何Java开发者来说多线程和同步是一个非常重要的话题。比较好的掌握同步和线程安全相关的知识将使得我们则更加有优势,同时这些知识并不是非常容易就能熟练掌握的...

1083
来自专栏数据之美

MapReduce 中的两表 join 几种方案简介

1. 概述 在传统数据库(如:MYSQL)中,JOIN操作是非常常见且非常耗时的。而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独...

2035
来自专栏一名合格java开发的自我修养

Strom序列化机制

  Storm 中的 tuple可以包含任何类型的对象。由于Storm 是一个分布式系统,所以在不同的任务之间传递消息时Storm必须知道怎样序列化、反序列化消...

862
来自专栏Golang语言社区

Node.js新手必须知道的4个JavaScript概念

如果只需要知道一种编程语言就可以构建一个全栈的应用程序,是不是特别了不起?Ryan Dahl为了把这个想法成为现实,创造了node.js。Node.js是建立在...

3387
来自专栏代码GG之家

android MVVM开发模式(五)

android MVVM开发模式(五) 上一讲我们说了@InverseBindingAdapter标记的事情。通过这个,我们可以实现view向数据方向的传递。从...

2166

扫码关注云+社区

领取腾讯云代金券