#c #for-loop
Вопрос:
Я пытаюсь построить следующую форму полудерева
x xx xxx xxxx xxxxx .... N xxxxx
но я не могу добраться до «*» в середине. Вместо этого у меня есть пробелы, созданные вторым циклом.
Код, который я использовал:
#include lt;stdio.hgt; main(){ int N; int i,j; printf("Enter the number: "); scanf("%d",amp;N); for (i=1;ilt;=N;i ){ printf("x"); for(j=1; jlt;=(N-i); j ){ printf(" "); } printf("x"); printf("n"); } }
Не могли бы вы, пожалуйста, посоветовать, как я собираюсь заполнить *ы?
Заранее спасибо.
редактировать на основе комментариев
Если я изменю printf(" ");
с printf("x");
, я получу перевернутое полудерево, как показано ниже для N=6
xxxxxx xxxxx xxxx xxx xx x
Комментарии:
1. Ты имеешь в виду
printf(" ");
? Почему бы просто не изменить это наprintf("x");
?2. Почему вы вообще печатаете пробелы? Для вашего шаблона не требуется никаких пробелов. Также вы печатаете не менее 2*
'x'
в строке. Один до и один после внутреннего цикла. Это не сработает для первой строки.3. но я не могу добраться до » » в середине. Вместо этого у меня есть пробелы, созданные вторым циклом.* Это потому, что второй цикл печатает пробелы (пробелы). Если вы не напечатаете пробелы, вы не получите пробелов. 🙂
4.
printf("x")
Так и должно быть на самом делеprintf('*')
?5. Эй, я провел несколько тестов и, как вы упомянули, допустил ошибку в отношении «*» и «x».
Ответ №1:
Измените условие во втором for
цикле с jlt;=(N-i)
на j lt; i
. Смотреть ниже.
полдерева.c
#include lt;stdio.hgt; int main(int argc, char * argv[]){ int N; int i, j; N = atoi(argv[1]); for(i=0; i lt; N; i ) { printf("*"); for(j=0; j lt; i; j ) printf("*"); printf("n"); } return 0; }
Скомпилируйте и запустите описанное выше, используя приведенные ниже команды
gcc halfTree.c -o halfTree ./halfTree 4