zoukankan      html  css  js  c++  java
  • 程序竞赛输入输出部分(标准的输入和输出)

    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
    ",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
    ",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
    ",a+b);
        }
    } 

    第三类输入

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

    例如:以0 0为结束标志

    #include<stdio.h>
    int main()
    {
        int a,b;
        while(scanf("%d %d",&a,&b)&&!(a==0&&b==0))
        {
            printf("%d
    ",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())!=' ')

  • 相关阅读:
    POJ_2184_Cow_Exhibition_(动态规划,背包)
    POJ_2392_Space_Elevator_(动态规划,背包)
    POJ_2914_Minimum_Cut_(Stoer_Wagner)
    POJ_3068_Shortest_pair_of_paths_(最小费用流)
    POJ_3666_Making_the_Grade_(动态规划)
    BZOJ_1565_[NOI2009]_植物大战僵尸_(Tarjan+最大流+最大权闭合图)
    POJ_2987_Firing_(最大流+最大权闭合图)
    BZOJ_1497_[NOI2006]_最大获利_(最大流+最大权闭合图)
    BZOJ_1798_&_Codevs_2216_[AHOI_2009]_行星序列_(线段树)
    Codevs_1690_开关灯_(线段树)
  • 原文地址:https://www.cnblogs.com/2228212230qq/p/7819982.html
Copyright © 2011-2022 走看看