IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言在输入、输出时遇到的常见问题(超详细!!!!) -> 正文阅读

[C++知识库]C语言在输入、输出时遇到的常见问题(超详细!!!!)

目录

一、前言

二、取整的方法

? ? (1)使用 int 强制转换

? ? ?(2)使用floor函数向下取整

? ? (3)使用ceil函数向上取整

二、数值四舍五入

(1)使用round函数进行四舍五入

(2)使用rint函数进行四舍五入

(3)重点应用

三、在C中输出%d、%0xd、%-xd的输出格式

四、除法:余除 % 、整除? /

五、连续输出

六、共勉


一、前言

? ? 大家好,我是一个初学C语言的小菜狗,是否大家在平时的做题中会遇到和我一样的烦恼,题目的代码已经基本完成,但是在输出时候,总是和题目给出的样例输出格式不同 ,导致题目不能通过。为了解决这一烦恼,我总结了以下几点:数值取整问题、数值四舍五入、输出%d格式、除法%、除法 / 、连续输等知识点。

二、取整的方法

? ? (1)使用 int 强制转换

? ? 若输出的结果有小数,可以使用 int 强制去掉整数后面的小数点。代码如下:

#include <stdio.h>
int main()
{
	int c = 1.2;
	c = (int)c;  // 强制转换
	float  a,b;
	a = 1.2f;    // 1.2f 这里的 f 是保证数值为float型,防止默认为 double型
	b = (int)a;  // 强制转换
	printf("%f\n", a);  // 1.200000
	printf("%f\n", b);  // 1.000000
	printf("%d\n", c);  // 1
	return 0;
}

? ? ?(2)使用floor函数向下取整

? ? 若输出的结果有小数,可以使用 floor 函数,可以得到比该数小的最大整数,代码如下:

// 注意:在使用floor函数时,需要加上头文件 #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 的类型为int型  已经被int 强行转化为 -1
	a = floor(1.3);  // 函数向下取整,得到比 a 小的最大整数
	b = floor(b);  // 函数向下取整,得到比 b 小的最大整数
	c = floor(c);  // 函数向下取整,得到比 c 小的最大整数
	d = floor(d);  // 已经被 int 强行转化为 -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函数向上取整

? ? 若输出的结果有小数,可以使用?ceil?函数,可以得到比该数大的最小整数,代码如下:

// 注意:在使用ceil函数时,需要加上头文件 #include <math.h>
#include <stdio.h>
#include <math.h>
int main()
{
	int a;
	int b;
	float c = 1.2;
	a = ceil(1.3);   // 函数向上取整,得到比 a 大的最小整数
	b = ceil(-1.1);  // 函数向上取整,得到比 b 大的最小整数
	c = ceil(c);     // 函数向上取整,得到比 c 大的最小整数
	printf("%d\n", a); // 2
	printf("%d\n", b); // -1
	printf("%f\n", c); // 2.000000
	return 0;
}

二、数值四舍五入

(1)使用round函数进行四舍五入

? ? 若题目要求,最后的输出结果进行四舍五入,此时就可以用到round函数,注意:round函数只是针对整型的四舍五入,不能对浮点型使用。规则:(±)0.5时往绝对值小的方向 ,代码如下:

// 注意:在使用round函数时,需要加上头文件 #include <math.h>
#include <stdio.h>
#include <math.h>
int main()
{
	int a,b,c;
	a = round(3.6);  // 进行四舍五入
	b = round(2.4);  // 进行四舍五入
	c = round(1.46); // 进行四舍五入
	printf("%d\n", b);  // 4
	printf("%d\n", a);  // 2
	printf("%d\n", c);  // 1  发现round函数只是针对整数的四舍五入,不针对浮点数
	return 0;
}

? ? (2)使用rint函数进行四舍五入

? ? 若题目要求,最后的输出结果进行四舍五入,此时就可以用到rint函数,注意:rint函数只是针对浮点型的四舍五入,不能对整型使用。规则:(±)0.5时往绝对值小的方向 ,代码如下:


// 注意:在使用rint函数时,需要加上头文件 #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)重点应用

