算法竞赛入门经典 例题3-1 TeX中的引号
在TeX中,左双引号是“”,右双引号是“''”。输入一篇包含双引号的文章,你的任务是 把它转换成TeX的格式。 样例输入: "To be or not to be," quoth the Bard, "that is the question". 样例输出:
To be or not to be,'' quoth the Bard, ``that is the question''
关键:
- 怎么判断是左还是右双引号 联想一下那种行末不输出空格的题, 使用标志变量
- 怎么输出带有空格的字符串
scanf("%s",s) 碰到空格 或者TAB就会停下来
- 使用fgetc(fin) 读取一个打开的文件fin,读取一个字符,然后返回一 个int值
为什么返回的是int而不是char呢?因为如果文件结束,fgetc将返回一个特殊标记 EOF,它并不是一个char。如果把fgetc(fin)的返回值强制转换为char,将无法把特殊的EOF和 普通字符区分开。 - 如果要从标准输入读取一个字符,可以用getchar,它等价于fgetc(stdin)。
使用fgetc(fin)可以从打开的文件fin中读取一个字符。一般情况下应当在检 查它不是EOF后再将其转换成char值
"fgets(buf, maxn, fin)"将读取完整的一行放在字符数组buf中。应当保证 buf足够存放下文件的一行内容。
getchar() 返回类型 int
#include<iostream>
using namespace std;
int main()
{
int c,q=1;
//getchar()返回类型 int
while((c=getchar())!=EOF)
{
if(c=='"') //隐式转换
{
cout<<(q?"``":"''");
q=!q;
}
else cout<<(char)c;
}
return 0;
}