C語言探索之旅 | 第一部分第七課:運(yùn)算那點(diǎn)事

作者 謝恩銘,公眾號「程序員聯(lián)盟」(微信號:coderhub)桐款。
轉(zhuǎn)載請注明出處绪钥。
原文:http://www.reibang.com/p/7bc4493ebb4f

《C語言探索之旅》全系列

內(nèi)容簡介


  1. 前言
  2. 基礎(chǔ)運(yùn)算
  3. 變量之間的運(yùn)算
  4. 縮寫
  5. 數(shù)學(xué)庫
  6. 總結(jié)
  7. 第一部分第八課預(yù)告

1. 前言


上一課是 C語言探索之旅 | 第一部分第六課:變量的世界(三),顯示變量內(nèi)容 忱详。

今天虚汛,我們一起來學(xué)習(xí) C語言(對大多數(shù)編程語言也類似)中的運(yùn)算匾浪。

之前的課中,我們已經(jīng)說過:電腦是一臺“笨笨”的機(jī)器卷哩,只會做計(jì)算户矢。

不管你是用電腦來聽音樂,還是用電腦來看電影殉疼,玩游戲梯浪,其實(shí)電腦只是在做運(yùn)算。不然怎么叫“計(jì)算機(jī)”呢瓢娜?

這一課我們一起來學(xué)習(xí)電腦能實(shí)現(xiàn)的大多數(shù)運(yùn)算挂洛。我們會繼續(xù)使用上一課學(xué)到的變量的知識。其實(shí)眠砾,就是對變量做加虏劲,減,乘,除柒巫,取模励堡,等等各種操作。

即使你對數(shù)學(xué)不感興趣堡掏,這一課也是必不可少的应结。硬著頭皮上吧~

2. 基礎(chǔ)運(yùn)算


說到基礎(chǔ)運(yùn)算,無外乎:

  • 取模 (如果你是第一次聽說泉唁,不用擔(dān)心鹅龄,我們后面會解釋)

其實(shí)你的電腦也只知道做這些基礎(chǔ)運(yùn)算,如果你要它做更復(fù)雜的運(yùn)算(平方亭畜,乘方扮休,對數(shù),等)拴鸵,那你需要編程才行玷坠,就是說你需要向電腦解釋怎么做。

但是劲藐,很幸運(yùn)的是八堡,在這一課中我們會看到其實(shí) C語言已經(jīng)設(shè)計(jì)好了數(shù)學(xué)庫(關(guān)于庫的知識,請看以前的課程瘩燥。簡單地說就是已經(jīng)編寫好的,可以供你的程序調(diào)用的各種變量和函數(shù)的集合)不同,你只要用專家定義好的庫里面的內(nèi)容就好了厉膀,不需要自己重復(fù)“造輪子”。

一開始二拐,我們從加法開始看吧服鹅。

為了在 C語言中做加法,我們要用到 + 號百新。不開玩笑企软,就是這么簡單。

你要把加法的結(jié)果放到一個變量里面饭望。我們就來創(chuàng)建一個整數(shù)類型的變量仗哨,取名叫 result(表示“結(jié)果”)。

int result = 0;
result = 4 + 6;

不必是專業(yè)數(shù)學(xué)家铅辞,也可以猜想到程序運(yùn)行后 result 的值會變?yōu)?10厌漂,我們用 printf 函數(shù)來輸出結(jié)果:

printf("4 + 6 = %d", result);

運(yùn)行程序,顯示:

4 + 6 = 10

看吧斟珊,加法就是這么簡單苇倡,一點(diǎn)也不任性。

對于其他的運(yùn)算類型,也是同樣的原理旨椒。只有運(yùn)算符不同晓褪,見下表:

運(yùn)算 符號
加法 +
減法 -
乘法 *
除法 /
取模 %

如果你曾經(jīng)使用過電腦上的計(jì)算器,你肯定知道這些符號综慎。除了最后兩個(除和取模)涣仿,其他應(yīng)該很熟悉。我們就來說說最后兩個符號寥粹。

除法


當(dāng)沒有余數(shù)時变过,除法運(yùn)行得好好的。比如涝涤,6 / 3 等于 2媚狰,你的電腦給了你正確的答案。到這里為止還沒有問題阔拳。

但是崭孤,我們假如讓電腦做 5 / 2,按理結(jié)果應(yīng)該是 2.5糊肠。但是辨宠,來看看我們的程序:

int result = 0; 
result = 5 / 2;
printf ("5 / 2 = %d", result);

