多次测试

前言

巩固一下基础知识, 水一篇关于多次测试的文章。
多次测试主要是用于ACM中的,所以对于竞赛的同学来说多次测试还是比较重要的。
多次测试主要分为一些数字啊, 还有字符串。数字其实没啥好说的,主要是字符串的就有一点点麻烦。
这里就话不多说,直接展示代码

一般写法及其原理

衍生(通常是比一般写法更加快捷和方便)

  while(scanf("%d",&a)!=eof){...}

这是多次测试中最为基础和常见的一种,但是有些同学却弄不懂这其中的含义,所以今天特地来讲一下。
其实可以将以上的代码分为三个部分来看:

  1. while()循环: 有循环就有循环结束的条件,while(!=eof) 就是说只要值不是eof就不会结束,那eof 是啥呢? eof 相当于一个C里面的宏定义, 它的值是-1,所以while(!= eof)就说明程序不会结束。
  2. scanf("%d",&a); scanf 实际上是一个函数,它的返回值是一个int型,
    就是说当你从键盘上输入一个数的时候,scanf()返回值为1. 如下图所示:
    在这里插入图片描述
  3. 所以由此可知,只要你从键盘输入数据,while()就能一直执型,而不会终止,因为你输入数据时,scanf()不会返回-1, 所以怎样结束呢?
  4. 从键盘输入cort + z 键即可,这是程序会默认scanf的返回值为-1,所以就直接结束了。

由此 ,便可以衍生多种多次测试的写法:

c:

while~(scanf("%d",&a)){....}  //~ 按位取反, -1是条件不成立,退出。
while(scanf("%d",&a) != -1){....} //和第一种一样。

c++;

while(cin >> a) {.... }   //我比较喜欢用这种嘻嘻嘻。

字符串多次测试

字符串其实和数字的差不多,一般考到多次测试直接用就完事了。

c:

while(scanf("%s",&str)){....}   //无法接受空格
while(gets(s)){....}   //可以接受空格

c++

while(cin >> str) {...}   //string str 这个str 无法接受空格。
while(getline(cin,str)){...}   //这个可以接受空格。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值