L1-039. 古风排版

时间限制
400 ms

内存限制
65536 kB

代码长度限制
8000 B

判题程序
Standard

作者
陈越

中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。

输入格式:

输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。

输出格式:

按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)

输入样例:

4
This is a test case

输出样例:

asa T
st ih
e tsice s

题意:中文题,题意略......

想法:这个题本身其实并不难,只要会用字符串操作的基本上都没问题。但是,因为我身边就有很多因为对字符串操作不熟的而在比赛中甚至是赛后都WA的死的人。现在我的主要目的是点出那些坑。

首先,是AC代码。

#include<iostream>
#include<cstdio>
#include<cstring>using namespace std;
char Cmap[1005][1005];
int main()
{int n,m;char s[1005];cin >> n;getchar(); //用这个来接收空格 gets(s);int len = strlen(s);m = len/n;if(len%n != 0) m++; int i = 0;for(int k = m-1; k >= 0; k--){for(int j = 0; j < n; j++){if(i < len)Cmap[j][k] = s[i++];elseCmap[j][k] = ' '; //当长度超过len时直接赋值空格。 }}for(int j = 0; j < n; j++){ // 最后输出。 for(int k = 0; k < m; k++)cout << Cmap[j][k];cout << endl;}return 0;
}

这个代码的思路很好理解,(而且做法也很烂,我个人感觉应该是可以直接输出答案的。)下来就就是点一下几个坑点。为了方便辨认,修改部分已注明。

#include<iostream>
#include<cstdio>
#include<cstring>using namespace std;
char Cmap[1005][1005];
int main()
{int n,m;char s[1005];//有修改 for(int j = 0; j < 1005; j++){for(int k = 0; k < 1005; k++)Cmap[j][k] = '.';s[j] = '.';}cin >> n;getchar(); //用这个来接收空格 gets(s);int len = strlen(s);m = len/n;if(len%n != 0) m++; int i = 0;for(int k = m-1; k >= 0; k--){for(int j = 0; j < n; j++){//有修改 Cmap[j][k] = s[i++];}}for(int j = 0; j < n; j++){ // 最后输出。 for(int k = 0; k < m; k++)cout << Cmap[j][k];cout << endl;}return 0;
}

与上面做法不同的就是对最后空格的处理。在上面是第一份代码中是赋值空格,在这一份中是刚开始就初始化为空格。从逻辑上讲并没错。但是,在真正运行的过程中则不是。现在我初始化成的空格改成‘.’,我们在来输出结果。

修改部分的代码如下图:

修改部分代码

修改后的输出结果:

用修改后的代码的输出结果

现在我们可以发现在字符5下面的出现的是空格而不是我们初始化的‘.’。之所以会出现这种原因是因为我们在对一个字符串进行输入时,字符串的末尾是‘\0’,以图中的输入为例。从第一个字符到第一千个字符依次是:‘1’,‘2’,‘3’,‘4’,‘5’,‘\0’,'.','.','.'........(此后省略。)所以,在字符5下面的输出其实并不是空格而是‘\0’,因为,在此题中输出结果的末尾是补空格。所以,我们看不错误。但是,对于评测机判定时的判定结果是‘\0’,这也就是使我们WA了一发。

会出现这种错误的原因说到底还是因为自己对字符串方面的内容不熟才会出现的。但是,这种情况应该只会出现在刚入坑的萌新中。不得不说PAT上的简单题,考的就是C语言的基础知识。对于我们语法上的锻炼还是很有帮助的。

————————————2020年更新,好久没看过了。不知道发生那么多的变化。——————————————————
需要把第13,14行改成

  getline(cin,s);int len = s.length();

L3-039. 古风排版 (点一下其中几个易错的坑)相关推荐

  1. L1-039. 古风排版

    L1-039. 古风排版 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 中国的古人写文字,是从右向左竖向排版的.本题就请你编写 ...

  2. 团体程序设计天梯赛-练习集-L1-039. 古风排版

    L1-039. 古风排版 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数.第二行给出一 ...

  3. 7-130 古风排版 (20 分)

    7-130 古风排版 (20 分) 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数.第 ...

  4. CCCC-GPLT L1-039. 古风排版 团体程序设计天梯赛

    中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数.第二行给出一个长度不超过1000的非空 ...

  5. 团体程序设计天梯赛——L1-039 古风排版

    团体程序设计天梯赛--L1-039 古风排版 https://pintia.cn/problem-sets/994805046380707840/problems/994805091888906240 ...

  6. 古风排版(20 分)

    古风排版(20 分) 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数.第二行给出一个长 ...

  7. 字符串字符数组 PTA 7-10 古风排版

    7-10 古风排版 (20分) 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数.第二行 ...

  8. PTA 7-10 古风排版

    7-10 古风排版 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数.第二行给出一个长度 ...

  9. pta 7-10 古风排版 (20 分)

    中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数.第二行给出一个长度不超过1000的非空 ...

最新文章

  1. 基于windows平台搭建elasticsearch 补充
  2. 通信原理最佳接收-最佳接收准则
  3. 使用python读取mysql数据库并进行数据的操作
  4. 阿里云的很多域名没有办法进行实名认证了吗
  5. android 拍照屏幕大小,Android Camera 找出屏幕的最佳尺寸大小
  6. Android 视频通信,低延时解决方案
  7. VS2010解决闪退的方法
  8. 浮点数例外 (核心已转储)_年仅21岁出场过百重新定义边后卫,克洛普把阿诺德打造成进攻核心...
  9. 通过读取原始星历文件数据推算GPS卫星位置坐标
  10. 图像识别的原理、过程、应用前景,精华篇!
  11. 字节跳动面经(一、二、三+大boss+hr面)
  12. 计算机水利工程制图教程,《水利工程制图》.pdf
  13. delphi Base64 编解码
  14. idea下载插件方法
  15. C++ QT开发人机象棋(评估函数)
  16. 0x00007FF6DF5D6BD8 处有未经处理的异常(在 Ray tracer.exe 中): 0xC00000FD: Stack overflow
  17. LateX安装教程(对小白新手超级友好,还瞅啥,说的就是你)
  18. 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变
  19. R语言 主成分分析 代码
  20. 新零售模式,数据管理更轻松

热门文章

  1. 【C语言简单实现数据结构】排序之交换排序和归并排序
  2. TCL X11G参数 TCL X11G Mini LED 评测怎么样
  3. 如何在Windows 7 Media Center和Player中播放FLAC文件
  4. 如何为移动开发选择技术栈?
  5. 活动目录(Active Directory)
  6. 华为防火墙跨三层mac识别配置
  7. 基于深度学习的回归预测课程介绍
  8. re正则表达式中?P前缀
  9. prometheus:(二)监控概述
  10. 做自媒体拍短视频,不想露脸怎么玩?