日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

shell 做加法运算_C语言探索之旅 | 第一部分第七课:运算那点事

發(fā)布時(shí)間:2024/1/23 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell 做加法运算_C语言探索之旅 | 第一部分第七课:运算那点事 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上一課是 C語(yǔ)言探索之旅 | 第一部分第六課:變量的世界(三),顯示變量?jī)?nèi)容

今天,我們一起來(lái)學(xué)習(xí) C語(yǔ)言(對(duì)大多數(shù)編程語(yǔ)言也類(lèi)似)中的運(yùn)算。

之前的課中,我們已經(jīng)說(shuō)過(guò):電腦是一臺(tái)“笨笨”的機(jī)器,只會(huì)做計(jì)算。

不管你是用電腦來(lái)聽(tīng)音樂(lè),還是用電腦來(lái)看電影,玩游戲,其實(shí)電腦只是在做運(yùn)算。不然怎么叫“計(jì)算機(jī)”呢?

這一課我們一起來(lái)學(xué)習(xí)電腦能實(shí)現(xiàn)的大多數(shù)運(yùn)算。我們會(huì)繼續(xù)使用上一課學(xué)到的變量的知識(shí)。其實(shí),就是對(duì)變量做加,減,乘,除,取模,等等各種操作。

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

https://jq.qq.com/?_wv=1027&k=fvGk4MIo

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

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

  • 取模 (如果你是第一次聽(tīng)說(shuō),不用擔(dān)心,我們后面會(huì)解釋)

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

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

一開(kāi)始,我們從加法開(kāi)始看吧。

為了在 C語(yǔ)言中做加法,我們要用到 + 號(hào)。不開(kāi)玩笑,就是這么簡(jiǎn)單。

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

int result = 0; result = 4 + 6; 復(fù)制代碼

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

printf("4 + 6 = %d", result); 復(fù)制代碼

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

4 + 6 = 10 復(fù)制代碼

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

對(duì)于其他的運(yùn)算類(lèi)型,也是同樣的原理。只有運(yùn)算符不同,見(jiàn)下表:

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

如果你曾經(jīng)使用過(guò)電腦上的計(jì)算器,你肯定知道這些符號(hào)。除了最后兩個(gè)(除和取模),其他應(yīng)該很熟悉。我們就來(lái)說(shuō)說(shuō)最后兩個(gè)符號(hào)。

除法

當(dāng)沒(méi)有余數(shù)時(shí),除法運(yùn)行得好好的。比如,6 / 3 等于 2,你的電腦給了你正確的答案。到這里為止還沒(méi)有問(wèn)題。

但是,我們假如讓電腦做 5 / 2,按理結(jié)果應(yīng)該是 2.5。但是,來(lái)看看我們的程序:

int result = 0; result = 5 / 2; printf ("5 / 2 = %d", result); 復(fù)制代碼

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

5 / 2 = 2 復(fù)制代碼

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

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

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

你也許會(huì)說(shuō):“啊,我知道了,都是因?yàn)?result 這個(gè)變量是整數(shù)類(lèi)型嘛。如果把 result 聲明為 double 類(lèi)型的浮點(diǎn)數(shù),那它應(yīng)該可以?xún)?chǔ)存帶小數(shù)點(diǎn)的數(shù)啦。”

其實(shí)不然,這不是原因。假如你把 result 聲明為 double 類(lèi)型,運(yùn)算 result = 5 / 2,你還是會(huì)得到 2。事實(shí)上,這是因?yàn)?/ 運(yùn)算符兩邊的數(shù)是整數(shù),所以電腦會(huì)做整數(shù)之間的除法。

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

double result = 0; result = 5.0 / 2.0; printf ("5 / 2 = %f", result); 復(fù)制代碼

運(yùn)行,顯示:

5 / 2 = 2.500000 復(fù)制代碼

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

