我必须在C#中打印以下模式 -
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
我可以在C中打印模式但不能在C#中打印,因为字符输入在C#中不起作用。我尝试转换它,但我无法正确转换它并面对for循环的问题。请告诉我如何编写等效的C#代码。 提前谢谢。
C代码是:
#include<stdio.h>
#include<conio.h>
int main()
{
char ch,r,c;
int sp;
printf("\nEnter last character of triangle : ");
scanf("%c",&ch);
if(ch>='a' && ch<='z')
ch=ch-32;
printf("\n");
for(r='A'; 'A'<=ch; ch--,r++)
{
for(sp=r; sp>'A'; sp--)
printf(" ");
for(c='A'; c<=ch; c++)
printf("%c",c);
for(c=ch-1; c>='A'; c--)
printf("%c",c);
printf("\n");
}
getch();
return 0;
}
被修改
我的C#代码:
public class Pascal_Triangle
{
public void printPascal()
{
char ch, r, c;
int sp;
Console.WriteLine("\nEnter last character of triangle : ");
ch = Convert.ToChar(Console.ReadLine());
if (ch >= 'a' && ch <= 'z')
ch = Convert.ToChar(ch - 32);
for (r = 'A'; 'A' <= ch; ch--, r++)
{
for (sp = r; sp > 'A'; sp--)
Console.WriteLine(" ");
for (c = 'A'; c <= ch; c++)
Console.Write(c);
for (c = Convert.ToChar(ch - 1); c >= 'A'; c--)
Console.Write(c);
}
Console.ReadLine();
}
}
我得到的输出:
答案 0 :(得分:2)
C#支持通过字母表循环...
char c = 'A';
++c;
c会增长到'B'
但是,当然,你不能增加/减少字符串,只能增加一个字符。
你的代码太复杂了,试试这个。这很容易理解,只需一步一步。
Console.WriteLine("\nEnter last character of triangle : ");
char ch = Convert.ToChar(Console.ReadLine());
if (ch >= 'a' && ch <= 'z')
{
ch = Convert.ToChar(ch - 32);
}
int numberOfLines = ch - 'A' + 1;
var graphic = "";
for (var i = 0; i < numberOfLines; i++, ch--)
{
var line = "";
var tmp = "";
for (var j = 0; j < i; j++)
{
tmp += " ";
}
line += tmp;
for (var j = 'A'; j < ch; j++)
{
line += j.ToString();
}
for (var j = ch; j >= 'A'; j--)
{
line += j.ToString();
}
line += tmp;
graphic += line + "\n";
}
Console.WriteLine(graphic);
Console.ReadLine();