最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言編程深入理解取整取余取模問(wèn)題示例分析

 更新時(shí)間:2021年11月24日 14:50:07   作者:鹿九丸  
這篇文章主要為大家介紹了C語(yǔ)言編程深入理解取整取余取模問(wèn)題的示例分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

1. 取整問(wèn)題

1.0向取整(C語(yǔ)言默認(rèn)的取整方案)

#include<stdio.h>
#include<windows.h>
int main()
{
	//本質(zhì)是向0取整
   //trunc()函數(shù)也有這種作用,不過(guò)返回值是浮點(diǎn)數(shù),而且必須引用math.h頭文件
	int i = -2.9;
	int j = 2.9;
	printf("%d\n", i); //結(jié)果是:-2
	printf("%d\n", j); //結(jié)果是:2
	system("pause");
	return 0;
}

2.地板取整(向負(fù)無(wú)窮的方向取整)

#include <stdio.h>
#include <math.h> //因?yàn)槭褂昧薴loor函數(shù),需要添加該頭文件
#include <windows.h>
int main()
{
	//本質(zhì)是向-∞取整,注意輸出格式要不然看不到結(jié)果
	printf("%.1f\n", floor(-2.9)); //-3
	printf("%.1f\n", floor(-2.1)); //-3
	printf("%.1f\n", floor(2.9)); //2
	printf("%.1f\n", floor(2.1)); //2
	system("pause");
	return 0;
}

?注意:

使用floor()函數(shù)需要引頭文件,參數(shù)為double 類型。返回值也同樣為double類型。

同時(shí)不要忘了引math.h頭文件。

?注意:python默認(rèn)的取整方案就是地板取整,后面也正是因?yàn)檫@個(gè)原因,才出現(xiàn)了取模的不同!

3.天花板取整(向+無(wú)窮的方向取整)

#include <stdio.h>
#include <math.h>
#include <windows.h>
int main()
{
	//本質(zhì)是向+∞取整,注意輸出格式要不然看不到結(jié)果
	printf("%.1f\n", ceil(-2.9)); //-2
	printf("%.1f\n", ceil(-2.1)); //-2
	printf("%.1f\n", ceil(2.9)); //3
	printf("%.1f\n", ceil(2.1)); //3
	system("pause");
	return 0;
}

注意:

使用ceil()函數(shù)需要引頭文件,參數(shù)為double 類型。

返回值也同樣為double類型。同時(shí)不要忘了引math.h頭文件。

4.四舍五入取整

#include <stdio.h>
#include <math.h>
#include <windows.h>
int main()
{
//本質(zhì)是四舍五入
printf("%.1f\n", round(2.1));
printf("%.1f\n", round(2.9));
printf("%.1f\n", round(-2.1));
printf("%.1f\n", round(-2.9));
system("pause");
return 0;
}

注意:使用round()函數(shù)需要引頭文件,參數(shù)為double 類型。返回值也同樣為double類型。同時(shí)不要忘了引math.h頭文件。

匯總例子

#include <stdio.h>
#include <math.h>
#include <windows.h>
int main()
{
	const char* format = "%.1f \t%.1f \t%.1f \t%.1f \t%.1f\n";
	printf("value\tround\tfloor\tceil\ttrunc\n");
	printf("-----\t-----\t-----\t----\t-----\n");
	printf(format, 2.3, round(2.3), floor(2.3), ceil(2.3), trunc(2.3));
	printf(format, 3.8, round(3.8), floor(3.8), ceil(3.8), trunc(3.8));
	printf(format, 5.5, round(5.5), floor(5.5), ceil(5.5), trunc(5.5));
	printf(format, -2.3, round(-2.3), floor(-2.3), ceil(-2.3), trunc(-2.3));
	printf(format, -3.8, round(-3.8), floor(-3.8), ceil(-3.8), trunc(-3.8));
	printf(format, -5.5, round(-5.5), floor(-5.5), ceil(-5.5), trunc(-5.5));
	system("pause");
	return 0;
}

2.取模問(wèn)題?

1.余數(shù)的定義

余數(shù)的定義:如果a和d是兩個(gè)自然數(shù),d非零,可以證明存在兩個(gè)唯一的整數(shù) q 和 r,滿足 a = q*d + r , q 為整數(shù),且0 ≤ |r|< |d|。其中,q 被稱為商,r 被稱為余數(shù)。

