2

我正在尝试在 C 中创建一个金字塔,我需要得到下一个模式:

    A
   ABA
  ABCBA
 ABCDCDA
ABCDEDCBA

我需要使用嵌套的 for 循环,但递减对我来说不能正常工作,这是我的代码:

int main(void)

{

    int i, j, k, g;
    char userLatter;
    printf("please enter an uppercase letter:\n");
    scanf("%c", &userLatter);
    int asci = userLatter;

    for (i = 0; i < 5; i++)
    {

        for (j = 4; j > i; j--)
        {
            printf(" ");
        }

        asci = userLatter;
        for (k = 0; k <= i ; k++)
        {
         printf("%c", asci++);
        }


        for (g = 1; g <= i; g++)
        {
            printf("%c", --asci);
        }

        printf("\n"); 
    }

}

这是输入“a”

我得到的输出是:

    a
   abb
  abccb
 abcddcb
abcdeedcb

你能告诉我我做错了什么吗?

tnx

4

2 回答 2

7

添加一个:

--asci;

两个for循环之间。

在第一个循环中,asci++执行后缀递增:表达式被计算为asci然后对象被递减。

于 2013-01-23T23:14:37.670 回答
2

考虑到

printf("%c", --asci);//decreases the value and then prints

不同于

printf("%c", asci--);//prints and then decreases the value
于 2013-01-23T23:15:16.677 回答