這個(gè)整數(shù)除法的特性很重要。所以得記住,對(duì)于電腦來(lái)說(shuō):

5 / 2 = 210 / 3 = 34 / 5 = 0 復(fù)制代碼

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

如果你想要得到浮點(diǎn)數(shù)的結(jié)果,需要運(yùn)算的數(shù)本身是浮點(diǎn)數(shù)(提一下,其實(shí)不需要兩個(gè)數(shù)都是浮點(diǎn)數(shù),一個(gè)是浮點(diǎn)數(shù)就夠了,電腦會(huì)自動(dòng)把另一個(gè)也認(rèn)為是浮點(diǎn)數(shù)來(lái)做運(yùn)算):

5.0 / 2.0 = 2.510 / 3.0 = 3.333334.0 / 5 = 0.8 復(fù)制代碼

事實(shí)上,在做整數(shù)除法時(shí),比如 5 / 2,你的電腦會(huì)回答下面問(wèn)題:“5里面有多少個(gè) 2 ?”,答案是兩個(gè)。同樣的,“10 里面有多少個(gè) 3 呢”,答案是三個(gè)。

然后你又會(huì)問(wèn)了,我們?cè)趺床拍塬@取到除法剩下的數(shù)(余數(shù))呢?

這就要輪到取模運(yùn)算出場(chǎng)了。

取模

取模運(yùn)算是獲得除法的余數(shù)的一種數(shù)學(xué)運(yùn)算。可能相比 加、減、乘、除這基本的四則運(yùn)算來(lái)說(shuō),它沒(méi)有那么被人熟知,但對(duì)電腦來(lái)說(shuō),取模是基本的運(yùn)算之一。很有可能是為了解決上面提到的整數(shù)除法的難題。

上面表格里列出來(lái)了,取模的符號(hào)是 %

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

5 % 2 = 114 % 3 = 24 % 2 = 0 復(fù)制代碼

取模運(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。

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

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

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

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

既然我們?cè)谏厦嬉还?jié)中已經(jīng)學(xué)習(xí)了基礎(chǔ)的 5 種運(yùn)算,那現(xiàn)在可以來(lái)看看變量之間的運(yùn)算咯。

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

result = number1 + number2; 復(fù)制代碼

上面這一行代碼對(duì) number1 和 number2 這兩個(gè)變量做加法運(yùn)算,并且把結(jié)果儲(chǔ)存到 result 這個(gè)變量里。

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

想象一個(gè)程序,請(qǐng)求用戶(hù)輸入兩個(gè)數(shù),這兩個(gè)數(shù),你將其儲(chǔ)存在變量里。

然后,你對(duì)這兩個(gè)變量做加法,并且把結(jié)果儲(chǔ)存在另一個(gè)變量里。接下來(lái),你就只需要把計(jì)算的結(jié)果顯示在屏幕上就好了,讓用戶(hù)看看電腦的本領(lǐng),很多人做加法可沒(méi)有這么快速呢!

試著自己編寫(xiě)以上程序,很簡(jiǎn)單的,也可以給你練手。

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

#include <stdio.h>int main(int argc, char *argv[]) {int result = 0, number1 = 0, number2 = 0;// 請(qǐng)求用戶(hù)輸入number1和number2的值:printf("請(qǐng)輸入數(shù)字1 : ");scanf("%d", &number1);printf("請(qǐng)輸入數(shù)字2 : ");scanf("%d", &number2);// 做運(yùn)算:result = number1 + number2;// 把運(yùn)算結(jié)果顯示在屏幕上 :printf ("%d + %d = %dn", number1, number2, result);return 0; } 復(fù)制代碼

運(yùn)行,顯示:

請(qǐng)輸入數(shù)字1 : 289 請(qǐng)輸入數(shù)字2 : 376 289 + 376 = 665 復(fù)制代碼