注意:余數(shù)并不一定都是正數(shù),大家一定要牢記這個(gè)概念!

2.兩種余數(shù)

由定義可知:

-10%3=-1------>-10/3=-3------->3*(-3)+(-1)=(-10)(C語(yǔ)言中是這樣的)

-10%3=2------->-10/3=-4------->4*(-3)+ 2=(-10)(python環(huán)境中是這樣的)

解釋C: -10 = (-3) * 3 + (-1)(負(fù)余數(shù))

解釋Python:-10 = (?)* 3 + 2,其中,可以推到出來(lái),'?'必須是-4

即-10 = (-4)* 3 + 2,才能滿足定義。(正余數(shù))

所以,在不同語(yǔ)言,同一個(gè)計(jì)算表達(dá)式,負(fù)數(shù)“取模”結(jié)果是不同的。我們可以稱之為分別叫做正余數(shù)和負(fù)余數(shù)。

3.為什么會(huì)有這種現(xiàn)象?

由上面的例子可以看出,具體余數(shù)r的大小,本質(zhì)是取決于商q的。

而商,又取決誰(shuí)呢?取決于除法計(jì)算的時(shí)候,取整規(guī)則。

C語(yǔ)言中默認(rèn)是0向取整,python中默認(rèn)是-無(wú)窮的方向取整。

3.區(qū)分取余與取模

1.取余與與取模的本質(zhì)區(qū)別

取余:盡可能讓商,進(jìn)行向0取整。

取模:盡可能讓商,向負(fù)無(wú)窮方向取整。

所以:

C中%,本質(zhì)其實(shí)是取余。

Python中%,本質(zhì)其實(shí)是取模。

2.理解鏈

對(duì)任何一個(gè)大于0的數(shù),對(duì)其進(jìn)行0向取整和負(fù)無(wú)窮取整,取整方向是一致的。故取模等價(jià)于取余。其實(shí)這也是為什么我們常常會(huì)認(rèn)為取模以取余是一碼事的原因所在。

對(duì)任何一個(gè)小于0的數(shù),對(duì)其進(jìn)行0向取整和負(fù)無(wú)窮取整,取整方向是相反的。故取模不等價(jià)于取余。

3.同符號(hào)與不同符號(hào)

1.同符號(hào):

同符號(hào)數(shù)據(jù)相除,得到的商,一定是正數(shù),即大于0! 故,在對(duì)其商進(jìn)行取整的時(shí)候,取模等價(jià)于取余。(倘若從數(shù)學(xué)上理解,就是簡(jiǎn)單的在負(fù)數(shù)的前面加一個(gè)絕對(duì)值即可)

2.不同符號(hào)

#include<stdio.h>
#include <windows.h>
int main()
{
	printf("%d\n", -10 / 3); //結(jié)果:-3
	printf("%d\n\n", -10 % 3); //結(jié)果:-1 為什么? -10=(-3)*3+(-1)
	printf("%d\n", 10 / -3); //結(jié)果:-3
	printf("%d\n\n", 10 % -3); //結(jié)果:1 為什么?10=(-3)*(-3)+1
	system("pause");
	return 0;
}

從上面可以看出:

被除數(shù)為負(fù)數(shù)時(shí),取余后為負(fù)號(hào)。

除數(shù)為負(fù)數(shù)時(shí),取余后為正數(shù)。

不同符號(hào)在C語(yǔ)言中雖然也有一定的規(guī)律,但我并不希望大家利用這個(gè)規(guī)律,而是利用定義老老實(shí)實(shí)的計(jì)算,畢竟這這是針對(duì)C語(yǔ)言的結(jié)論,在python中就不適用了,因?yàn)槎叩娜≌绞绞遣煌摹?/p>

