c++ printf控制位数_5、cin语句、scanf语句、printf语句

d61ae887c8e776e90b1436945d79d863.png

哇,这次搞了2个小半天才敲完代码。。好累哦

示例2.19:

从键盘上输入一个三位数,然后将它反向输出。例如输入673,输出376。

吐槽: 从键盘输入,C++不大会,Python中是用input,那我先试试不键盘输入的吧~

//practice 2.19

运行结果:

278

这里有个劣势,就是每次输入都要在代码中去改,不方便,键盘输入应该怎样做呢,看一下示例:

//exam 2.19

运行结果:

在弹出的框框中输入 372,回车会出现273

1、cin语句

定义格式:

cin是C++的输入语句,与count语句一样,C++的输入是用“流”的方式实现的。

ce519469d76a2c565cbebdf5baf50fad.png

一般格式:

cin>>变量1>>变量2>>变量3>>......>>变量n;

与cout类似,一个cin语句可以分成若干行,如:

cin>>a>>b>>c>>d;

也可以写成:

cin>>a;

cin>>b;

cin>>c;

cin>>d;

使用:

示例2.20:

依据5组输入数据和运行结果分析cin数据读入方式:

在Dev-C++ 运行的时候,出现了2个小状况,双引号打成了单引号,然后修改后,我运行发现弹出的框框中还是没出现“输入”的字眼,小姐姐说,修改完代码后要先编译再运行,记住啦~

在另一台win上敲了代码,不好复制,那就直接贴图了:

9c936c1174de31f971e5c363644c0e9f.png

运行结果:

输入:

1234 56.78

输出:

1

2

34

56.78

为什么第一次输入1234 56.78 会出现这样的结果呢,c1和c2是char类型,只接受1个键盘字符,所以分别是1和2;a是整型,那就是剩下的34分配给了a;b是浮点型,那就是最后的56.78了。

输入:

1 2 3 4 56.78

输出:

1

2

34

56.78

这次输入的时候加了空格,但刚刚好,都符合对应的长度,和第一次的结果就是一样的了。

输入:

12

34

56.78

输出:

1

2

34

56.78

虽然加了换行,但是12两个字符还是被拆开分给c1和c2了。

输入:

1234 56.78 45 67 78

输出:

1

2

34

56.78

虽然这次输入的更长了,但结果是没变的,因为数量超出变量个数了,多余的就被自动忽略了。

输入:

a b c d

输出:

a

b

0

0

这里就产生差异了,我的编译器,后面是0和0,书上给出的是这样:

d32f109308a94beb6c240d851e941f43.png

对此,书中给出的解释是:后两字符存入到整型和实型变量中,输出意想不到的结果。不同编译器输出不同的结果。

以上探索可以得出以下结论:

78d7de646b2471ccf823fcc922be61d0.png

示例2.21:

某城市间公路用A~Z单字符来标识路段,输入某路程的路程和汽车平均速度,每公升汽油可以维持的公里数,以及每公升汽油价格,求汽车经过该路程所花费的时间和费用。

#include <iostream>
using namespace std;
int main()
{
	char guidepost;
	double  d,s,k,cost,time,l.totalcost;
	cin>>guidepost;
	cin>>d>>s>>k>>cost;
	time=d/s;
	l=d/k;
	totalcost=l*cost;
	cout<<guidepost<<endl;
	cout<<"time="<<time<<endl;
	cout<<"totalcost="<<totalcost<<endl;
	return 0;
}

输入:

H

600 110 8 5.3

输出:

H

time=5.45455

totalcost=397.5

作业:

1、将输入的华氏温度转换为摄氏温度

60ce63611e3ade3874df378560b3f40e.png
#include <iostream>
using namespace std;
int main()
{
	double ft,ct;
	cin>>ft;
	ct=(ft-32)*5/9;
	cout<<ft<<"华氏度="<<ct<<"摄氏度"<<endl;
	return 0;
}

输入:

32

输出:

32华氏度=0摄氏度

2、输入三角形三边长a、b、c(保证能构成三角形),输出三角形面积。

做错了:

#include <iostream>
#include<cmath>
using namespace std;
int main()
{
	double a,b,c,p,S;
	cin>>a,b,c;
	p=(a+b+c)/2;
    S=sqrt(p*(p-a)*(p-b)*(p-c));
	cout<<"三角形面积="<<S<<endl;
	return 0;
}

