UVA272 TeX Quotes
问题描述:
将字符串中的前引号变成`` , 后引号变成''。
输入:
多行输入,并且保证输入的引号成对出现
输出:
转变后的字符串,逐行输出
解题思路:
逐字符遍历,利用标记判断前引号和后引号
AC:
#include "cstdio"
int main(int argc, char const *argv[])
{
bool flag = true;
char c;
while((c = getchar()) != EOF)
{
if(c == '"')
{
if(flag) printf("``");
else printf("''");
flag = !flag;
}
else
{
printf("%c", c);
}
}
return 0;
}
一种错误的代码:
#include "cstdio"
#include "iostream"
#include "cstring"
using namespace std;
const int MAX_N = 100000;
char s[MAX_N];
int main(int argc, char const *argv[])
{
while(scanf("%s", s) != EOF)
{
bool flag = true;
int len = strlen(s);
for(int i = 0; i < len; i++)
{
if(s[i] == '"')
{
if(flag) printf("``");
else printf("''");
flag = !flag;
}
else
{
printf("%c", s[i]);
}
}
}
return 0;
}
由于scanf("%s")无法读取换行符,所以不能采用这种方式,只能逐字符读取。
总结:
此题简单,但需要注意输入的方式,避免格式错误。

浙公网安备 33010602011771号