C++ L1-039. 古风排版(如何声明二维动态数组)
2018-03-21 22:26
495 查看
L1-039. 古风排版
中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。输入格式:
输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。输出格式:
按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)输入样例:
4This is a test case
输出样例:
asa Tst ih
e tsi
ce s
解析:
这也是水题,不需要解析吧。注意输出格式就行了。初始化为空格比较放心。其次就是我用到了二维数组。二维数组声明方法:
/*-------如下方法建立二维数组-------*/ char **p=new char*[m] ; for(int i = 0; i < m; i++) p[i] = new char ; /*-------如下方法释放二维数组-------*/ for(int i = 0; i < m; ++i) delete[] p[i]; delete []p;
答案:
#include<iostream> #include<string> using namespace std; int main() { int line; string a; cin>>line; getchar(); getline(cin,a); int n,k=0; /*--------看有几列--------*/ if(a.length()%line==0) n=a.length()/line; else n=a.length()/line+1; /*------建立二维数组------*/ char **p=new char*[line] ; for(int i = 0; i < line; i++) p[i] = new char ; /*---初始化数组为空格----*/ for(int i=0;i<line;i++) { for(int j=0;j<n;j++) p[i][j]=' '; } /*---字符串复制到数组中----*/ for(int i=n-1;i>=0;i--) { for(int j=0;j<line;j++) { if(k<a.length()) //复制完字符串就可以了……一直k++会出事的 p[j][i]=a[k++]; } } /*--------输出--------*/ for(int i=0;i<line;i++) { for(int j=0;j<n;j++) cout<<p[i][j]; cout<<endl; } return 0; }
相关文章推荐
- L1-039. 古风排版——二维字符数组的条件输出
- c++ 依据输入动态声明数组(一维,二维)
- c++ 根据输入动态声明数组(一维,二维)
- L1-039. 古风排版 C++
- PAT L1-039. 古风排版 数组填字符
- C++ 二维动态数组的声明与删除
- c++ 依据输入动态声明数组(一维,二维)
- c++声明并释放动态二维、三维数组
- c++ 根据输入动态声明数组(一维,二维)
- L1-039. 古风排版
- L1-039. 古风排版
- L1-039. 古风排版
- c++二维动态数组分配与delete
- L1-039. 古风排版
- C++中如何定义动态数组
- 团体程序设计天梯赛-练习集 L1-039. 古风排版
- c++ 二维动态数组初始化及作为参数传递
- L1-039. 古风排版
- 【资料备份】c++声明二维变长数组,并用memset赋予0值
- 动态创建二维vector数组 C和C++ 及指针与引用的区别