可能你還沒(méi)意識(shí)到:這是我們第一個(gè)有點(diǎn)意思的程序。我們的程序請(qǐng)求用戶(hù)輸入兩個(gè)數(shù),然后做加法,再把結(jié)果輸出到屏幕上。很棒吧!

請(qǐng)你自己也試著用其他四個(gè)基礎(chǔ)運(yùn)算符來(lái)寫(xiě)程序,看看結(jié)果如何。

4. 縮寫(xiě)

之前我們保證過(guò),不會(huì)再有新的運(yùn)算形式出現(xiàn)了。確實(shí)如此,我們已經(jīng)知道了所有的基礎(chǔ)運(yùn)算:加、減、乘、除、取模。用這些基礎(chǔ)運(yùn)算我們可以做所有事情。不需要其他的運(yùn)算了。

我知道這很難令人相信。你會(huì)說(shuō)難道一個(gè)很復(fù)雜的 3D 游戲最終也是由加、減、乘、除等構(gòu)成的?是的,確實(shí)如此。

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

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

自增運(yùn)算

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

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

number = number + 1; 復(fù)制代碼

上面的語(yǔ)句做了什么呢?

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

因此,假如我們的變量值是 4,運(yùn)算后變成 5 了,假如它的值是 8,那會(huì)變成 9,依此類(lèi)推。

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

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

number++; 復(fù)制代碼

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

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

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

當(dāng)然了,事實(shí)上 C++ 只是用不同的方式來(lái)編程,并不是說(shuō) C++ 比 C語(yǔ)言更優(yōu)秀,只是不同而已。

自減運(yùn)算

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

number--; 復(fù)制代碼

其他的縮寫(xiě)形式

同理,其他還有好幾種運(yùn)算的縮寫(xiě)形式。比如 number = number * 2; 可以寫(xiě)成 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) 復(fù)制代碼

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

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

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

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

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

實(shí)際上,光是加、減、乘、除、取模是不夠的。雖然底層都是這五個(gè)運(yùn)算,但是很多時(shí)候我們需要做復(fù)雜的運(yùn)算形式,就需要調(diào)用庫(kù)或者自己寫(xiě)函數(shù)了。

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

調(diào)用數(shù)學(xué)庫(kù)很簡(jiǎn)單,

#include <math.h> 復(fù)制代碼

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

我們介紹其中幾個(gè)最常用的吧。

fabs

這個(gè)函數(shù)返回絕對(duì)值:

  • 如果你傳給這個(gè)函數(shù) -53,它會(huì)返回 53 。
  • 如果你傳給這個(gè)函數(shù) 53,它會(huì)返回 53 。
double absolute = 0, number = -29; absolute = fabs(number); // absolute 的值變?yōu)?29 復(fù)制代碼

ceil

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

double above = 0, number = 34.81; above = ceil(number); // above 的值變?yōu)?35 復(fù)制代碼

floor

這個(gè)函數(shù)與 ceil 的作用相對(duì),返回給出的浮點(diǎn)數(shù)前面緊接的整數(shù)。

double below = 0, number = 45.63; below = floor(number); // below 的值變?yōu)?45 復(fù)制代碼

pow

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

double result = 0, number = 2; result = pow(number, 4); // result 的值變?yōu)?16(2 ^ 4 = 16) 復(fù)制代碼

sqrt

這個(gè)函數(shù)返回參數(shù)的平方根。返回值是 double 類(lèi)型。

double result = 0, number = 100; result = sqrt(number); // result 的值變?yōu)?10 復(fù)制代碼

sin, cos, tan

這三個(gè)函數(shù)是計(jì)算正弦,余弦,正切的值。

asin, acos, atan

這三個(gè)函數(shù)是計(jì)算反正弦,反余弦,反正切的值。

exp

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

正在跳轉(zhuǎn)?jq.qq.com 超強(qiáng)干貨來(lái)襲 云風(fēng)專(zhuān)訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的shell 做加法运算_C语言探索之旅 | 第一部分第七课:运算那点事的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。