历届试题_空白格式化


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

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++);
}

    请分析代码逻辑,并推测划线处的代码,通过网页提交。
    注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!
这道题仔细分析就可以知道是指针指向非题中的三种字符此时指针to才保留一个空格,但要注意的一点是下面代码注释除,这样写是有问题的。,一句话就是char*的内容存放在常量区,不可修改,否则出现系统崩溃问题,具体参考这篇博客:https://blog.csdn.net/yahohi/article/details/7427724(哎,基础没打好真的很容易被嘲笑,)
复制代码
 1 #include<bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 void f(char* from, char* to)
 6 {
 7     char* p_from = from;
 8     char* p_to = to;
 9     
10     while(*p_from==' ' || *p_from=='\t' || *p_from=='\n') p_from++;
11     
12     do{
13         if(*p_from==' ' || *p_from=='\t' || *p_from=='\n'){ 
14             do{
15             p_from++;
16             } while(*p_from==' ' || *p_from=='\t' || *p_from=='\n');
17             if(*p_from!=NULL) *p_to++ = ' ';  //填空位置
18         }
19     }while(*p_to++ = *p_from++);
20 }
21 
22 
23 int main()
24 {
25    char a[]="   asad v     dwdwdw";
26    char b[]="";
27    //char* a="   asad v     dwdwdw";
28    //char* b="";
29    f(a,b);
30    cout << b<< "=b"<<endl;
31     return 0;
32  }
复制代码

 

posted @   你的雷哥  阅读(291)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示