前置:C语言
1.1 函数 C++完全兼容了 C语言结构化程序设计
自顶向下:针对可能存在二义性的问题描述,转化为流程化、有限确定的算法描述,进而用无二义性的程序进行实现 按功能划分模块 每一模块都由顺序,选择,循环三种基本结构组成 模块化实现的具体方法为子程序 1.1.1 基本结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # include <iostream> using namespace std;double mypower (int x,int n) { double val = 1.0 ; while (n--) val *= x; return val; } int main () { int x,n; cin >> x >> n; cout << x << "的" << n << "次幂是:" << mypower (x,n) << endl; return 0 ; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 # include <iostream> using namespace std;double power (int x,int n) { double val = 1.0 ; while (n--) val *= x; return val; } int main () { int val = 0 ; char ch; for (int i = 8 ;i >= 0 ;--i){ cin >> ch; if ('1' == ch) val += static_cast <int >(power (2 ,i)); } return 0 ; }
随机数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 # include <iostream> # include <cstdlib> using namespace std;enum GameStatus {WIN,LOSE,PLAYING};int rollDice () { int die1 = 1 + rand ()%6 ; int die2 = 1 + rand ()%6 ; cout << "payer rolled" << die1 << "+" << die2 << "=" << die1 + die2 << endl; return die1 + die2; } int main () { int sum,myPoint; GameStatus status; unsigned seed; cin >> seed; srand (seed); sum = rollDice (); switch (sum){ case 7 : case 11 : status = WIN; break ; case 2 : case 3 : case 12 : status = LOSE; break ; default : status = PLAYING; myPoint = sum; cout << "point is" << sum << endl; } while (PLAYING == status){ sum = rollDice (); if (sum == myPoint) status == WIN; else if (7 == sum) status == LOSE; } if (WIN == status) cout << "You win" << endl; else cout << "You lose" << endl; return 0 ; }
数学函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # include <iostream> # include <cmath> using namespace std;const double TINY_VALUE = 1e-10 ;double tsin (double x) { double g = 0 ; double t = x; int n = 1 ; do { g += t; n++; t = -t*x*x/(2 *n-1 )/(2 *n-1 ); }while (fabs (t) >= TINY_VALUE); return g; }
1.1.2 递归 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # include <iostream> using namespacce std;int c (int n,int k) { if (k > n) return 0 ; else if (n == k || k == 0 ) return 1 ; else return c (n-1 ,k)+c (n-1 ,k-1 ); } int main () { int n,k; cin >> n >> k; cout << "C(n,k)" << c (n,k) << endl; return 0 ; }
1.1.3 引用形参 一个变量的别名,指向同一块内存空间
声明引用时,必须对他初始化,使他指向已存在的对象
在作为函数参数时:执行主调函数中的 调用 时才会为变量分配内存,同时用实参来初始化形参
1.1.4 内联函数 内联函数不在调用时发生控制转移,只是将代码嵌入到调用处
适用于功能简单,规模小,经常使用的函数
1 2 3 inline 数据类型 函数名(形参列表){ }
1.1.5 带默认形参的函数 在函数声明时,声明默认值
带默认形参值的形参必须在参数列表的最后
不允许对同于函数的形参多次定义,默认形参只能声明一次,声明时初始化,定义是不需要再次初始化的
1.1.6 函数重载 两个以上的函数,具有相同的函数名,但是形参个数或数据类型不同,编译器根据不同的参数列表调用最佳匹配函数
在C标准中
在C++标准中