【2013年第四届蓝桥杯C/C++程序设计本科B组决赛 空白格式化(代码填空) 】

来源:互联网 发布:淘宝分享有赏红包群 编辑:程序博客网 时间:2024/06/05 15:46

2013年蓝桥杯C/C++决赛 B组 试题

空白格式化
本次大赛采用了全自动机器测评系统。
如果你的答案与标准答案相差了一个空格,很可能无法得分,所以要加倍谨慎!
但也不必过于惊慌。因为在有些情况下,测评系统会把你的答案进行“空白格式化”。其具体做法是:去掉所有首尾空白;中间的多个空白替换为一个空格。所谓空白指的是:空格、制表符、回车符。
以下代码实现了这个功能。仔细阅读代码,填写缺失的部分。

void f(char* from, char* to)  {      char* p_from = from;      char* p_to = to;      while(*p_from==' ' || *p_from=='\t' || *p_from=='\n') p_from++;      do      {          if(*p_from==' ' || *p_from=='\t' || *p_from=='\n')          {              do              {                  p_from++;              }              while(*p_from==' ' || *p_from=='\t' || *p_from=='\n');              if(____________________) *p_to++ = ' ';  //填空位置          }      }      while(*p_to++ = *p_from++);   // 先赋值,后地址++,然后判断是否为空(到头,*p_to++ == *(p_to++),但是先取地址,而后++,先把 p_from 的地址赋给p_to,然后p_to++,相当与 *p_to = *++p_from,*++p_from == *(++p_from),先++,而后取地址 QAQ)}  
答案  : *p_from // 若中间的多个空格换成一个空格,因为前一个 while 语句把中间的' ',都去掉了,若这些空格并非末尾的,者需要补上一个' ' 
阅读全文
0 0
原创粉丝点击