《算法笔记》笔记 - scanf和printf输入输出

scanf的使用

scanf("格式控制",变量地址);

常见的格式符:

数据类型格式符
int%d
long long%lld
float%f
double%lf (这个与printf的double格式符有所区别)
char%c
char数组(字符串)%s

使用示例:

scanf("#d",&a);
scanf("%s",str);

char数组输入的时候不用加&,是因为数组名本身就会被解释为数组的地址。

int hh,mm,ss;
scanf("%d:%d:%d",&hh,&mm,&ss);

按照hh:mm:ss的格式输入,最终冒号会被“滤”掉然后其他三个数字会对应存放到变量中去。
格式控制符,对应的其实是整个输入。

char ch;
scanf("%c",&ch);

此时如果输入了一个空白字符(比如空格或者换行),此时再输出ch的时候,会发现输出了一个空格或者换行。

printf的使用

printf("格式控制",变量名称);

printf的格式控制符中,只有一个与scanf的不同:double也是%f,而不是%lf
其他的使用方法是相同的。格式控制中可以加入转义字符来控制输出格式。

其他输出的格式化处理

  1. %md 不足m位的int变量以m位进行右对齐输出。
  2. %0md 不足m位的int变量以m位进行右对齐输出,变量不足m位,在剩余位置补0
  3. %.mf 让浮点数保留m位小数输出,使用的是四舍六入五成双。(四舍五入可以用round()函数。)

四舍六入五成双:
就是 5以下舍弃 5以上进位 而当下一位为5时按照如下规则:
被化简的小数位后面一位的数字等于5时,
要看5前面的数字:
·若是奇数则进位,
·若是偶数则将5舍掉,
·若5的后面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。

scanf的其他方面

scanf函数的返回值是其成功读入的参数的个数。
当读入失败的时候,scanf返回-1,在C/C++中,EOF表示-1.
所以,当没有说明要读入多少数据的时候,可以采用如下几种方式:

1,while…EOF

while(scanf("%d",&n)!=EOF){...}

在控制台中手动触发EOF,需要按下CTRL+Z,此时会显示^Z,再按ENTER就可以结束输入了。
(具体之前博客有讲过:《C++PrimerPlus》笔记 -文件尾条件&cin的重定向

2,while…break
此种用法可以是题目要求在输入特定数据的时候结束输入。
既要判断是否EOF,又要判断特定数据。

int break_condition;
while(scanf("%d%d",&a,&b)!=EOF)
{
	if(a==break_condition || b==break_condition)
		break;
	...
}

类似这种。

3,while(T–)
这种是题目在最开始的输入中会给出数据组数,然后才开始输入数据。
也是比较好理解的。

int num_of_data;
scanf("%d",&num_of_data);

while(num_of_data--){...}

需要注意的是,在这种多点循环中,一定要在每次循环的初始位置重置变量和数组,这样就保证了每次循环的时候变量和数组都是初始状态。

一般使用memset函数或者fill函数可以重置数组。memset也需要注意,是按字节赋值。具体再看看再补充。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值