输入:

3 4 5

输出:

三角形面积=nan

为什么错了呢,也没报错也可以运行,但就是结果不对。

检查发现,cin后面每次输入都要加>>,改一下吧:

#include <iostream>
#include<cmath>
using namespace std;
int main()
{
	double a,b,c,p,S;
	cin>>a>>b>>c;
	p=(a+b+c)/2;
    S=sqrt(p*(p-a)*(p-b)*(p-c));
	cout<<"三角形面积="<<S<<endl;
	return 0;
}

输入:

3 4 5

输出:

三角形面积=6

3、

868e6bc3276d4fa391f43361b7369c8c.png
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
	int x,y,z;
	cin>>x;
	z=1000*x+x;
    y=z/7/11/13;
	cout<<"商是"<<y<<endl;
	return 0;
}


输入:

458

输出:

商是458

从数学角度蛮好理解的,得到的六位数,其实就是1001倍的x,后来的连续除以7、11、13,7*11*13结果就是1001,原来的x乘1001再除以1001,那就是它本身。

2、scanf语句、printf语句

scanf语句和printf语句是C语言中的输入输出语句,在C++语言环境中也可以使用;

在对于大数据的输入输出,scanf语句和printf语句比C++的输入流输出流cin和cout效率高,速度快。

scanf和printf中的f是“格式”format之意,其意义是:按指定的格式输入输出值。

scanf和printf是标准库函数,对于不同数据类型变量和数据的输入与输出,有严格对应的配对方式,使用前需要在头文件使用:

#include<cstdio>

2.1 printf

调用形式:

printf("格式控制字符串",输出列表)

其中格式控制字符串用于指定输出形式,可由格式字符和非格式字符串两种组成。

格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位等。

5139f4f9df55bf08b8d6d096b19a71bd.png

小木说常见常用的是这些:

d lld f lf llf c s dllu (无符号的)

示例2.22:

阅读下列程序和程序进行结果,说一说“%d”格式控制字符串和输出列表的表达方式。

//exam2.22
#include <cstdio>
using namespace std;
int main()
{
	printf("%d%d%dn",9/8,4*(6+3x)%5,(4*6+3)%5);
    printf("%d %d %dn",9/8,4*(6+3)%5,(4*6+3)%5);
	printf("9/8=%d 4*(6+3)%5=%d 4*(6+3)%5=%dn", 9/8, 4*(6+3)%5,(4*6+3)%5);
	printf("%d %d %dn",41%(6),41%(-6),(-41)%6);
	return 0;
}

输出:

112

1 1 2

9/8=1 4(6+3)%5=1 4(6+3)%5=2

5 5 -5

能很好的理解,%d就是按照十进制整型输出;

格式的话如果有空格,后面输出也有空格。

示例2.23:

阅读下列程序和程序进行结果,说一说“%f”格式控制字符串和输出列表的表达方式。

//exam2.23
#include <cstdio>
using namespace std;
int main()
{
	printf("9/8=%d 9.0/8=%f 9/8.0=%f 9.0/8.0=%f n",9/8,9.0/8, 9/8.0,9.0/8.0);
    printf("10.0/6.0=%fn",10.0/6.0);
	printf("10.0/6.0=%.3fn", 10.0/6.0);
	printf("10.0/6.0=%9.3fn",10.0/6.0);
	return 0;
}

运行结果:

9/8=1 9.0/8=1.125000 9/8.0=1.125000 9.0/8.0=1.125000

10.0/6.0=1.666667

10.0/6.0=1.667

10.0/6.0= 1.667

%f就是以小数形式输出,

%.3f 就是保留小数点后3位,

%9.3f 就神奇了,是一共要保留小数点后3位的同时,保留整体9位,那就需要前面空着。很疑惑为什么有这种操作,姐姐说,有时候需要最后一位对齐,那就需要这样做。

示例2.24:

阅读下列程序和程序进行结果,说一说“%c”格式控制字符串和输出列表的表达方式。

//exam2.24
#include <cstdio>
using namespace std;
int main()
{
	int a=88,b=89;
    printf("%d %dn",a,b);
	printf("%d,%dn", a,b);
	printf("%c,%cn", a,b);
	printf("a=%d,b=%d",a,b);
	return 0;
}

