宣称' a'在char类型变量中但是' b'作为输出,出了什么问题?

时间:2018-05-17 14:56:31

标签: c casting char

所以,目标是把" n" " n"中的字母线,n是迭代大小。但是会出现意外的输出。

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

main() {
    int tam;
    char letra = 'A';

    printf("Tree size?\n");
    scanf("%d", &tam);

    for (int i = 0; i < tam +1; i++){

        for (int j = 0; j < i+1; j++)
        {           
            if (j < i)
                printf("%c", letra);

        }
        letra = (char)((int)letra + 1);
        printf("\n");
    }
}

预期产出:

 A
 BB
 CCC
 .
 .
 .

我得到了什么:

B
CC
DDD
.
.
.

我试图放另一个printf,如果在输出之外是&#39; a&#39;正如预期的那样,但是在它内部纠正字母问题并在树大小上再添加一行。 示例 - (树大小:3 A BB CCC DDDD) 怎么了?

2 个答案:

答案 0 :(得分:1)

您不是使用

打印第一个字母
if (j < i)
你说: 0 < 0,您的树大小也不正确,因为第一个循环最多为i + 1, 这是正确的代码:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

main() {
    int tam;
    char letra = 'A';

    printf("Tree size?\n");
    scanf("%d", &tam);

    for (int i = 0; i < tam; i++, ++letra){
        for (int j = 0; j < i+1; j++)
        {           
            printf("%c\n", letra);
        }
    }
}

答案 1 :(得分:0)

if (j < i)应为if (j < i + 1)

并且第一个for循环应为for (int i = 0; i < tam; i++)

请参阅此处查看工作示例:https://onlinegdb.com/B15_KfsRG