用字母打印反向三角形

时间:2013-09-14 23:15:02

标签: c# c pascals-triangle

我必须在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();
        }
    }

我得到的输出:

enter image description here

1 个答案:

答案 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();