运行结果:

88 89

88,89

X,Y

a=88,b=89

%c就是输出单个字符88对应X,89对应Y

2.2 scanf格式输入函数

scanf 函数调用的一般形式为:

scanf("格式控制字符串",地址表列);

其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。

地址是由地址运算符“&”后跟变量名组成的。

eg: &a、&b分别表示变量a和变量b的地址。

示例2.25:

阅读下列程序和程序进行结果,说一说“%d”格式控制字符串和输出列表的表达方式。

//exam2.25
#include <cstdio>
using namespace std;
int main()
{
	int a,b,c;
    printf("input a,b,cn");
	scanf("%d%d%d",&a,&b,&c);
	printf("a=%d,b=%d,c=%d",a,b,c);
	return 0;
}

运行结果:

f30c118b86d51aafa6764da13f181895.png

示例2.26:

阅读下列程序和程序进行结果,理解不同“格式控制字符串”、输入列表变量和输入方式的关系。

//exam2.26
#include <cstdio>
using namespace std;
int main()
{
	int a;
	double b;
	char c;
	scanf("%c%d,%lf",&c,&a,&b);
    printf("结果是:n");
	printf("%c %d %.2lf",c,a,b);
	return 0;
}

输入:

x 5,34.5

结果是:

x 5 34.5

第一次抄代码的时候错了,原因是第11行那是lf,我写成了数字1。。。

实验:

(1)输入x 5 34.5,程序运行结果是什么?

结果是

x 5 0.00 (因为第9行中间有个逗号输入的时候没有逗号,那后面的就读取不到)

(2)输入

x

5

34.5

结果是什么呢?

这个有些神奇,我打完数字5 每次按回车都会直接出结果

x 5 0.00

还是逗号的问题,这点在自己写程序的时候一定要注意,一一对应。注意细节~

示例2.27:

阅读下列程序和程序进行结果,分析“*”格式符的作用。

//exam2.27
#include <cstdio>
using namespace std;
int main()
{
	int a,b;
	scanf("%d%*d%d",&a,&b);
	printf("a=%d,b=%dn",a,b);
	return 0;
}

输入:

1 2 3

输出:

a=1,b=3

c87f3f446f722aae7e976daf630a12b4.png

书上写 * 对应输入量不赋给一个变量 ,实际上我改了代码 %d%*d%*d,发现带*的后面都是随机的,不是我们赋值的。

小木带我调试了下代码,

#include <cstdio>
using namespace std;
int main()
{
	int a,b,c;
	//scanf("%c",&a);
	a=88;
	printf("a=%dn",a);
	printf("a=%cn",a);
	return 0;
}

运行结果:

a=88

a=X

这其实就像一个寄存器,不管你最开始是int还是char,后面printf想要它是啥,那就可以是啥。C语言真是好神奇也好灵活呀~

作业:

1、阅读下列程序,给出结果:

#include <cstdio>
using namespace std;
int main()
{
	int a=202;
	double b=2323.34345;
	printf("a=%dn",a);
	printf("2*a=%dn",2*a);
	printf("a=%2dn",a);
	printf("%3lfn",b);
	printf("%20.2lfn",b);
	printf("%-20.2lfn",b);
    printf("%.2lfn",b);
	return 0;
}

猜测下结果啊~

会输出: 202 404 20 2323.34345 (前面好多位)2323.34 ?不知道 2323.34

猜测第9行%2d 会只留202的前两位,其实没有,实际上是多的话就多了,改成%4d看了下就是空格202了。

第10行就厉害了,补充了一个0,原因:double默认输出6 位小数。

实际结果:

800b8439cf06b9ca2dde6b0f2ff4ca18.png

在姐姐和小木的帮助下,试着修改运行观察:

