学堂在线C++程序设计第四章学习笔记 函数定义 函数:定义好的可重用功能模块
定义函数:将一个模块的算法用C++描述出来
函数的返回值:需要返回的计算结果
定义函数的语法:
1 2 3 4 类型标识符 函数名(形式参数表) { 语句 }
形式参数表
返回值
return 一个计算结果
返回的类型是类型标识符的类型
没有返回值,类型标识符写void
函数调用 调用函数前需要先声明函数原型
函数原型
函数调用
计算x的n次方 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <iostream> using namespace std;double pow (double x, int n) { double sum = 1.0 ; for (int i = 1 ; i <= n; i++) { sum = x * sum; } return sum; } int main () { double sum = pow (2 ,4 ); cout << sum; return 0 ; }
进制转换 输入一个8位二进制,输出十进制
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 #include <iostream> using namespace std;double pow (double x, int n) { double sum = 1 ; for (int i = 1 ; i <= n; i++) { sum *= x; } cout << "x:" <<x<<"n:" <<n<<endl; return sum; } int main () { int h = 0 ; for (int i = 7 ; i >= 0 ; i--) { char d; cout << "输入:" ; cin >> d; if (d == '1' ) { h += static_cast <int >(pow (2 , i)); } } cout << h; 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 #include <iostream> using namespace std;double arctan (double x) { double sqr = x * x; double e = x; double r = 0 ; int i = 1 ; while (e / i > 1e-15 ) { double f = e / i; r = (i % 4 == 1 ) ? r + f : r - f; e = e * sqr; i += 2 ; } return r; } int main () { double a = 16.0 * arctan (1 /5.0 ); double b = 4.0 * arctan (1 /239.0 ); cout << "PI = " << a - b << endl; return 0 ; }
求回文 寻找并输出11~999之间的数M,它满足M、M2 和M3 均为回文数。
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;bool symm (unsigned int n) { unsigned int i = n; unsigned int m = 0 ; while (i > 0 ) { m = m * 10 + i % 10 ; i /= 10 ; } return m == n; } int main () { for (int i = 11 ; i <= 999 ; i++) { if (symm (i) && symm (i * i) && symm (i * i *i)) { cout << "m = " << i << endl; cout << "m * m =" << i * i << endl; cout << "m * m * m = " << i * i*i <<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 29 30 31 32 #include <iostream> #include <cmath> using namespace std;const double IINY_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 -2 ); } while (fabs (t) >= IINY_VALUE); return g; } int main () { double k,r,s; cout << "r =" ; cin >> r; cout << "s=" ; cin >> s; if (r * r <= s * s) { k = sqrt (tsin (r) * tsin (r) + tsin (s) * tsin (s)); } else { k = tsin (r * s) /2 ; } cout << k <<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 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 #include <iostream> #include <cstdlib> using namespace std;enum gameStatus {WIN,LOSE,PLAYING};int rollDice () { unsigned int rand1 = rand () % 6 + 1 ; unsigned int rand2 = rand () % 6 + 1 ; cout << "rand1 + rand2 = " << rand1 + rand2 << endl; return rand1 + rand2; } int main () { unsigned int seed, sum, myPoint; gameStatus status; cout << "enter is 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; break ; } while (status == PLAYING) { sum = rollDice (); if (sum == 7 ) { status = LOSE; } else if (sum == myPoint) { status = WIN; } } if (status == WIN) { cout << "WIN" ; } else if (status == LOSE) { cout << "LOSE" ; } return 0 ; }