運(yùn)行程序,顯示:

5 / 2 = 2

我們讓電腦計(jì)算 5 / 2货裹,期待的結(jié)果是 2.5嗤形,但是實(shí)際上電腦卻給出了 2。這不是“很二”嘛... 親愛的電腦弧圆,你怎么可以這樣對我赋兵?

其實(shí),內(nèi)有蹊蹺搔预。難道我們的電腦真的在這點(diǎn)上這么蠢笨嗎霹期?

事實(shí)上,當(dāng)電腦看到數(shù)字 5 和 2 時拯田,它會做一個整數(shù)之間的除法(也叫做“歐幾里得除法”)历造,就是說它會把結(jié)果截取一段,只留下整數(shù)部分(這里是 2)船庇。

你也許會說:“啊吭产,我知道了,都是因?yàn)?result 這個變量是整數(shù)類型嘛鸭轮。如果把 result 聲明為 double 類型的浮點(diǎn)數(shù)垮刹,那它應(yīng)該可以儲存帶小數(shù)點(diǎn)的數(shù)啦≌懦冢”

其實(shí)不然荒典,這不是原因酪劫。假如你把 result 聲明為 double 類型,運(yùn)算
result = 5 / 2寺董,你還是會得到 2覆糟。事實(shí)上,這是因?yàn)?/ 運(yùn)算符兩邊的數(shù)是整數(shù)遮咖,所以電腦會做整數(shù)之間的除法滩字。

當(dāng)然,也是可以讓電腦輸出你想要的結(jié)果的御吞,怎么辦呢麦箍?看下面程序:

double result = 0; 
result = 5.0 / 2.0;
printf ("5 / 2 = %f", result);

運(yùn)行,顯示:

5 / 2 = 2.500000

看到了嗎陶珠,如果要你的電腦顯示正確結(jié)果挟裂,還需要你把運(yùn)算符兩邊的數(shù)寫成 5.0 和 2.0(同樣是 5 和 2,但是電腦卻認(rèn)為這兩個是浮點(diǎn)數(shù)揍诽,因此它就做浮點(diǎn)數(shù)的除法)诀蓉。怎么樣,電腦任性不暑脆?

這個整數(shù)除法的特性很重要渠啤。所以得記住,對于電腦來說:

5 / 2 = 2

10 / 3 = 3

4 / 5 = 0

有點(diǎn)令人吃驚添吗,不是么沥曹?但這就是電腦做整數(shù)運(yùn)算的方式。

如果你想要得到浮點(diǎn)數(shù)的結(jié)果碟联,需要運(yùn)算的數(shù)本身是浮點(diǎn)數(shù)(提一下妓美,其實(shí)不需要兩個數(shù)都是浮點(diǎn)數(shù),一個是浮點(diǎn)數(shù)就夠了玄帕,電腦會自動把另一個也認(rèn)為是浮點(diǎn)數(shù)來做運(yùn)算):

5.0 / 2.0 = 2.5

10 / 3.0 = 3.33333

4.0 / 5 = 0.8

事實(shí)上部脚,在做整數(shù)除法時想邦,比如 5 / 2裤纹,你的電腦會回答下面問題:“5里面有多少個 2 ?”丧没,答案是兩個鹰椒。同樣的,“10 里面有多少個 3 呢”呕童,答案是三個漆际。

然后你又會問了,我們怎么才能獲取到除法剩下的數(shù)(余數(shù))呢夺饲?

這就要輪到取模運(yùn)算出場了奸汇。

取模


取模運(yùn)算是獲得除法的余數(shù)的一種數(shù)學(xué)運(yùn)算施符。可能相比 加擂找、減戳吝、乘、除這基本的四則運(yùn)算來說贯涎,它沒有那么被人熟知听哭,但對電腦來說,取模是基本的運(yùn)算之一塘雳。很有可能是為了解決上面提到的整數(shù)除法的難題陆盘。

上面表格里列出來了,取模的符號是 %

以下列出一些取模運(yùn)算的例子:

5 % 2 = 1

14 % 3 = 2

4 % 2 = 0

取模運(yùn)算 5 % 2 是除法運(yùn)算 5 / 2 的余數(shù)败明,所以是 1隘马。電腦計(jì)算 5 = 2 * 2 + 1,所以取模運(yùn)算就得出 1 為結(jié)果肩刃。

同樣地祟霍,14 = 3 * 4 + 2,所以余數(shù)為 2盈包。

