版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB 18384-2025電動汽車安全要求
- 五年級上冊語文試卷及答案
- 衛(wèi)生招聘題庫及答案
- 過程裝備控制技術(shù)與應(yīng)用
- 部編版2021年四年級語文上冊期末測試卷【附答案】
- 淺析中職衛(wèi)校醫(yī)護(hù)生英語學(xué)習(xí)難點(diǎn)及應(yīng)對途徑
- 腳氣科普課件
- 2022-2023年人教版三年級語文下冊期中測試卷及答案【審定版】
- 電氣測量技術(shù)要領(lǐng)
- 申論考試題目分析及答案
- 南京醫(yī)科大學(xué)2026年招聘人事代理人員備考題庫及1套參考答案詳解
- 2026年教育平臺資源輸出協(xié)議
- 【《四旋翼飛行器坐標(biāo)系及相互轉(zhuǎn)換關(guān)系分析綜述》1000字】
- 2026浙江金華市婺城區(qū)城市發(fā)展控股集團(tuán)有限公司招聘59人筆試參考題庫及答案解析
- 靜脈補(bǔ)液課件
- 廣東深圳市鹽田高級中學(xué)2024~2025學(xué)年高一上冊1月期末考試化學(xué)試題 附答案
- 2026年輔警招聘考試試題庫附答案【完整版】
- 建筑施工風(fēng)險(xiǎn)辨識與防范措施
- 浙江省杭州地區(qū)六校2026屆化學(xué)高一第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 2025年CFA二級估值與財(cái)務(wù)報(bào)表分析試卷(含答案)
- GB/T 39693.4-2025硫化橡膠或熱塑性橡膠硬度的測定第4部分:用邵氏硬度計(jì)法(邵爾硬度)測定壓入硬度
評論
0/150
提交評論