ACM NOTE01

14 篇文章 1 订阅
1. 输入不说明有多少个Input Block,以EOF为结束标志。
参见: HDOJ_1089
 #include<stdio.h>
 int main()
 {
    inta,b;
    while(scanf("%d%d",&a, &b) != EOF)        
    printf("%d\n",a+b);

 }

2.各类输入一览:
输入_第一类:
  输入不说明有多少个InputBlock,以EOF为结束标志。

参见:HDOJ_1089
#include <stdio.h>
 int main()
 {
   int a,b;
   while(scanf("%d%d",&a, &b) != EOF)        
   printf("%d\n",a+b);
 }
本类输入解决方案:
 
C语法:
       while(scanf("%d%d",&a, &b) != EOF)
      {
       ....
      }
C++语法:
      while(cin >> a >> b )
      {
       ....
      }


说明(1):
    1.Scanf函数返回值就是读出的变量个数,如:scanf( “%d  %d”, &a, &b );
    2.如果只有一个整数输入,返回值是1,如果有两个整数输入,返回值是2,如果一个都没有,则返回值是-1。
    3.EOF是一个预定义的常量,等于-1。

输入_第二类:
  输入一开始就会说有N个InputBlock,下面接着是N个Input Block。
参见: HDOJ_1090
#include <stdio.h>
 int main()
 {
   int n,i,a,b;
   scanf("%d",&n);
   for(i=0;i<n;i++)
   {
      scanf("%d %d",&a, &b);
      printf("%d\n",a+b);
   }
 }
本类输入解决方案: 
 C语法:
scanf("%d",&n);
for(i=0 ; i<n ; i++ )
{
    ....
}
  C++语法:
cin >> n;
for( i=0 ; i<n ; i++ )
{
    ....
}

输入_第三类:
  输入不说明有多少个InputBlock,但以某个特殊输入为结束标志。
  参见: HDOJ_1091
#include <stdio.h>
 int main()
 {
    inta,b;
    while(scanf("%d%d",&a, &b) &&(a!=0 && b!=0))
    printf("%d\n",a+b);
 }
本类输入解决方案:
  C语法:
     while(scanf("%d",&n)  && n!=0 )
     {
        ....
     }
 
  C++语法:
     while(cin >> n && n != 0 )
     {
        ....
     }

输入_第四类:
  以上几种情况的组合
  http://acm.hdu.edu.cn/showproblem.php?pid=1092
  http://acm.hdu.edu.cn/showproblem.php?pid=1093
  http://acm.hdu.edu.cn/showproblem.php?pid=1094

输入_第五类:
  输入是一整行的字符串的
  参见: HDOJ_1048
  本类输入解决方案:
C语法:
   char buf[20]; 
   gets(buf); 
C++语法:
  1.如果用string buf;来保存:
    getline( cin , buf ); 
  2.如果用char buf[ 255 ]; 来保存:
    cin.getline( buf, 255 );
说明(5_1):
   scanf(“ %s%s”,str1,str2),在多个字符串之间用一个或多个空格分隔;
   若使用gets函数,应为gets(str1); gets(str2); 字符串之间用回车符作分隔。
   通常情况下,接受短字符用scanf函数,接受长字符用gets函数。
   而getchar函数每次只接受一个字符,经常c=getchar()这样来使用。
说明(5_2):cin.getline的用法:
    getline 是一个函数,它可以接受用户的输入的字符,直到已达指定个数,或者用户输入了特定的字符。它的函数声明形式(函数原型)如下: 
      istream& getline(char line[], int size, char endchar = '\n');
  不用管它的返回类型,来关心它的三个参数:
  char line[]: 就是一个字符数组,用户输入的内容将存入在该数组内。
  int size : 最多接受几个字符?用户超过size的输入都将不被接受。
  char endchar :当用户输入endchar指定的字符时,自动结束。默认是回车符。
说明(5_2)续
  结合后两个参数,getline可以方便地实现: 用户最多输入指定个数的字符,如果超过,则仅指定个数的前面字符有效,如果没有超过,则用户可以通过回车结束 输入。
char name[4];
cin.getline(name,4,'\n');
由于 endchar 默认已经是 '\n',所以后面那行也可以写成:
cin.getline(name,4);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值