【C語言】1到100求和,原來還可以這樣寫?

本講我們介紹如何利用C語言去解決一個簡單的數學問題,1+2+...+100=?

首先我們將問題簡化一下,只求1+2=?相信每位同學都能很快的寫出c語言的程序。按照第一講的思路,我們先寫程序模板,然後在指定的地方編寫代碼即可。

#include <stdio.h>

int main(){

            int a1 = 1;

            int a2 = 2;

            int sum =a1 + a2;

            return 0;

} 

是不是很快就寫出了程序代碼,既然1+2我們能求,那麼1+2+...+100是不是也是同樣的道理。

#include <stdio.h>

int main(){

            int a1 = 1;

            int a2 = 2;

            ...                                

            int a100 =100;

            int sum =a1 + a2+...+a100;

            return 0;

}

(上面的代碼並不是完整的代碼,其中的省略號部分需要大家自己補全。)

這就是我們解決1到100求和的第一種解法是不是很有成就感!!!

上面的代碼雖然能夠解決問題,但是大家在編寫代碼的時候,是不是感覺有點惱火。

我們來分析一下以上代碼的問題,最主要的問題在於我們需要定義101個整型變量,其中100個a1, a2,..., a100還有一個sum。那麼是否可以減少變量定義的個數呢?

我們需要變量來保存1,2,...,100但是又不想使用a1,a2, ..., a100 這種方式。那麼是否可以只使用1個變量就可以呢?即只定義一個變量i,就可以實現保存1,2,...,100。

在經過一番分析之後,我們發現可以利用C語言的循環結構來實現。

int i = 0;

for( i = 1; i <= 100; i++)

上面的代碼是不是就可以實現只使用一個變量i就能保存1,2,...,100。

以前我們需要100個變量來保存1,2,...,100現在我們只需要1個變量就可以了,是不是進步了很多。

那麼接下來便是如何實現求和呢?

我們可以定義一個變量sum來保存當前最新的求和結果,然後去加i,並將求和的結果更新到sum,那麼sum本質就是一個累加器。(如想了解更多,請關注《C語言教程累加器》)

int i = 0;

int sum = 0;

for(i = 1; i <= 100; i++){

            sum = sum +i;

}

以上代碼是不是很簡潔了,那麼這是不是最好的答案呢?還可以改進嗎?

其實我們還可以有更好的方式,那就是直接使用數學公式就可以求解。



int sum = (1+100)*100 / 2;

直接一行代碼就可以得到答案,這就是數學的魅力哈!所以小夥伴們,要不要好好學習數學!!!

總結

從上面的分析我們知道,在解決一個問題的時候,我們首先想到的大多是一些比較簡單的解法,但是隨着對問題分析的不斷深入,我們可以不斷的改進解法,最終會找到適合你自己的解決問題的方法。算法與編程之美 公衆號將持續爲您帶來不一樣的分析問題解決問題的思路。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章