4 = 2 * 2沸呐,所以余數(shù)為 0。

好了呢燥,我宣布一個好消息:“我們已經(jīng)學(xué)了所有的基礎(chǔ)運(yùn)算了崭添。數(shù)學(xué)課下課了~”

3. 變量之間的運(yùn)算


誒,變量之間的運(yùn)算叛氨?

怎么數(shù)學(xué)老師剛走呼渣,又來了數(shù)學(xué)教授啊寞埠?沒辦法屁置,電腦又名計(jì)算機(jī),肯定要跟數(shù)學(xué)打點(diǎn)交道的嘛仁连。幸虧來的不是“叫獸”蓝角。

既然我們在上面一節(jié)中已經(jīng)學(xué)習(xí)了基礎(chǔ)的 5 種運(yùn)算,那現(xiàn)在可以來看看變量之間的運(yùn)算咯饭冬。

事實(shí)上使鹅,變量之間的運(yùn)算也是同理。

result = number1 + number2;

上面這一行代碼對 number1 和 number2 這兩個變量做加法運(yùn)算昌抠,并且把結(jié)果儲存到 result 這個變量里患朱。

現(xiàn)在我們的學(xué)習(xí)越來越有意思了。其實(shí)你現(xiàn)在已經(jīng)可以實(shí)現(xiàn)一個迷你的計(jì)算器的功能了炊苫,不要懷疑自己裁厅,你可以的冰沙。

想象一個程序,請求用戶輸入兩個數(shù)执虹,這兩個數(shù)倦淀,你將其儲存在變量里。

然后声畏,你對這兩個變量做加法撞叽,并且把結(jié)果儲存在另一個變量里。接下來插龄,你就只需要把計(jì)算的結(jié)果顯示在屏幕上就好了愿棋,讓用戶看看電腦的本領(lǐng),很多人做加法可沒有這么快速呢均牢!

試著自己編寫以上程序糠雨,很簡單的,也可以給你練手徘跪。

當(dāng)然了甘邀,我們還是把代碼寫上:

#include <stdio.h>

int main(int argc, char *argv[])
{
    int result = 0, number1 = 0, number2 = 0;

    // 請求用戶輸入number1和number2的值:
    printf("請輸入數(shù)字1 : ");
    scanf("%d", &number1);
    printf("請輸入數(shù)字2 : ");
    scanf("%d", &number2);

    // 做運(yùn)算:
    result = number1 + number2;

    // 把運(yùn)算結(jié)果顯示在屏幕上 :
    printf ("%d + %d = %d\n", number1, number2, result);

    return 0;
}

運(yùn)行,顯示:

請輸入數(shù)字1 : 289
請輸入數(shù)字2 : 376
289 + 376 = 665

可能你還沒意識到:這是我們第一個有點(diǎn)意思的程序垮庐。我們的程序請求用戶輸入兩個數(shù)松邪,然后做加法,再把結(jié)果輸出到屏幕上哨查。很棒吧逗抑!

請你自己也試著用其他四個基礎(chǔ)運(yùn)算符來寫程序,看看結(jié)果如何寒亥。

4. 縮寫


之前我們保證過邮府,不會再有新的運(yùn)算形式出現(xiàn)了。確實(shí)如此溉奕,我們已經(jīng)知道了所有的基礎(chǔ)運(yùn)算:加褂傀、減、乘加勤、除仙辟、取模。用這些基礎(chǔ)運(yùn)算我們可以做所有事情胸竞。不需要其他的運(yùn)算了欺嗤。

我知道這很難令人相信参萄。你會說難道一個很復(fù)雜的 3D 游戲最終也是由加卫枝、減、乘讹挎、除等構(gòu)成的校赤?是的吆玖,確實(shí)如此。

雖然如此马篮,但是在 C語言里我們還可以進(jìn)行運(yùn)算的縮寫沾乘。

為什么要縮寫呢?因?yàn)楹芏鄷r候我們做的運(yùn)算都是重復(fù)的浑测。下面你就會看到縮寫的好處了翅阵。

自增運(yùn)算


你會發(fā)現(xiàn)你在編程中經(jīng)常要對一個變量進(jìn)行 +1 操作。

假設(shè)你的變量名字是 number迁央,你知道怎么對它進(jìn)行 +1 操作嗎掷匠?是這樣做的:

number = number + 1;

上面的語句做了什么呢?

首先我們做運(yùn)算 number + 1岖圈,然后我們把運(yùn)算結(jié)果儲存到變量 number (它自己)中讹语。

