C++學習筆記 第三章 函式
阿新 • • 發佈:2019-01-07
1.斐波那契數列
#include<stdio.h> int Fib(int x) { if (x <3) { printf("return 1!\n"); return(1); } else { printf("Fib(%d) and Fib(%d)\n", x - 2, x - 1); return(Fib(x - 2) + Fib(x - 1)); } } int main() { int n, y; printf("Please enter a number:"); scanf("%d", &n); y = Fib(n); printf("%d is the Fib number\n", y); return 0; }
形參傳遞不改變main函式中實參的值,用&x定義一個引用,同時對其進行初始化,使其指向一個已存在的物件,從而對其操作相當於對實參進行操作,改變實參的值。(swap函式)
2.函式過載
#include<stdio.h> #include<cmath> double max1(double x, double y) { if (abs(x - y) <1e-10) //判斷浮點數是否相等的常見處理方式 return x; else if (x >= y) return x; else return y; } int max1(int x, int y) { if (x == y) return x; else if (x > y) return x; else return y; } int max1(int x, int y, int z) { return max1(max1(x, y), z); } double max1(double x, double y, double z) { return max1(max1(x, y), z); } int main() { int a, b, c; double m, n, l; printf("Enter int a:"); scanf("%d", &a); printf("Enter int b:"); scanf("%d", &b); printf("Enter int c:"); scanf("%d", &c); printf("max of %d and %d is %d\n", a, b, max1(a, b)); printf("max of %d , %d and %d is %d\n", a, b, c, max1(a, b, c)); printf("Enter double m:"); scanf("%lf", &m); printf("Enter double n:"); scanf("%lf", &n); printf("Enter double l:"); scanf("%lf", &l); printf("max of %lf and %lf is %lf\n", m, n, max1(m, n)); printf("max of %lf , %lf and %lf is %lf\n", m, n, l, max1(m, n, l)); return 0; }
double型別資料輸入為%lf,輸出可以是%f或%lf。
3.迴文數
#include<stdio.h> bool symm(unsigned n) { unsigned i = n; unsigned m = 0; while (i > 0) { m = m * 10 + i % 10; i /= 10; } return m == n; } int main() { for (unsigned m = 11; m < 1000; m++) { if (symm(m) && symm(m*m) && symm(m*m*m)) { printf("%d\n", m); printf("%d\n", m*m); printf("%d\n", m*m*m); } return 0; } }