\t
и \n
являются вкладки и побег новой строки последовательности соответственно, таким образом изменить
printf("%d\t", c);
в
printf("%d", c);
избавиться от вкладки и удалить
printf("\n");
все вместе, чтобы освободить новые линии ... легко
Как решить: почему вы объявляете второй int c
? Ваш код начинается с объявляя кучу Интс, некоторые из которых вы не используете:
int i, j, k, y, z, x, c, b, a, C;
//last 3 aren't used
//c declared here, though
//I'd write:
int i, j, k, y, z, x, c;
А дальше вниз:
//inside second loop:
int c = 0;
//would be better if wou wrote:
c = 0;
Последний из нот: Вы пропускаете return
заявление, но ваша main
подпись функции указывает (правильно), основная функция должна возвращать int, а не пустоту.
Добавить return 0;
в конце
Если единственное, что вы хотите, чтобы избежать печати является последней \ п (и \ т), вы можете изменить:
printf("\n");
с
if (i < x-1) printf("\n");
Это будет печатать \ n каждый раз, за исключением Последнее Время, в течение которого выполняется цикл. Просто потому, что условие для цикла должно быть i<x
, а условие для печати новой строки - i<x-1
.
Насколько ваши вкладки обеспокоены, замена:
printf("%d\t", c);
с:
if (j < x - 1) printf("%d\t", c);
else printf("%d", c);
делает только то, что вам нужно.
Тем не менее, поскольку x
является постоянной величиной, вероятно, было бы лучше назначить x-1
одному из незанятых, пока заявленных Интсов:
scanf("%d", &x);
a = x -1;
Тогда, так как вы проверяете, когда вы напечатав последний номер строки с этим кодом:
if (j < a) printf("%d\t", c);//replaced x - 1 with a here
else printf("%d", c);
можно смело предположить, что положение else
применимо только к последнему номеру каждой строки, так почему бы не добавить символ новой строки там?
if (j < a) printf("%d\t", c);//replaced x - 1 with a here
else printf("%d\n", c);
В целом, это оставляет вас со следующим кодом:
#include <stdio.h>
int main()
{
int i, j, k, y, z, x, c, a;
scanf("%d", &x);
a = x - 1;
i = 0;
for(i=0; i<x; i++){
for(j=0; j<x; j++){
c = 0;
for(k=0; k<x; k++){
y = (i+1)*(k+1);
z = (j+k);
c = (z*y)+c;
}
if (j < a) printf("%d\t", c);
else printf("%d\n", c);
}
}
return 0;//ADD A RETURN STATEMENT!!
}
Это еще добавляет новую строку после последней строки вывода. Для того, чтобы удалить это тоже просто написать:
if (j < a) printf("%d\t", c);
else if (i < a) printf("%d\n", c);//check if we're in the last i-loop
else printf("%d", c);//if so, don't print new line
Работа сделано ... Я пробовал этот код and you can see the output on this codepad
голосовал, чтобы закрыть: там нет ничего, что вы на самом деле показывает _tried_ ничего ... даже простой google search for _ "C output tab new line" _ дал бы вам свой ответ –