using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 古風排版
{
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
string str = Console.ReadLine();
int a = str.Length;
char[] arr = str.ToCharArray();
int x, y;
x = a % n;//最后一行字符數
y = (a - x) / n;//列數-1
char[,] ar = new char[n, y + 1];
for (int i = 0; i < a; i++)
{
ar[i % n, y - (i - i % n) / n] = arr[i];
}
if (x != 0)
{
for (int k = x; k < n; k++)
{
ar[k, 0] = ' ';
}
}
for (int k = 0; k < n; k++ )
{
for (int m = 0; m <= y; m++)
{
Console.Write(ar[k, m]);
}
Console.Write("\n");
}
Console.ReadLine();
}
}
}
網上找到的只有c語言答案,但我們還沒學。
求大佬幫忙看看
我這錯在哪怎么改,或者給個其他的解法,謝謝!!!
uj5u.com熱心網友回復:
https://www.cnblogs.com/damonlan/archive/2011/06/04/2072743.htmluj5u.com熱心網友回復:
題型不一樣啊。那個古詩可以用split直接分成幾個字串,我這個想嘗試用二維陣列輸出uj5u.com熱心網友回復:
題型不一樣啊。那個古詩可以用split直接分成幾個字串,我這個想嘗試用二維陣列輸出
uj5u.com熱心網友回復:
public void shupai(){int rowLen = 7;
String str = "this is a test program";
int arrFirstLen = str.length()/rowLen+1;
int lastRowLen = str.length()%rowLen;
String [][] arr = new String[arrFirstLen][rowLen];
int j = arrFirstLen-1;
int jk = 0;
for(String word:str.split("")){
arr[j][jk] = word;
if(jk==rowLen-1){
jk =0;
j--;
continue;
}
jk++;
}
for(;lastRowLen<rowLen;lastRowLen++){
arr[0][lastRowLen]=" ";
}
for(int x =0;x<rowLen;x++){
for(int y =0;y<arrFirstLen;y++) {
System.out.print(arr[y][x]);
}
System.out.println("");
}
}
uj5u.com熱心網友回復:
#include <iostream>
using namespace std;
int main()
{
string chars;
int row=0;//行
int col=0;//列
cin>>row;
cout<<"輸入行數!"<<endl;
while(row>100)
{
cin>>row;
}
cout<<"輸入列數!"<<endl;
cin>>col;
while(col>1000)
{
cin>>col;
}
cout<<"輸入字串!"<<endl;
cin>>chars;
int i=0;
string chartemp;
while(i<chars.length)
{
//
}
}
uj5u.com熱心網友回復:
這個從右到左,豎向排列 其實就是矩陣右旋轉一下 太久沒看c/c++;按這個思路重排下就好了1 2 3 4 9 5 1
5 6 7 8=>10 6 2
9 10 7 3
8 4
uj5u.com熱心網友回復:
輸入的行 變成 列 列變成行
uj5u.com熱心網友回復:
private static List<string> test(int len, string text)
{
//按每組長度為len,將其分割成一個陣列
string patten = "[\\s\\S]{" + len + "}|[\\s\\S]{1," + len + "}";
Regex rex = new Regex(patten, RegexOptions.IgnoreCase);
//分割
List<string> groups = new List<string>(rex.Matches(text).Cast<Match>().Select(m => m.Value).ToArray());
//反轉:ase ,st c,a te, is ,This
groups.Reverse();
List<string> result = new List<string>();
List<List<string>> results = new List<List<string>>(len);
for (int i = 0; i < len; i++)
{
results.Add(new List<string>());
}
//組合:["asa t","st ih","e tsi"," ce s"]
for (int i = 0; i < groups.Count; i++)
{
//這里,包括后面,有將常規的空格轉換成了一個空白占位符。只是為了觀看效果
char[] arr_Groups = groups[i].Replace(" ", " ").ToCharArray();
for (int j = 0; j < len; j++)
{
results[j].Add(arr_Groups.Length < j + 1 ? " " : arr_Groups[j].ToString());
}
}
//只是為了更直觀,將每組字符進行拼接
foreach (List<string> temp in results)
{
result.Add(string.Join("", temp.ToArray()));
}
return result;
}
string text = "本片為英劇軍情五處電影版,也是這一系列劇的大結局。當一個恐怖分子在一次常規交接中逃脫,克萊姆必須與軍情五處遭貶低的情報長官合作,在即將到來的倫敦恐怖襲擊之前追蹤到恐怖分子。";
List<string> list = test(4, text);
return string.Join("<br/>", list.ToArray());
uj5u.com熱心網友回復:
突然想看下效果,整了篇《出師表》,標點符號用全角的替換過,字符加多了2個空白占位符以作間距方法:
private static List<string> classicalChinese(int len, string text)
{
//按每組長度為len,將其分割成一個陣列
string patten = "[\\s\\S]{" + len + "}|[\\s\\S]{1," + len + "}";
Regex rex = new Regex(patten, RegexOptions.IgnoreCase);
//分割
List<string> groups = new List<string>(rex.Matches(text).Cast<Match>().Select(m => m.Value).ToArray());
//反轉:ase ,st c,a te, is ,This
groups.Reverse();
List<string> result = new List<string>();
List<List<string>> results = new List<List<string>>(len);
for (int i = 0; i < len; i++)
{
results.Add(new List<string>());
}
//組合:["asa t","st ih","e tsi"," ce s"]
for (int i = 0; i < groups.Count; i++)
{
//這里,包括后面,有將常規的空格轉換成了一個空白占位符。只是為了觀看效果
char[] arr_Groups = groups[i].Replace(" ", " ").ToCharArray();
for (int j = 0; j < len; j++)
{
//加多了兩個空白占位符以作間距
results[j].Add(arr_Groups.Length < j + 1 ? " " : " " + arr_Groups[j].ToString());
}
}
//只是為了更直觀,將每組字符進行拼接
foreach (List<string> temp in results)
{
result.Add(string.Join("", temp.ToArray()));
}
return result;
}
呼叫:我是webApi中加的方法,所以加的是<br/>換行符,以便于直接觀看
string text = "先帝創業未半而中道崩殂,今天下三分,益州疲弊,此誠危急存亡之秋也。然侍衛之臣不懈于內,忠志之士忘身于外者,蓋追先帝之殊遇,欲報之于陛下也。誠宜開張圣聽,以光先帝遺德,恢士之氣,不宜妄自菲薄,引喻失義,以塞忠諫之路也。"
+ "宮中府中,俱為一體;陟罰臧否,不宜異同。若有作奸犯科及為忠善者,宜付有司論其刑賞,以昭陛下平明之理;不宜偏私,使內外異法也。"
+ "侍中、侍郎郭攸之、費祎、董允等,此皆良實,志慮忠純,是以先帝簡拔以遺陛下:愚以為宮中之事,事無大小,悉以咨之,然后施行,必能裨補闕漏,有所廣益。"
+ "將軍向寵,性行淑均,曉暢軍事,試用于昔日,先帝稱之曰“能”,是以眾議舉寵為督:愚以為營中之事,悉以咨之,必能使行陣和睦,優劣得所。"
+ "親賢臣,遠小人,此先漢所以興隆也;親小人,遠賢臣,此后漢所以傾頹也。先帝在時,每與臣論此事,未嘗不嘆息痛恨于桓、靈也。侍中、尚書、長史、參軍,此悉貞良死節之臣,愿陛下親之、信之,則漢室之隆,可計日而待也。"
+ "臣本布衣,躬耕于南陽,茍全性命于亂世,不求聞達于諸侯。先帝不以臣卑鄙,猥自枉屈,三顧臣于草廬之中,咨臣以當世之事,由是感激,遂許先帝以驅馳。后值傾覆,受任于敗軍之際,奉命于危難之間:爾來二十有一年矣。"
+ "先帝知臣謹慎,故臨崩寄臣以大事也。受命以來,夙夜憂嘆,恐托付不效,以傷先帝之明;故五月渡瀘,深入不毛。今南方已定,兵甲已足,當獎率三軍,北定中原,庶竭駑鈍,攘除奸兇,興復漢室,還于舊都。此臣所以報先帝而忠陛下之職分也。至于斟酌損益,進盡忠言,則攸之、祎、允之任也。"
+ "愿陛下托臣以討賊興復之效,不效,則治臣之罪,以告先帝之靈。若無興德之言,則責攸之、祎、允等之慢,以彰其咎;陛下亦宜自謀,以咨諏善道,察納雅言,深追先帝遺詔。臣不勝受恩感激。"
+ "今當遠離,臨表涕零,不知所言。";
Stopwatch sw = new Stopwatch();
sw.Start();
List<string> list = classicalChinese(20, text);
sw.Stop();
return string.Format("耗時:{0}ms", sw.Elapsed.TotalMilliseconds) + "<br/>" + string.Join("<br/>", list.ToArray());
效果:真的有看文言文的感覺呀。哈哈

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/203053.html
標籤:C#
上一篇:C#決議 json問題
