程序竞赛输入输出部分(标准的输入和输出)

freopen("C:\\out.txt","r",stdin)//输入
freopen(“out.txt”,"w",stdout)//输出

也可以在程序运行时临时修改

abc.exe<in.txt;
abc.exe>out.txt;

程序竞赛题目的特点

只做三件事:1、读入数据。2、计算结果。3、打印输出。

 

提示

竞赛中,输入输出不要打印提示信息,例如(please input n:),不要打印解释信息。输出完毕立刻终止程序,不要等待用户按键。严格按照要求,也要注意空格。不可以多输出输入。

第一类输入

1、输入不说有多少组,一般以EOF结束标志。

while(scanf("%d %d",&a,&a)!=EOF)
{
      ...............
}
while(cin>>a>>b)
{
      ......
}

scanf函数返回值就是读入变量的个数,如scanf("%a%b",&a,&b),如果a和b都被成功读入,返回值是2,如果只有a读入返回值是1,如果都没有读入返回值是0。如果遇到错误或者遇到end of file 返回值是EOF,EOF默认值是-1.

#include<stdio.h>
int main()
{
    int a,b;
    freopen("in.txt","r",stdin);
    printf("%d",scanf("%d%d",&a,&b));
} 

建立一个txt文本,在程序目录下,然后输入数据。

#include<stdio.h>
int main()
{
    int a,b;
    freopen("in.txt","r",stdin);
    while(scanf("%d %d",&a,&b)!=EOF)
    printf("%d\n",a+b);
} 
#include<stdio.h>
int main()
{
    int a,b;
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
    while(scanf("%d %d",&a,&b)!=EOF)
    printf("%d\n",a+b);
} //运行后直接自动建立了一个out.txt文本在程序目录下

第二类输入

一开始要求输入正整数N,然后输入N组数据

#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);
    }
} 

第三类输入

不说明有多少组数据,但是以某个特殊输入为结束标志。

例如:以0 0为结束标志

#include<stdio.h>
int main()
{
    int a,b;
    while(scanf("%d %d",&a,&b)&&!(a==0&&b==0))
    {
        printf("%d\n",a+b);
    }
} 

如果输入以0结束的话

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

输入第四类

输入一整行的字符串(字符串中可含有空格)

凯撒密码

#include<stdio.h>
#include<string.h>
int main()
{
    char buf[20];
    gets(buf);
    for(int i=0;i<strlen(buf);i++)
    {
        if(buf[i]>='A'&&buf[i]<='Z')
        buf[i]='A'+((buf[i]-'A'+('D'-'A'))%26);
    }
    puts(buf);
} 

本类输入

char buff[10];
gets(buff);
如果用string buff来保存getline(cin,uff);
如果用char buff[10];来保存cin.getline(buf,10);

说明

1、scanf("%s%s",str1,str2)在多个字符串之间用一个或者多个空格间隔。

2、若使用gets函数应为gets(str1);gets(str2),字符串之间用回车符做间隔。

3、通常情况下接受短字符用scanf接受长字符用gets

4、getchar每次只接受一个字符,经常c=getchar();这样来使用。

例如:while((a=getchar())!='\n')

 

posted @ 2017-11-11 21:09  不负、  阅读(415)  评论(0编辑  收藏  举报