2013-11-14 3 views
-1

Я пытаюсь предотвратить печать трейлинг-вкладки в конце каждой строки вывода. Как я могу это сделать?удалите вкладку/пробел в программе c

Остальная часть кода работает, как мне это нужно, чтобы

#include <stdio.h> 
int main() 
{ 
    int i, j, k, y, z, x, c, b, a, C; 
    scanf("%d", &x); 

    for(i=0; i<x; i++){ 
     for(j=0; j<x; j++){ 
      int c = 0; 
      for(k=0; k<x; k++){ 

       y = (i+1)*(k+1); 
       z = (j+k); 
       c = (z*y)+c; 
      } 
      printf("%d\t", c); 
     } 
     printf("\n"); 
    } 
} 
+1

голосовал, чтобы закрыть: там нет ничего, что вы на самом деле показывает _tried_ ничего ... даже простой google search for _ "C output tab new line" _ дал бы вам свой ответ –

ответ

3

\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

+0

Мне нужна вкладка и новая строка. но в конце raw он печатает его, и там я хочу его удалить. удаление последнего – user1465662

+0

@ user1465662: Хорошо, теперь я получаю то, что вы просите. Только совет: _ «сырой» _ означает необработанный, сырой, сырой, незавершенный. В то время как «строка» означает последовательность, упорядоченный/структурированный формат. –