以上就是C語(yǔ)言編程深入理解取整取余取模問(wèn)題示例分析的詳細(xì)內(nèi)容,更多關(guān)于C語(yǔ)言取整取余取模問(wèn)題的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 深入解析設(shè)計(jì)模式中的適配器模式在C++中的運(yùn)用

    深入解析設(shè)計(jì)模式中的適配器模式在C++中的運(yùn)用

    這篇文章主要介紹了設(shè)計(jì)模式中的適配器模式在C++中的運(yùn)用,通常適配器模式可以細(xì)分為類適配器和對(duì)象適配器兩種情況,需要的朋友可以參考下
    2016-03-03
  • Opencv透視變換綜合實(shí)例詳解

    Opencv透視變換綜合實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了Opencv透視變換綜合實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 適合初學(xué)者的C語(yǔ)言轉(zhuǎn)義字符講解

    適合初學(xué)者的C語(yǔ)言轉(zhuǎn)義字符講解

    轉(zhuǎn)義字符是很多程序語(yǔ)言、數(shù)據(jù)格式和通信協(xié)議的形式文法的一部分。對(duì)于一個(gè)給定的字母表,一個(gè)轉(zhuǎn)義字符的目的是開始一個(gè)字符序列,使得轉(zhuǎn)義字符開頭的該字符序列具有不同于該字符序列單獨(dú)出現(xiàn)(沒有轉(zhuǎn)義字符開頭)時(shí)的語(yǔ)義。因此轉(zhuǎn)義字符開頭的字符序列被叫做轉(zhuǎn)義序列
    2022-04-04
  • 關(guān)于"引用"的幾點(diǎn)說(shuō)明介紹

    關(guān)于"引用"的幾點(diǎn)說(shuō)明介紹

    引用聲明完畢后,相當(dāng)于目標(biāo)變量名有兩個(gè)名稱,即該目標(biāo)原名稱和引用名,且不能再把該引用名作為其他變量名的別名
    2013-09-09
  • 深入了解C++11中promise和future的使用

    深入了解C++11中promise和future的使用

    C++11中promise和future機(jī)制是用于并發(fā)編程的一種解決方案,用于在不同線程完成數(shù)據(jù)傳遞(異步操作)。Promise和Future提供了訪問(wèn)異步操作結(jié)果的機(jī)制,可以在線程之間傳遞數(shù)據(jù)和異常消息。本文就來(lái)聊聊二者的使用,希望對(duì)大家有所幫助
    2022-11-11
  • Visual?Studio?2022?安裝低版本?.Net?Framework的圖文教程

    Visual?Studio?2022?安裝低版本?.Net?Framework的圖文教程

    這篇文章主要介紹了Visual?Studio?2022?如何安裝低版本的?.Net?Framework,首先打開?Visual?Studio?Installer?可以看到vs2022?只支持安裝4.6及以上的版本,那么該如何安裝4.6以下的版本,下面將詳細(xì)介紹,需要的朋友可以參考下
    2022-09-09
  • C語(yǔ)言如何計(jì)算一個(gè)整數(shù)的位數(shù)

    C語(yǔ)言如何計(jì)算一個(gè)整數(shù)的位數(shù)

    這篇文章主要介紹了C語(yǔ)言如何計(jì)算一個(gè)整數(shù)的位數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Qt與Web混合開發(fā)實(shí)現(xiàn)雙向通信的示例

    Qt與Web混合開發(fā)實(shí)現(xiàn)雙向通信的示例

    本文主要介紹了Qt與Web混合開發(fā)實(shí)現(xiàn)雙向通信的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • C語(yǔ)言中 type *(0)的具體使用

    C語(yǔ)言中 type *(0)的具體使用

    表達(dá)式?type * (0)?在 C/C++ 編程中是一個(gè)常見的技巧,通常用于內(nèi)核編程和一些系統(tǒng)編程場(chǎng)景中,本文主要介紹了C語(yǔ)言中 type *(0)的具體使用,感興趣的可以了解一下
    2024-08-08
  • C語(yǔ)言基礎(chǔ)之格式化輸出控制長(zhǎng)度

    C語(yǔ)言基礎(chǔ)之格式化輸出控制長(zhǎng)度

    這篇文章主要介紹了C語(yǔ)言基礎(chǔ)之格式化輸出控制長(zhǎng)度的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評(píng)論

当雄县| 理塘县| 马边| 浦县| 陈巴尔虎旗| 乌拉特前旗| 五台县| 海阳市| 浦县| 甘德县| 鄢陵县| 乌拉特前旗| 永寿县| 乌拉特前旗| 磴口县| 金寨县| 米林县| 汉阴县| 邮箱| 常州市| 曲阳县| 娄烦县| 竹山县| 肃宁县| 乐昌市| 涡阳县| 临海市| 乌兰县| 宜君县| 湖北省| 长寿区| 定西市| 高雄市| 安远县| 蒙城县| 宝坻区| 江门市| 小金县| 甘孜县| 韶山市| 池州市|