小白向C語言 從一到n的累加(大數版)學習筆記

2021-09-28 17:47:47 字數 2610 閱讀 3052

只是在一次上課中聽到老師說起用c實現從1到100萬的累加,於是再也忘不掉2333

於是作為小小白的我開始了一段艱辛的學習歷程

看懂本文所需的主要知識儲備:

1.if判斷語句

2.陣列

3.for迴圈和迴圈鑲嵌結構

話不多說,在此是我的思考與學習過程,具體分為三個步驟

這個應該很好理解,只需要簡單利用數學公式即可

/

*從1到n的累加*

/#include

#include

intmain()

實現這一步之後,我們就大概有乙個基本思路了。

先po上我學習大數乘法參考的文章,講的很細,適合小小白

我學習大數乘法的文章

但是我們並不能直接生搬硬套,我們一定要學會其中的各種技巧與演算法思路,再將它們合適地運用在我們的核心式子中sum = (n+1)*n/2。

(1)實現大數n*n

#include

#include

#include

//定義全域性變數!!!

char n[

100]

;int x[

110]

, z[

210]

;int

main()

for(i =

0; i < len1; i++

)//模擬筆算豎乘,進製在下一步統一處理

}for

(i =

0; i <

200; i++

)//進行進製處理

}

在這裡因為我們是兩個相同大數的相乘所以只需定義乙個字串陣列,其他的都可以套用。

標註重點理解的那一行**,如果小小白們不理解,可以先手算一些數字,認真體會筆算步驟,因為這種方法就是在模擬筆算的過程

(2)大數加法實現n*n +n

現在z[210]是大數n*n,x[110]是大數n。相信對於大數乘法中模擬筆算的理解,我們很快能想到我們只要實現倒序的每一位的相加再進製就可以了。

還需要注意的是,這裡x與z陣列大小不相等,那麼我們只需要將更小的陣列處理完,另乙個陣列的餘下部分不做處理即可。

//實現大數n*n + n

for(i =

0; i <

200; i++)}

}

(這裡的進製處理其實只是上步進製處理的簡化)

(3)實現除2

到這裡已經快要接近勝利了,這一步其實也是沿用上述模擬筆算的思想,應該沒有什麼理解難度。(這個並不屬於大數除法)

//實現n*(n+1)/2

for(i =

200; i >=

0; i--

)//模擬筆算做除法

其實是套用,haha。

我的理解是把第乙個非零數字之前的所有的z[i]=0儲存在迴圈裡,再輸出餘下的數字。

//輸出時的處理

for(i =

200; i >=

0; i--

)//把第乙個非零數之前的所有0去掉

printf

("the sum is ");

for(

; i >=

0; i--

)//倒序輸出

printf

("\n");

system

("pause");

}

大功告成!

以下是完整**:

#include

#include

#include

//定義全域性變數!!!

char n[

100]

;int x[

110]

, z[

210]

;int

main()

for(i =

0; i < len1; i++

)//模擬筆算豎乘,進製在下一步統一處理

}for

(i =

0; i <

200; i++

)//進行進製處理

}//實現大數n*n + n

for(i =

0; i <

200; i++)}

}//實現n*(n+1)/2

for(i =

200; i >=

0; i--

)//模擬筆算做除法

//輸出時的處理

for(i =

200; i >=

0; i--

)//刪除0的字首

printf

("the sum is ");

for(

; i >=

0; i--

)//倒序輸出

printf

("\n");

system

("pause");

}

小小白的第一篇原創,請多多支援。

如有錯誤請大神們不吝賜教!先謝過!

《從一到無窮大》選談 思維的尺度

這個月月初就開始看 從一到無窮大 花了接近兩個星期才看完。這確實是一本讓人放不下手的好書。考慮到我的閱讀速度,乙個多星期一本書已經近乎神速了。在這本書裡我經常會看到一些有趣的數學知識,前段時間我還寫過書裡提到的乙個有趣的東西 環面上的染色問題反而比平面上的 四色問題 更加簡單。這種例子並不罕見,很多...

從乙個新的起點,重識C語言

作為計算機類專業的第一門課程,c語言有著千千萬萬的學習者和使用者,也從側面證明c語言的實用和強大。而作為一名計算機專業的在讀學生,處在關鍵的學習階段,再次深入學習並熟練掌握c語言成為眼下最重要的事。博主的第一身份是it發燒友,座標西安。因為對it的熱愛,報考志願時,博主毅然將6個專業志願全部填寫為計...

乙個小白的,C語言初學總結

接觸c語言也有很長時間了,但是一直沒有系統的學習過,經過這段時間的系統學習,讓我對c語言了乃至對程式設計有了新的認識。下面整理一下這段時間的所學,作以總結。首先是,計算機語言的靈魂 演算法。就我自己的理解,演算法可以稱之為程式設計思維的產物,適用於任何語言,只有掌握了程式設計思維,自己根據具體實際情...