一.实验目的:
二.实验内容:
三.示例代码:
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); } }