程序应该输入参数N并打印出N + 1行。 我必须输出这样的东西。
这是我必须在N = 5
时得到的输出A //增加0
AB //增加1
ACE //增加2
ADGJ //增加3
AEIMQ //增加4
该算法使用N作为每次添加之间要跳过的字符数。所以在N = 3时,它是A跳过3到D,跳过3到G,跳过3到J。
当程序用完大写字符时(即当N太大时),它应该以小写字符开头,如果它用完小写,那么它应该再次以大写字母开头,依此类推。 我是编程的新手。我真的不知道从哪里开始。我已经在循环中工作了一段时间,但仍然没有任何线索。
答案 0 :(得分:1)
试试这个:
public string GetOutPut(int increment)
{
string alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string output = string.Empty;
for(int i=0; i<=increment; i++)
{
int index = i*increment;
if(index>alphabets.Length)
index = index % alphabets.Length;
output+= alphabets[index];
}
return output;
}
答案 1 :(得分:1)
目前尚不清楚如何获得所需的行数 - 因为您说的是N+1
,但您的示例仅提供N
行。
以下内容可用于生成这些单独的每一行,并且可以通过在while循环中粘贴代码来修改Algo
方法以生成n+1
行,递减{{1} }和n
并在len
上使用AppendLine
:
StringBuilder
答案 2 :(得分:1)
以下是使用Char[]
,modulo
,StringBuilder
和for-loop
的另一种方法,其效率增加n
:
readonly static Char[] letters =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray();
static String appendChars(int n)
{
int length = n + 1;
StringBuilder sBuilder = new StringBuilder("A", length);
for (int i = n; sBuilder.Length < length; i += n)
{
Char nextChar = letters[i % letters.Length];
sBuilder.Append(nextChar);
}
return sBuilder.ToString();
}
测试您的样本数据:
int n = 5;
IEnumerable<String> allWords = Enumerable.Range(0, n).Select(i => appendChars(i));
Console.Write(string.Join(Environment.NewLine, allWords));
输出:
A
AB
ACE
ADGJ
AEIMQ
以下是演示:http://ideone.com/0sspY