蒲公英根什么樣 蒲公英根什么樣的好
2023-11-19
更新時(shí)間:2023-11-19 18:10:01作者:未知
本講我們介紹如何利用C語言去解決一個(gè)簡單的數(shù)學(xué)問題,1+2+…+100=?
首先我們將問題簡化一下,只求1+2=?相信每位同學(xué)都能很快的寫出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;
}
(上面的代碼并不是完整的代碼,其中的省略號(hào)部分需要大家自己補(bǔ)全。)
這就是我們解決1到100求和的第一種解法。是不是很有成就感?。?!
上面的代碼雖然能夠解決問題,但是大家在編寫代碼的時(shí)候,是不是感覺有點(diǎn)惱火。
我們來分析一下以上代碼的問題,最主要的問題在于我們需要定義101個(gè)整型變量,其中100個(gè)a1, a2,…, a100還有一個(gè)sum。那么是否可以減少變量定義的個(gè)數(shù)呢?
我們需要變量來保存1,2,…,100但是又不想使用a1,a2, …, a100 這種方式。那么是否可以只使用1個(gè)變量就可以呢?即只定義一個(gè)變量i,就可以實(shí)現(xiàn)保存1,2,…,100。
在經(jīng)過一番分析之后,我們發(fā)現(xiàn)可以利用C語言的循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。
int i = 0;
for( i = 1; i <= 100; i++)
上面的代碼是不是就可以實(shí)現(xiàn)只使用一個(gè)變量i就能保存1,2,…,100。
以前我們需要100個(gè)變量來保存1,2,…,100現(xiàn)在我們只需要1個(gè)變量就可以了,是不是進(jìn)步了很多。
那么接下來便是如何實(shí)現(xiàn)求和呢?
我們可以定義一個(gè)變量sum來保存當(dāng)前最新的求和結(jié)果,然后去加i,并將求和的結(jié)果更新到sum,那么sum本質(zhì)就是一個(gè)累加器。(如想了解更多,請關(guān)注《C語言教程累加器》)
int i = 0;
int sum = 0;
for(i = 1; i <= 100; i++){
sum = sum +i;
}
以上代碼是不是很簡潔了,那么這是不是最好的答案呢?還可以改進(jìn)嗎?
其實(shí)我們還可以有更好的方式,那就是直接使用數(shù)學(xué)公式就可以求解。
int sum = (1+100)*100 / 2;
直接一行代碼就可以得到答案,這就是數(shù)學(xué)的魅力哈!所以小伙伴們,要不要好好學(xué)習(xí)數(shù)學(xué)!??!
從上面的分析我們知道,在解決一個(gè)問題的時(shí)候,我們首先想到的大多是一些比較簡單的解法,但是隨著對問題分析的不斷深入,我們可以不斷的改進(jìn)解法,最終會(huì)找到適合你自己的解決問題的方法。算法與編程之美 公眾號(hào)將持續(xù)為您帶來不一樣的分析問題解決問題的思路。