因此,假如我們的變量值是 4蜂科,運(yùn)算后變成 5 了顽决,假如它的值是 8,那會變成 9导匣,依此類推才菠。

這個運(yùn)算是重復(fù)的。要知道贡定,計(jì)算機(jī)科學(xué)家都是很懶的人鸠儿,他們可不希望輸入兩遍 number(確實(shí)也挺累人的)。

于是他們發(fā)明了一個縮寫形式厕氨,叫做自增運(yùn)算进每。它的結(jié)果和 +1 操作是一樣的:

number++;

這一行代碼,就是用了自增運(yùn)算符 ++命斧,是不是比剛才那句 number = number + 1 簡單了田晚?它意味著“對 number 做 +1 運(yùn)算”。

敏銳的讀者可能想到了国葬,編程語言 C++ 的 ++ 符號其實(shí)正是自增運(yùn)算符的意思贤徒。我以前也不太理解為什么不是 C+,而是 C++汇四。

原來計(jì)算機(jī)科學(xué)家跟大家開了一個很有意味的玩笑:C++ 意味著對 C 做 +1 操作接奈,表示“比 C語言多一點(diǎn)”。

當(dāng)然了通孽,事實(shí)上 C++ 只是用不同的方式來編程序宦,并不是說 C++ 比 C語言更優(yōu)秀,只是不同而已背苦。

自減運(yùn)算


知道了自加運(yùn)算的原理互捌,自減運(yùn)算應(yīng)該不難理解吧:就是對變量進(jìn)行 -1 運(yùn)算潘明。

number--;

其他的縮寫形式


同理,其他還有好幾種運(yùn)算的縮寫形式秕噪。比如 number = number * 2; 可以寫成 number *= 2; 钳降。

看以下代碼:

int number = 2;

number += 4;  // number 變?yōu)?6
number -= 3;  // number 變?yōu)?3
number *= 5;  // number 變?yōu)?15
number /= 3;  // number 變?yōu)?5
number %= 3;  // number 變?yōu)?2(因?yàn)?5 = 1 * 3 + 2)

5. 數(shù)學(xué)庫


在 C語言中,我們有一些稱之為“標(biāo)準(zhǔn)庫”的東西腌巾,就是那些很實(shí)用的庫遂填。我們一般會經(jīng)常使用那些基礎(chǔ)庫。

復(fù)習(xí)一下:庫就是指已經(jīng)定義好的函數(shù)和變量的集合澈蝙。這些函數(shù)由前人寫成城菊,可以避免我們重復(fù)“造輪子”。

我們已經(jīng)使用過 stdio.h 庫中的 printf 和 scanf 這兩個函數(shù)了碉克。

其實(shí)還有很多其他很實(shí)用的庫凌唬,其中就有一個叫 math.h,里面包含了與數(shù)學(xué)相關(guān)的函數(shù)漏麦。

實(shí)際上客税,光是加、減撕贞、乘更耻、除、取模是不夠的捏膨。雖然底層都是這五個運(yùn)算秧均,但是很多時候我們需要做復(fù)雜的運(yùn)算形式,就需要調(diào)用庫或者自己寫函數(shù)了号涯。

因?yàn)殡娔X并沒辦法理解除了 +目胡,-,*链快,/誉己,% 之外的運(yùn)算符,比如你如果要電腦做乘方域蜗,輸入 5 ^ 2韵丑,電腦完全不理解什么意思盆赤,除非你調(diào)用數(shù)學(xué)庫里已經(jīng)定義好的做乘方的函數(shù)磕秤。

調(diào)用數(shù)學(xué)庫很簡單犁珠,

#include <math.h>

只要用這一行代碼,接下來你的程序就可以用里面定義的所有函數(shù)了丝蹭。

我們介紹其中幾個最常用的吧慢宗。

fabs


這個函數(shù)返回絕對值:

  • 如果你傳給這個函數(shù) -53,它會返回 53 。
  • 如果你傳給這個函數(shù) 53婆廊,它會返回 53 。
double absolute = 0, number = -29;
absolute = fabs(number);   // absolute 的值變?yōu)?29

ceil


這個函數(shù)返回給出的浮點(diǎn)數(shù)后面緊接的整數(shù)巫橄。這是一種舍入的方式淘邻。ceil 函數(shù)總是舍入緊鄰的比參數(shù)大的整數(shù)。

double above = 0, number = 34.81;
above = ceil(number);  // above 的值變?yōu)?35