? ? 到这里,大家肯定会提出疑问,上面演示的函数,只能对整数进行四舍五入,在小数中如果需要对,小数点后三位进行四舍五入呢,接下来,我们来揭晓答案。

举例:此时我们需要对一个小数保留三个小数位而第四个小数位按照四舍五入的规则进行,我们将数字扩大1000倍,使得第四位小数称为新数字的第一位,然后我们可以给它加上0.5后再进行强制性转化。加0.5的原因就是: 假如这个小数位的数值大于5,加上0.5能够实现进位的作用,倘若小于0.5,就没有实现进位的作用。如此,就能实现小数位的四舍五入。然后我们再对这个数值 进行强制性转化,然后再处以1000.0(记住,一定要1000.0,否则就会出现隐式转化),在输出的时候用%0.3f以实现保留三位小数。

代码如下:

#include <stdio.h>
int main()
{
	float a=3.1415;
	// 注意 整除两边的数必须是同一个类型
	a = (int)(a * 1000 + 0.5) / 1000.0;  //此时都是浮点数类型
	printf("%.3f\n", a);  // 3.142
	return 0;
}

三、在C中输出%d、%0xd、%-xd的输出格式

? ? 1. %d左右对齐,输出变量所有的数字。

? ? 2.?%xd左右对齐,宽度为X,左边填充空格

? ? 3.?%xd,当变量的实际宽度大于x时,输出变量所有的数字

? ? 4.?%xd左右对齐,宽度为x,左边填充 0?

? ? 代码如下:

#include <stdio.h>
int main()
{
	int a = 1234;
	// %d左右对齐,输出变量所有的数字
	printf("%d\n", a);  // (1234)
	// %xd左右对齐,宽度为X,左边填充空格
	printf("%6d\n", a); // (  1234)
	// %xd,当变量的实际宽度大于x时,输出变量所有的数字
	printf("%3d\n", a); // (1234)
	// %xd左右对齐,宽度为x,左边填充 0 
	printf("%05d\n", a);// (01234)
	return 0;
}

四、除法:余除 % 、整除? /

? ? 1. 余除 % 和整除 / 两边必须是保持同一个类型的数值(且最好保持为整型)

? ? 2. 余除 的结果是两个数相处的余数,代码如下:

#include <stdio.h>
int main()
{
	int a = 2;
	int b = 3;
	printf("%d\n", b % a); // 3%2=1......1(余1)  结果为1
	return 0;
}

? ? 3. 整除 的结果是两个数相除的商,代码如下:

#include <stdio.h>
int main()
{
	int a = 4;
	int b = 8;
	printf("%d\n", b / a); // 8/4......0(余0)  结果为2
	return 0;
}

? ? 4.整除、余除的应用:一般用于较大数,求各个位数,代码如下:

#include <stdio.h>
int main()
{
	int x = 12345;
	int a, b, c, d, e;
	e = x % 10;   // 求最后一位
	d = x / 10 % 10;  //(x/10%10)表示丢掉最后一位,求倒数第二位
	c = x / 100 % 10; //(x/100%10)表示丢掉后两位,求倒数第三位
	b = x / 1000 % 10;// (x/1000%10)表示丢掉后三位,求倒数第四位 
	a = x / 10000;    // (x/10000)表示丢掉后四位,求第一位
	printf("%d %d %d %d %d", a, b, c, d, e);  // 1  2  3  4  5
	return 0;
}

五、连续输出

? ? 大家在刷题的时候肯定会遇到题目要求,数据的连续输出,其中代码如下:

#include <stdio.h>
int main()
{
	int x;
	while (scanf("%d", &x) != EOF)  // 连续输出方式
	{
		printf("%d\n", x);
	}
	return 0;
}

参考文章:?http://t.csdn.cn/iEm1p

六、共勉

? ? ?这就是我对C语言输出常见问题的总结,如果有什么不足或者大家不懂的地方,我们可以在评论区讨论,后期我会不断的更新出字符串输出遇到的问题总结,请大家持续关注我哦!

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:08:17  更:2022-09-21 00:09:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 8:32:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码