程式結構(例題:計算最大公約數gcd程式)
阿新 • • 發佈:2018-12-30
感覺c++的標頭檔案跟c有很大相似的地方,但是形式不一樣,所以還是要記
而且我以前只是照著用,很多沒有搞懂意思
現在開始學習啦!(ps我去圖書館居然沒有找到c++ primer最新版的QAQ)
#include <iostream> //in out stream(流) 就是輸入輸出流啦(我之前一直以為會跟c裡面萬能標頭檔案stdio.h差不多的來著。。所以看到這個很懵逼
#include <assert.h> //能夠使用函式assert → 測試一個條件並可能使程式終止(我之前在學長測試題目資料的程式碼裡面好像看過,就是用於限制未知數取值的吧大概
下面是gcd函數了
其實我看了好像有好幾種寫法 我隨便po個幾種
1、這是書上的(感覺就是輾轉相除法了 我當時還懵逼了一陣子
int gcd(int m,int n) { int r; while(n!=0) { r=m%n; m=n; n=r; } return m; }
2、這個就是!我做出西北大學第一題的時候用的函數了!
其實思路有點類似於遞推了,而且這個程式碼量少點,而且我感覺。更容易看懂?
int gcd(int m,int n) { if(n==0) return m; else return gcd(n,m%n); }
cout << "Greatest Common Divisor\n";
關於這一行程式碼,我突然知道了什麼不得了的事情,我之前一直在糾結用cout 換行符怎麼搞
原來!跟printf一樣直接打在引號裡面的內容就行了
cout << "\nGCD(" << x << "," << y << ")=" << (g=gcd(x, y)) << endl;
這行。。可真是。。太複雜了呀
其實打印出來就是GCD(10, 20) = 10 可是特麼的居然要分開這麼多打
總之就是未知量和直接能輸入的要分開了。。。
然後那個g=gcd()那裡有一個括號 不知道為啥
endl就相當於是換行符了 這樣的吧