Day 0x9 UVa272 TEX Quotes

题意

\TeX/
\LaTeX/

  • 输入一字串,重新排版後输出
  • 需要注意的有:
    1. 重复输入直到 EOF
    2. 排版规则
      • 每对 " " 中的第一个替换成 ``
      • 每对 " " 中的第二个替换成 ''

解法

  • while 重复回圈搭配 gets() 读取每行输入,再用 for 逐字元处理
    char str[999] = {0};
    
    while(gets(str)){
        for(i = 0; i < strlen(str); i++){
            ...
        }
        printf("\n");
    }
    
  • 因为只有两种情况,第一或第二个双引号,所以可透过 if 滤出双引号,再用 flag 控制要替换的字元;其余直接输出即可
    bool flag = true;
    
    ...
    
    if(flag && str[i] == '"'){
        printf("``");
        flag = false;
    }
    else if(!flag && str[i] == '"'){
        printf("''");
        flag = true;
    }
    else{
        printf("%c", str[i]);
    }
    
  • C code ver. 1
    #include<stdio.h>
    #include<string.h>
    #include<stdbool.h>
    
    int main(){
    
        char str[999] = {0};
        bool flag = true;
        int i;
    
        while(gets(str)){
            for(i = 0; i < strlen(str); i++){
                if(flag && str[i] == '"'){
                    printf("``");
                    flag = false;
                }
                else if(!flag && str[i] == '"'){
                    printf("''");
                    flag = true;
                }
                else{
                    printf("%c", str[i]);
                }
            }
            printf("\n");
        }
    
        return 0;
    }
    
  • 也可改成逐字元输入,就可不需要 for
    char chr;
    
    while((chr = getchar()) != EOF){
        ...
    }
    
  • C code ver. 2
    #include<stdio.h>
    #include<string.h>
    #include<stdbool.h>
    
    int main(){
    
        char chr;
        bool flag = true;
    
        while((chr = getchar()) != EOF){
            if(flag && chr == '"'){
                printf("``");
                flag = false;
            }
            else if(!flag && chr == '"'){
                printf("''");
                flag = true;
            }
            else{
                printf("%c", chr);
            }
        }
    
        return 0;
    }
    
  • C++
    • 可用 getline() 逐行读取,或是 cin.get()

<<:  [Day1] 30天大纲

>>:  # Day1 简介

Day23-Go Gin

前言 上一篇我们介绍了 Go 的网路操作套件 net/http,那就不能错过 Go 的网页框架(fr...

Unity与Photon的新手相遇旅途 | Day11-敌人攻击

今天的内容为该如何简单制作出一个自动攻击的敌人 ...

[CSS] Flex/Grid Layout Modules, part 6

你如果会用 Excel,那 Grid 就应该不陌生。 不过老实讲,我也不太会用 Excel。 Gr...

【Day 05】从零开始的 Line Chatbot-公开 APP 网址

昨天稍微简介了一下 ngrok 在做甚麽,今天我们要让我们的 Line Channel 公开,这个 ...

Day 15 ( 中级 ) 无限循环画中画

无限循环画中画 教学原文参考:无限循环画中画 这篇文章会介绍,如何在 Scratch 3 里使用角色...