floor


這個函數(shù)與 ceil 的作用相對湘换,返回給出的浮點(diǎn)數(shù)前面緊接的整數(shù)宾舅。

double below = 0, number = 45.63;
below = floor(number);   // below 的值變?yōu)?45

pow


這個函數(shù)計(jì)算數(shù)字的乘方。你要給它兩個參數(shù):底數(shù)和指數(shù)彩倚。

double result = 0, number = 2;
result = pow(number, 4);  // result 的值變?yōu)?16(2 ^ 4 = 16)

sqrt


這個函數(shù)返回參數(shù)的平方根筹我。返回值是 double 類型。

double result = 0, number = 100;
result = sqrt(number);  // result 的值變?yōu)?10

sin, cos, tan


這三個函數(shù)是計(jì)算正弦帆离,余弦蔬蕊,正切的值。

asin, acos, atan


這三個函數(shù)是計(jì)算反正弦哥谷,反余弦岸夯,反正切的值。

exp


這個函數(shù)是特殊的乘方形式们妥,返回以 e(自然對數(shù)的底數(shù)猜扮,近似等于2.7182)為底數(shù)的指數(shù)運(yùn)算的值。

log


這個函數(shù)返回以 e 為底的對數(shù)值(我們學(xué)數(shù)學(xué)時也寫成 ln)监婶。

log10


這個函數(shù)返回以 10 為底的對數(shù)值旅赢。

6. 總結(jié)


  1. 電腦只知道計(jì)算。

  2. 電腦會的運(yùn)算類型很基本:加惑惶、減煮盼、乘、除带污、取模(取模就是做除法后剩下的部分)孕似。

  3. 自加是將變量加一的運(yùn)算,寫成 variable++ 刮刑。

  4. 自減是將變量減一的運(yùn)算喉祭,寫成 variable-- 。

  5. 為了增加電腦能知道的運(yùn)算形式雷绢,需要載入數(shù)學(xué)庫(#include <math.h>)泛烙。

  6. 數(shù)學(xué)庫里有更高級的函數(shù),例如 乘方翘紊,平方根蔽氨,舍入,指數(shù),對數(shù)鹉究,等宇立。

7. 第一部分第八課預(yù)告


今天的課就到這里,一起加油吧自赔!

下一課:C語言探索之旅 | 第一部分第八課:條件表達(dá)式


我是 謝恩銘妈嘹,公眾號「程序員聯(lián)盟」(微信號:coderhub)運(yùn)營者,慕課網(wǎng)精英講師 Oscar 老師绍妨,終生學(xué)習(xí)者润脸。
熱愛生活,喜歡游泳他去,略懂烹飪毙驯。
人生格言:「向著標(biāo)桿直跑」

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市灾测,隨后出現(xiàn)的幾起案子爆价,更是在濱河造成了極大的恐慌,老刑警劉巖媳搪,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件允坚,死亡現(xiàn)場離奇詭異,居然都是意外死亡蛾号,警方通過查閱死者的電腦和手機(jī)稠项,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲜结,“玉大人展运,你說我怎么就攤上這事【ⅲ” “怎么了拗胜?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長怒允。 經(jīng)常有香客問我埂软,道長,這世上最難降的妖魔是什么纫事? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任勘畔,我火速辦了婚禮,結(jié)果婚禮上丽惶,老公的妹妹穿的比我還像新娘炫七。我一直安慰自己,他們只是感情好钾唬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布万哪。 她就那樣靜靜地躺著侠驯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奕巍。 梳的紋絲不亂的頭發(fā)上吟策,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機(jī)與錄音的止,去河邊找鬼檩坚。 笑死,一個胖子當(dāng)著我的面吹牛冲杀,可吹牛的內(nèi)容都是我干的效床。 我是一名探鬼主播睹酌,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼权谁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了憋沿?” 一聲冷哼從身側(cè)響起旺芽,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辐啄,沒想到半個月后采章,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡壶辜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年悯舟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砸民。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡抵怎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出岭参,到底是詐尸還是另有隱情反惕,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布演侯,位于F島的核電站姿染,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏秒际。R本人自食惡果不足惜悬赏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望娄徊。 院中可真熱鬧舷嗡,春花似錦、人聲如沸嵌莉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至中鼠,卻和暖如春可婶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背援雇。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工矛渴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惫搏。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓具温,卻偏偏與公主長得像,于是被迫代替她去往敵國和親筐赔。 傳聞我的和親對象是個殘疾皇子铣猩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容