欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

紫书第三章例题--UVa272

程序员文章站 2022-06-09 19:02:35
...

题目:UVa272

紫书第三章例题--UVa272

地址:https://vjudge.net/problem/UVA-272

大意:就是把文章中的双引号(英文输入中不分左右的那种引号)改为区分左右的引号。

思路:这是一道水题,就是单纯的输入就行。

①   可以直接边读边处理,而不用把所有字符先存起来再处理,输入的时候可以采用getchar,也可以采用scanf(“%c”)

②   对于左右引号的判断,由于左右引号的切换是以2为周期的,所以可以用01来标记。

编程技巧:

①   可以用”?:”运算符来代替“if…else...”语句

②   fgetc(fin),fin为输入源,当fin=stdin时,fgetc(stdin)相当于getchar()

fgets(buf,maxn,fin),buf为字符数组名,maxn为最大上界(这个函数最多读入maxn-1个字符,然后在末尾添上结束符’\0’),fin为输入源,当fin=stdin时,fgets(buf,maxn,fin)相当于gets函数,不过gets函数会不断地向buf存储内容,而不管buf是否能存储下,故在C11标准中已经废除了gets函数。

AC代码:

#include<bits/stdc++.h>
using namespace std;

char ch;
int cnt = 0;

int main(){
    while(~scanf("%c",&ch)){
        if(ch=='"'&&cnt==0){			//可以改为 printf(“%c”,cnt ?  "``" : "''");cnt = !cnt;
            printf("``");
            cnt = !cnt;
        }
        else if(ch=='"'&&cnt==1){
            printf("''");
            cnt = !cnt;
        }else printf("%c",ch);
    }
    return 0;
}