網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、前言
大家好,我是一個(gè)初學(xué)C語(yǔ)言的小菜狗,是否大家在平時(shí)的做題中會(huì)遇到和我一樣的煩惱,題目的代碼已經(jīng)基本完成,但是在輸出時(shí)候,總是和題目給出的樣例輸出格式不同 ,導(dǎo)致題目不能通過(guò)。為了解決這一煩惱,我總結(jié)了以下幾點(diǎn):數(shù)值取整問(wèn)題、數(shù)值四舍五入、輸出%d格式、除法%、除法 / 、連續(xù)輸?shù)戎R(shí)點(diǎn)。
二、取整的方法
(1)使用 int 強(qiáng)制轉(zhuǎn)換
若輸出的結(jié)果有小數(shù),可以使用 int 強(qiáng)制去掉整數(shù)后面的小數(shù)點(diǎn)。代碼如下:
#include <stdio.h>
int main()
{
int c = 1.2;
c = (int)c; // 強(qiáng)制轉(zhuǎn)換
float a,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
return 0;
}
(2)使用floor函數(shù)向下取整
若輸出的結(jié)果有小數(shù),可以使用 floor 函數(shù),可以得到比該數(shù)小的最大整數(shù),代碼如下:
// 注意:在使用floor函數(shù)時(shí),需要加上頭文件 #include <math.h>
#include <stdio.h>
#include <math.h>
int main()
{
int a ;
float c = -1.2f;
float b=1.2f;
int d = -1.2; // 注意: d 的類(lèi)型為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
return 0;
}
(3)使用ceil函數(shù)向上取整
若輸出的結(jié)果有小數(shù),可以使用 ceil 函數(shù),可以得到比該數(shù)大的最小整數(shù),代碼如下:
// 注意:在使用ceil函數(shù)時(shí),需要加上頭文件 #include <math.h>
#include <stdio.h>
#include <math.h>
int main()
{
int a;
int b;
float c = 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
return 0;
}
三、數(shù)值四舍五入
(1)使用round函數(shù)進(jìn)行四舍五入
若題目要求,最后的輸出結(jié)果進(jìn)行四舍五入,此時(shí)就可以用到round函數(shù),注意:round函數(shù)只是針對(duì)整型的四舍五入,不能對(duì)浮點(diǎn)型使用。規(guī)則:(±)0.5時(shí)往絕對(duì)值小的方向 ,代碼如下:
// 注意:在使用round函數(shù)時(shí),需要加上頭文件 #include <math.h>
#include <stdio.h>
#include <math.h>
int main()
{
int a,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ù)只是針對(duì)整數(shù)的四舍五入,不針對(duì)浮點(diǎn)數(shù)
return 0;
}
(2)使用rint函數(shù)進(jìn)行四舍五入
若題目要求,最后的輸出結(jié)果進(jìn)行四舍五入,此時(shí)就可以用到rint函數(shù),注意:rint函數(shù)只是針對(duì)浮點(diǎn)型的四舍五入,不能對(duì)整型使用。規(guī)則:(±)0.5時(shí)往絕對(duì)值小的方向 ,代碼如下:
// 注意:在使用rint函數(shù)時(shí),需要加上頭文件 #include <math.h>
#include <stdio.h>
#include <math.h>
int main()
{
double a, b;
a = rint(3.45689412);
b = rint(3.65);
printf("%lf\n", a); // 3.000000
printf("%lf\n", b); // 4.000000
return 0;
}
(3)重點(diǎn)應(yīng)用
到這里,大家肯定會(huì)提出疑問(wèn),上面演示的函數(shù),只能對(duì)整數(shù)進(jìn)行四舍五入,在小數(shù)中如果需要對(duì),小數(shù)點(diǎn)后三位進(jìn)行四舍五入呢,接下來(lái),我們來(lái)揭曉答案。
舉例:此時(shí)我們需要對(duì)一個(gè)小數(shù)保留三個(gè)小數(shù)位而第四個(gè)小數(shù)位按照四舍五入的規(guī)則進(jìn)行,我們將數(shù)字?jǐn)U大1000倍,使得第四位小數(shù)稱(chēng)為新數(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,就沒(méi)有實(shí)現(xiàn)進(jìn)位的作用。如此,就能實(shí)現(xiàn)小數(shù)位的四舍五入。然后我們?cè)賹?duì)這個(gè)數(shù)值 進(jìn)行強(qiáng)制性轉(zhuǎn)化,然后再處以1000.0(記住,一定要1000.0,否則就會(huì)出現(xiàn)隱式轉(zhuǎn)化),在輸出的時(shí)候用%0.3f以實(shí)現(xiàn)保留三位小數(shù)。
代碼如下:
#include <stdio.h>
int main()
{
float a=3.1415;
// 注意 整除兩邊的數(shù)必須是同一個(gè)類(lèi)型
a = (int)(a * 1000 + 0.5) / 1000.0; //此時(shí)都是浮點(diǎn)數(shù)類(lèi)型
printf("%.3f\n", a); // 3.142
return 0;
}
四、在C中輸出%d、%0xd、%-xd的輸出格式
1. %d左右對(duì)齊,輸出變量所有的數(shù)字。
2. %xd左右對(duì)齊,寬度為X,左邊填充空格
3. %xd,當(dāng)變量的實(shí)際寬度大于x時(shí),輸出變量所有的數(shù)字
4. %xd左右對(duì)齊,寬度為x,左邊填充 0?
代碼如下:
#include <stdio.h>
int main()
{
int a = 1234;
// %d左右對(duì)齊,輸出變量所有的數(shù)字
printf("%d\n", a); // (1234)
// %xd左右對(duì)齊,寬度為X,左邊填充空格
printf("%6d\n", a); // ( 1234)
// %xd,當(dāng)變量的實(shí)際寬度大于x時(shí),輸出變量所有的數(shù)字
printf("%3d\n", a); // (1234)
// %xd左右對(duì)齊,寬度為x,左邊填充 0
printf("%05d\n", a);// (01234)
return 0;
}
五、除法:余除 % 、整除 ?/
1. 余除 % 和整除 / 兩邊必須是保持同一個(gè)類(lèi)型的數(shù)值(且最好保持為整型)
2. 余除 的結(jié)果是兩個(gè)數(shù)相處的余數(shù),代碼如下:
#include <stdio.h>
int main()
{
int a = 2;
int b = 3;
printf("%d\n", b % a); // 3%2=1......1(余1) 結(jié)果為1
return 0;
}
3. 整除 的結(jié)果是兩個(gè)數(shù)相除的商,代碼如下:
#include <stdio.h>
int main()
{
int a = 4;
int b = 8;
printf("%d\n", b / a); // 8/4......0(余0) 結(jié)果為2
return 0;
}
4.整除、余除的應(yīng)用:一般用于較大數(shù),求各個(gè)位數(shù),代碼如下:
#include <stdio.h>
int main()
{
int x = 12345;
int a, 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 %d", a, b, c, d, e); // 1 2 3 4 5
return 0;
}
五、連續(xù)輸出
大家在刷題的時(shí)候肯定會(huì)遇到題目要求,數(shù)據(jù)的連續(xù)輸出,其中代碼如下:
#include <stdio.h>
int main()
{
int x;
while (scanf("%d", &x) != EOF) // 連續(xù)輸出方式
{
printf("%d\n", x);
}
return 0;
}
原文鏈接:https://blog.csdn.net/weixin_45031801/article/details/126919219
相關(guān)推薦
- 2022-12-04 Android組件化工具ARouter使用方法詳細(xì)分析_Android
- 2022-06-24 PyTorch中permute的基本用法示例_python
- 2022-01-09 Echarts|Stacked Line Chart(折線(xiàn)圖堆疊)Y軸數(shù)據(jù)不正確問(wèn)題
- 2022-08-06 Python?pandas庫(kù)中isnull函數(shù)使用方法_python
- 2022-05-10 axios方式發(fā)送ajax,語(yǔ)法類(lèi)似,但更簡(jiǎn)單
- 2023-10-09 時(shí)間戳轉(zhuǎn)日期格式-自動(dòng)補(bǔ)零,日期格式轉(zhuǎn)時(shí)間戳
- 2023-04-03 PyTorch中Torch.arange函數(shù)詳解_python
- 2022-09-10 Golang中Interface接口的三個(gè)特性_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支