C语言(C++)中的 scanf,printf 的占位符问题

首先需要导入#include<iomainp>

在C(C++)中,我们会经常用到 scanf , printf 这两个库函数,例如

scanf("%d",&n);//输入
printf("%d",n);//输出
"%a,%A" ///表示一个浮点值(仅C99有效)
 
"%c" ///表示一个字符
 
"%d,%ld,%lld" ///表示十进制整数    ***
 
"%i" ///表示十进制,八进制,十六进制整数 
 
"%o" ///表示八进制整数 
 
"%x,%X" ///表示十六进制整数 
 
"%s" ///表示一个字符串,遇空格、制表符或换行符结束    ***
   
"%f,%F,%e,%E,%g,%G,%lf"   ///用来输入实数,可以用小数形式或指数形式输入 ***
  
%.2f保留小数点后两位  ***
 
"%p" ///表示一个指针 
 
"%u" ///读入一个无符号十进制整数 
 
"%n" ///至此已读入值的等价字符数
 
"%[]" ///扫描字符集合
 
"%%" ///读%符号    ***
float a;
scanf("%f",&a);
printf("%f",a);  //输出保留小数点后六位

printf("%e",a)//输出科学计数法
printf("%g",a)//正常输出

float,单精度浮点型,对应%f。
double,双精度浮点型,对应%lf。

在c语言中它们三个格式说明符都是用来输出实型数据的,它们的区别:%f是以小数的形式输出实型数据,整数部分原样输出,小数点后输出6位小数,%e是以指数的形式输出实型数据,格式为*.******e+/-***,%g格式在输出的时候会自动选择前两种格式输出时宽度小的那种格式输出,而且不输出无意义的零。例如printf('%f,%e,%g',123.45,123.45,123.45);输出结果:123.450000,1.23450e+002,123.45

double x;scanf(“%f”,&x);输入“123.4”,输出x的值结果为0,没有接收输入的数据,再输入别的数据,结果都为0。这是因为用户定义x为双精度型数据,而用“%f”格式输入数据,仍不能接收,应该使用“%lf”或“%le”,即scanf(“%lf”,&x);此时输入“123.4”即可接收。因此长整型数据和双精度型数据必须使用附加格式说明字符l,短整型数据必须使用附加格式说明字符h。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值