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())!=' ')

  • 相关阅读:
    打造基于CentOS7的xfce最简工作环境
    Linux下C程序的编辑,编译和运行以及调试
    修正 XE6 TListView 上方 SearchBok 右边的清除钮显示
    TabControl 显示彩色的图示 (XE6 Firemonkey)
    TSwitch 中文简繁显示支持(XE6 Android)
    改变 TMemo 的背景颜色 (Firemonkey)
    修正 XE5 Android 键盘三个问题
    Delphi 收藏
    展示 Popup 的使用方法
    ListView 下拉更新 (支持 Android)
  • 原文地址:https://www.cnblogs.com/2228212230qq/p/7819982.html
Copyright © 2011-2022 走看看