1c0c42ca40a17813f66375cca6d7701a.png
weixin_39860919
关注 关注
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c++基础知识梳理论文资料
07-26
C++还支持C风格的输入输出函数`scanf`和`printf`,尽管现在更多推荐使用`cin`和`cout`。 1. **输入函数`scanf`**:其格式一般为 `scanf("%格式控制符", &输入的变量);` 2. **输出函数`printf`**:其格式为 `printf...
四舍五入(多种方法)
heliotrope_jin的博客
01-02 614
其中特别注意的是num = (int)(num * 1000 + 0.5) / 1000.0;这里我们采用的方法是:先将3.1415扩大1000倍,变成3141.5,进行四舍五入后,变成3142,再缩小1000倍变成3.142。版权声明:本文为CSDN博主「ZHA_123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/m0_72482689/article/details/125997219。
Linux C ————6、数据输入与输出
Fly_鹏程万里
04-09 494
字符输出函数putcharputchar函数是字符输出函数,其功能是在终端显示输出单个字符。其一般调用形式为:putchar(字符变量);例如:putchar(‘A’); /*输出大写字母A*/ putchar(x); /*输出字符变量x的值*/ putchar(‘\n’); /*换行*/ 注意,对控制字符则执行控制功能,不再屏幕上显示。字符输入函数getchar()getc...
C语言 printf 函数多种输出格式以及占位输出
weixin_46158019的博客
07-04 3117
123。
3.9 高精度整数(含:c++限制字符宽度和占位符)
dear_jing的博客
06-20 575
做的最艰难的一次TT
c++限制小数的位数
热门推荐
World peace的博客
10-20 2万+
第一种方法: #include &lt; iomanip &gt; 主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。 它是I/O流控制头文件,就像C里面的格式化输出一样.以下是一些常见的控制函数的:dec 置基数为10 相当 于"%d"hex 置基数为16 相当于"%X"oct 置基数为8 相当于"%o"se...
c++ printf控制位数_printf()函数的这个用法,我猜你一定不知道
weixin_39800957的博客
11-27 650
printf()这个函数,但凡学习编程的童鞋们,那应该是没有人不知道的,很多童鞋一看,就想,不就是输出数据吗,这有什么可讲的?童鞋,你真的了解printf()吗?你真的printf()吗?是的,用,输入一个单词,输出一个数据,输出一句话。但是!童鞋,请你输出几个数据,默认右对齐,左边用“*”符号填充,数据宽度为10,精度为6。如果不,请参看上个表情包,然后认真听讲,记笔记...
C++控制输出小数位数
sunzhao1000的博客
07-11 8253
C++风格的小数位输出控制利用cout函数输出指定为是的小数; C++风格输出txt文件是指定输出位数; 代码如下: #include &lt;iomanip&gt; double dd = 0.123456789; float ff = 1.2f; cout &lt;&lt; "Original data:" &lt;&lt; endl; cout &lt;&lt; dd &lt;&...
C++参考代码.docx
03-10
它使用了标准输入/输出库stdio.h和iostream,使用scanfcin获取用户输入,并使用printf和cout输出结果。 知识点:间计算、scanfcin的使用、printf和cout的使用。 2. 交换值:该代码展示了如何交换两个变量的...
c++编程实例100例.doc
最新发布
07-19
本例展示了如何在C++中实现整数位数的反转并输出。该程序适用于初学者理解基本循环(`do...while`)以及算术操作符(如取模 `%` 和整数除法 `/`)的应用。 **代码解析:** ```cpp #include using namespace std; ...
限定输入位数的限定输入.cpp
06-13
控制c\c++限定只能其只能输入数字且控制输入数字的位数,以便于课程设计健壮性的完善
c++的一些源代码,很简单的小程序,希望能帮助初学者
09-16
注意在 C++ 中,每个声明语句应该单独一行,而这个例子中的声明不符合这一规范。 #### 2.4 输入处理 ```cpp scanf("%d",&a); ``` 通过 `scanf` 函数读取用户输入的一个整数,并将其存储在变量 `a` 中。这种方式在...
C++中如何控制数位的输出
CTTACM的专栏
02-03 2398
#include #include using namespace std; int main( void ) { const double value = 12.3456789; cout << " " << " " <<value << endl; // 默认以6精度,所以输出为 12.3457 cout << 0 << " " <<setprecision(
printfscanf在c语言中的作用,scanfprintf是c语言的输出函数,两者有什么区别?...
weixin_34207865的博客
05-16 1720
首先,scanf函数的一般形式2113scanf函数5261是标准库函数. 其函数原型在标头4102文件“ stdio.h”中,该文件与printf函数相同. C语言1653还允许在使用scanf函数之前不包括stdio.h文件. scanf函数的一般形式是: scanf(“格式控制字符串”,地址表列);其中,格式控制字符串具有与printf函数相同的功能,但不能显示非格式字符串,即不能显示提...
c\c++限定只能输入数字且限定输入位数的方法
first574的博客
07-16 8310
#include #include<conio.h> using namespace std; void main() { int ch,s[3],i=0,sum; cout<<“请输入:”; while(1) { while((ch=getch())!=’\r’) { if(ch<48||ch>57) { if(ch!=’\b’) continue; } if...
c++数字输出位数控制以及保留小数位
qq_45337491的博客
03-19 4509
c++中的控制输出位数以及输出保留几位小数:: 文件——是I/O流控制头文件 使用函数:setprecision(x) “precision”的意思是“精度”,那么加上前面的“set”的意思也就明确了——设置精度 用setprecision(3)可以设置保留几位有效数字(这里是3) fixed则可以控制保留小数的位数位数是由setprecision括号里的数字控制的 #include<io...
c++ printf控制位数_printf函数
weixin_39994627的博客
11-25 1130
一、函数 printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序经常用到此函数。 函数的原型为:int 函数返回值为整型。若成功返回输出的字符数,输出出错则返回负值。 函数的调用格式为: printf(“<格式化字符串>”, <参量表>); 其中格式化字符串包括...
C++编程:cinscanf对比,cout与printf的区别分析
C++编程中,输入输出是程序与用户交互的基础,cin和cout是C++标准库提供的iostream组件,而scanfprintf则是C语言中的输入输出方式。理解它们之间的区别对于编写高效且安全的代码至关重要。 cin和cout是面向对象...
写文章

