C語言在輸入輸出時(shí)遇到的常見問題總結(jié)_第1頁
C語言在輸入輸出時(shí)遇到的常見問題總結(jié)_第2頁
C語言在輸入輸出時(shí)遇到的常見問題總結(jié)_第3頁
C語言在輸入輸出時(shí)遇到的常見問題總結(jié)_第4頁
C語言在輸入輸出時(shí)遇到的常見問題總結(jié)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第C語言在輸入輸出時(shí)遇到的常見問題總結(jié)目錄一、前言二、取整的方法(1)使用int強(qiáng)制轉(zhuǎn)換(2)使用floor函數(shù)向下取整(3)使用ceil函數(shù)向上取整三、數(shù)值四舍五入(1)使用round函數(shù)進(jìn)行四舍五入(2)使用rint函數(shù)進(jìn)行四舍五入(3)重點(diǎn)應(yīng)用四、在C中輸出%d、%0xd、%-xd的輸出格式五、除法:余除%、整除/五、連續(xù)輸出

一、前言

大家好,我是一個(gè)初學(xué)C語言的小菜狗,是否大家在平時(shí)的做題中會遇到和我一樣的煩惱,題目的代碼已經(jīng)基本完成,但是在輸出時(shí)候,總是和題目給出的樣例輸出格式不同,導(dǎo)致題目不能通過。為了解決這一煩惱,我總結(jié)了以下幾點(diǎn):數(shù)值取整問題、數(shù)值四舍五入、輸出%d格式、除法%、除法/、連續(xù)輸?shù)戎R點(diǎn)。

二、取整的方法

(1)使用int強(qiáng)制轉(zhuǎn)換

若輸出的結(jié)果有小數(shù),可以使用int強(qiáng)制去掉整數(shù)后面的小數(shù)點(diǎn)。代碼如下:

#includestdio.h

intmain()

intc=1.2;

c=(int)c;//強(qiáng)制轉(zhuǎn)換

floata,b;

a=1.2f;//1.2f這里的f是保證數(shù)值為float型,防止默認(rèn)為double型

b=(int)a;//強(qiáng)制轉(zhuǎn)換

printf("%f\n",a);//1.200000

printf("%f\n",b);//1.000000

printf("%d\n",c);//1

return0;

(2)使用floor函數(shù)向下取整

若輸出的結(jié)果有小數(shù),可以使用floor函數(shù),可以得到比該數(shù)小的最大整數(shù),代碼如下:

//注意:在使用floor函數(shù)時(shí),需要加上頭文件#includemath.h

#includestdio.h

#includemath.h

intmain()

inta;

floatc=-1.2f;

floatb=1.2f;

intd=-1.2;//注意:d的類型為int型已經(jīng)被int強(qiáng)行轉(zhuǎn)化為-1

a=floor(1.3);//函數(shù)向下取整,得到比a小的最大整數(shù)

b=floor(b);//函數(shù)向下取整,得到比b小的最大整數(shù)

c=floor(c);//函數(shù)向下取整,得到比c小的最大整數(shù)

d=floor(d);//已經(jīng)被int強(qiáng)行轉(zhuǎn)化為-1

printf("%d\n",a);//1

printf("%f\n",b);//1.000000

printf("%f\n",c);//-2.000000

printf("%d\n",d);//-1

return0;

}

(3)使用ceil函數(shù)向上取整

若輸出的結(jié)果有小數(shù),可以使用ceil函數(shù),可以得到比該數(shù)大的最小整數(shù),代碼如下:

//注意:在使用ceil函數(shù)時(shí),需要加上頭文件#includemath.h

#includestdio.h

#includemath.h

intmain()

inta;

intb;

floatc=1.2;

a=ceil(1.3);//函數(shù)向上取整,得到比a大的最小整數(shù)

b=ceil(-1.1);//函數(shù)向上取整,得到比b大的最小整數(shù)

c=ceil(c);//函數(shù)向上取整,得到比c大的最小整數(shù)

printf("%d\n",a);//2

printf("%d\n",b);//-1

printf("%f\n",c);//2.000000

return0;

}

三、數(shù)值四舍五入

(1)使用round函數(shù)進(jìn)行四舍五入

若題目要求,最后的輸出結(jié)果進(jìn)行四舍五入,此時(shí)就可以用到round函數(shù),注意:round函數(shù)只是針對整型的四舍五入,不能對浮點(diǎn)型使用。規(guī)則:()0.5時(shí)往絕對值小的方向,代碼如下:

//注意:在使用round函數(shù)時(shí),需要加上頭文件#includemath.h

#includestdio.h

#includemath.h

intmain()

inta,b,c;

a=round(3.6);//進(jìn)行四舍五入

b=round(2.4);//進(jìn)行四舍五入

c=round(1.46);//進(jìn)行四舍五入

printf("%d\n",b);//4

