C++算法题的一些输入技巧

运行C++的终端中如何结束输入

有时候我们运行程序的时候,是以EOF结束程序,可是在终端中,输入空格,TAB和回车符都是无法结束输入的,所以这时我们使用其他方式。

  1. 在Windows中,输入完成后先按Enter键,再按Ctrl+Z键,最后再按Enter键即可结束输入。
  2. 在Linux中,输入完毕后按Ctrl+D键即可结束输入。

输入保留空格和回车

无法使用scanf("%s")输入字符串,因为它遇到空格或TAB就会停下来,所以我们可以使用下面两种方法:

1.getchar(),如果题目是可以边读边处理的,这种是最好的方法。

int c;
while((c = getchar()) != EOF){
    ...
}

2.gets(),如果不满足上述条件,只能使用这种方案。

char c[8];
while(gets(c)!=NULL){
    ...
}

输入忽略换行符

有时候我们会碰到编码文本可以由多行组成,这里我们可以使用"跨行读字符"的函数readchar

int readchar(){
    for(;;){
        int ch = getchar();
        if(ch != '\n' && ch != '\r') return ch; // 一直读到非换行字符为止
    }
}

int readint(int c){
    int v = 0;
    while(c--) v = v * 2 + readchar - '0';
    return v;
}
posted @ 2020-03-05 17:05  harrylyx  阅读(500)  评论(0编辑  收藏  举报