1. 程式人生 > >程式結構(例題:計算最大公約數gcd程式)

程式結構(例題:計算最大公約數gcd程式)

感覺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就相當於是換行符了 這樣的吧