Объявленный «a» в переменной типа char, но «b» выводится как выход, что не так? - PullRequest
0 голосов
/ 17 мая 2018

Итак, цель состоит в том, чтобы поместить «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, если снаружирезультат - «a», как и ожидалось, но внутри for он исправляет проблему с буквой и добавляет еще одну строку к размеру дерева.Пример - (размер дерева: 3 A BB CCC DDDD) Что не так?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вы не печатаете первую букву, используя

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);
        }
    }
}
0 голосов
/ 17 мая 2018

if (j < i) должно быть if (j < i + 1)

, а первый цикл for должен быть for (int i = 0; i < tam; i++)

Рабочий пример приведен здесь: https://onlinegdb.com/B15_KfsRG

...