printf("%d\n",a);//2

printf("%d\n",c);//1發(fā)現(xiàn)round函數(shù)只是針對整數(shù)的四舍五入,不針對浮點(diǎn)數(shù)

return0;

(2)使用rint函數(shù)進(jìn)行四舍五入

若題目要求,最后的輸出結(jié)果進(jìn)行四舍五入,此時(shí)就可以用到rint函數(shù),注意:rint函數(shù)只是針對浮點(diǎn)型的四舍五入,不能對整型使用。規(guī)則:()0.5時(shí)往絕對值小的方向,代碼如下:

//注意:在使用rint函數(shù)時(shí),需要加上頭文件#includemath.h

#includestdio.h

#includemath.h

intmain()

doublea,b;

a=rint(3.45689412);

b=rint(3.65);

printf("%lf\n",a);//3.000000

printf("%lf\n",b);//4.000000

return0;

(3)重點(diǎn)應(yīng)用

到這里,大家肯定會提出疑問,上面演示的函數(shù),只能對整數(shù)進(jìn)行四舍五入,在小數(shù)中如果需要對,小數(shù)點(diǎn)后三位進(jìn)行四舍五入呢,接下來,我們來揭曉答案。

舉例:此時(shí)我們需要對一個(gè)小數(shù)保留三個(gè)小數(shù)位而第四個(gè)小數(shù)位按照四舍五入的規(guī)則進(jìn)行,我們將數(shù)字?jǐn)U大1000倍,使得第四位小數(shù)稱為新數(shù)字的第一位,然后我們可以給它加上0.5后再進(jìn)行強(qiáng)制性轉(zhuǎn)化。加0.5的原因就是:假如這個(gè)小數(shù)位的數(shù)值大于5,加上0.5能夠?qū)崿F(xiàn)進(jìn)位的作用,倘若小于0.5,就沒有實(shí)現(xiàn)進(jìn)位的作用。如此,就能實(shí)現(xiàn)小數(shù)位的四舍五入。然后我們再對這個(gè)數(shù)值進(jìn)行強(qiáng)制性轉(zhuǎn)化,然后再處以1000.0(記住,一定要1000.0,否則就會出現(xiàn)隱式轉(zhuǎn)化),在輸出的時(shí)候用%0.3f以實(shí)現(xiàn)保留三位小數(shù)。

代碼如下:

#includestdio.h

intmain()

floata=3.1415;

//注意整除兩邊的數(shù)必須是同一個(gè)類型

a=(int)(a*1000+0.5)/1000.0;//此時(shí)都是浮點(diǎn)數(shù)類型

printf("%.3f\n",a);//3.142

return0;

四、在C中輸出%d、%0xd、%-xd的輸出格式

1.%d左右對齊,輸出變量所有的數(shù)字。

2.%xd左右對齊,寬度為X,左邊填充空格

3.%xd,當(dāng)變量的實(shí)際寬度大于x時(shí),輸出變量所有的數(shù)字

4.%xd左右對齊,寬度為x,左邊填充0

代碼如下:

#includestdio.h

intmain()

inta=1234;

//%d左右對齊,輸出變量所有的數(shù)字

printf("%d\n",a);//(1234)

//%xd左右對齊,寬度為X,左邊填充空格

printf("%6d\n",a);//(1234)

//%xd,當(dāng)變量的實(shí)際寬度大于x時(shí),輸出變量所有的數(shù)字

printf("%3d\n",a);//(1234)

//%xd左右對齊,寬度為x,左邊填充0

printf("%05d\n",a);//(01234)

return0;

五、除法:余除%、整除/

1.余除%和整除/兩邊必須是保持同一個(gè)類型的數(shù)值(且最好保持為整型)

2.余除的結(jié)果是兩個(gè)數(shù)相處的余數(shù),代碼如下:

#includestdio.h

intmain()

inta=2;

intb=3;

printf("%d\n",b%a);//3%2=1......1(余1)結(jié)果為1

return0;

3.整除的結(jié)果是兩個(gè)數(shù)相除的商,代碼如下:

#includestdio.h

intmain()

inta=4;

intb=8;

printf("%d\n",b/a);//8/4......0(余0)結(jié)果為2

return0;

4.整除、余除的應(yīng)用:一般用于較大數(shù),求各個(gè)位數(shù),代碼如下:

#includestdio.h

intmain()

intx=12345;

inta,b,c,d,e;

e=x%10;//求最后一位

d=x/10%10;//(x/10%10)表示丟掉最后一位,求倒數(shù)第二位

c=x/100%10;//(x/100%10)表示丟掉后兩位,求倒數(shù)第三位

b=x/1000%10;//(x/1000%10)表示丟掉后三位,求倒數(shù)第四位

a=x/10000;//(x/10000)表示丟掉后四位,求第一位

printf("%d%d%d%d%

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論