热门文章

  • mse均方误差计算公式_【从零开始学机器学习12】MSE、RMSE、R2_score 13521
  • 博图v16组态wincc_「博图+仿真+授权」西门子软件安装指南及注意事项 13008
  • uno牌的玩法图解_UNO优诺纸牌游戏玩法详解 这些经验不可多得 9941
  • 怎么退出python虚拟环境_手把手教你进行Python虚拟环境配置 6406
  • ps原始数据清理脚本_「精品分享」PS文件瘦身脚本,200m到5m就这么简单 6333

大家在看

  • 已知矩形中的任意一点坐标旋转、平移后新的矩形顶点坐标
  • 01 [51单片机 PROTEUS仿真设计]基于温度传感器的恒温控制系统 392
  • 01 [51单片机 PROTEUS仿真设计]基于温度传感器的恒温控制系统 1439
  • JAVA开源项目 图书馆管理系统 计算机毕业设计
  • 为什么文件上传后,打开文件提示已损坏?

最新文章

  • mac怎么显示服务器中隐藏文件,mac电脑如何显示隐藏文件_苹果电脑显示隐藏文件的具体方法...
  • 如何让2008服务器访问所有网页,Windows Server 2008 R2 下配置证书服务器和 HTTPS 方式访问网站...
  • git给服务器传文件在哪里,git上传文件服务器地址
2021年126篇
2020年233篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家上海艺术商场美陈售价水晶玻璃钢雕塑价格观澜商场美陈装饰玻璃钢保龄球雕塑安阳玻璃钢花盆杭州商场美陈展示企业亳州人物玻璃钢雕塑定做价格玻璃钢大门雕塑重庆人物玻璃钢雕塑销售厂家玻璃钢蔬菜雕塑出售濮阳镂空玻璃钢雕塑公司广东大型主题商场美陈杭州户外景观玻璃钢雕塑湖北仿铜玻璃钢雕塑设计九江环保玻璃钢雕塑供应商商场中厅美陈吊顶江苏玻璃钢花盆供应广州玻璃钢卡通雕塑摆件湖北多彩玻璃钢雕塑河西商场中秋美陈天津卡通玻璃钢雕塑生产厂家泉州石狮玻璃钢雕塑玻璃钢雕塑娄底长沙玻璃钢雕塑价格多少钱花主题商场美陈蒙城五一商场美陈苏州创意玻璃钢雕塑深圳玻璃钢雕塑沙发昭通玻璃钢雕塑批发宝鸡大型玻璃钢雕塑厂家外国商场圣诞美陈香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化