как напечатать результат цикла?

Как напечатать результаты из цикла?

Например, если у меня есть что-то простое:

k[0]=2;
k[1]=3;
k[2]=4;

for (i = 0 ; i <= 2 ; i++)
{
    x[i]=5*k[i];
}

Как распечатать результаты для x[0],x[1],x[2] без повторения массива в printf? Как в

printf("%d %d %d\n",x[0],x[1],x[2]);

Я действительно не хочу делать printf выше, потому что для моей проблемы у меня есть массив из 100 значений, я не могу повторять x[0],x[1]... сто раз.

Надеюсь, кто-то может помочь спасибо большое!


person esther    schedule 26.08.2010    source источник
comment
Используйте цикл, конечно :)   -  person Sebastian Mach    schedule 12.09.2011


Ответы (7)


Может быть, это:

for (j = 0; j < 100; j++) {
    printf ("%d ",x[j]);
}
printf ("\n");
person Community    schedule 26.08.2010

Вы можете поместить printf в цикл. Если вы не поместите «\n» в printf, следующий printf будет в той же строке. Затем, когда вы закончите цикл, напечатайте только новую строку.

Для массива нет спецификатора типа printf, вам нужно перебирать элементы массива и печатать их один за другим.

person Lou Franco    schedule 26.08.2010

Почему вы не можете распечатать их по мере прохождения цикла?

for (i = 0 ; i <= 2 ; i++)
{
    x[i]=5*k[i];
    printf("%d ", x[i]);
}
printf("\n");

Помимо этого, у вас может быть еще один цикл, который объединяет результаты в одну строку для вывода.

person locka    schedule 26.08.2010
comment
извините, мой плохой, на самом деле моя настоящая проблема вращается вокруг массива значений, которые определяются указателями ›‹, которые, как мне кажется, усложняют ситуацию.. - person esther; 26.08.2010
comment
Вы можете распечатать значения в указателях, поставив перед значением префикс *. т. е. int а = 5; int *b = printf(%d, *b); напечатает 5. Если ваш массив состоял из указателей, то аналогично (int *data[10]; data[3] = malloc(sizeof(int)); *data[3] = 123; printf(%d, *data[ 3]); - person locka; 26.08.2010
comment
хейя, лока, спасибо... я чувствую, что решение приближается... эмм, не могли бы вы объяснить немного больше о части malloc? Благодарность! - person esther; 27.08.2010
comment
malloc() означает выделение памяти. Поскольку ваш вопрос был помечен как C, я сказал malloc(), однако, если ваше приложение на C++, вы также можете выразить то же самое, что и int *data[10]; данные [3] = новый интервал (1234); printf(%d, *данные[3]);. Новый int(1234) выделяет целое число и присваивает ему 1234 через конструктор по умолчанию. Если вы мало что знаете о распределении памяти, стоит прочитать об этом. Имейте в виду, что все, что вы выделяете, должно быть освобождено. Для malloc() это означает вызов соответствующего free() для нового оператора, вызывающего соответствующий оператор удаления. - person locka; 27.08.2010
comment
Еще одна мысль: если вы используете C++, вы можете использовать std::cout ‹‹ *data[3] в качестве альтернативного способа вывода int. Преимущество заключается в том, что если вы измените тип своего массива (например, на длинный), вам не нужно изменять вывод, потому что потоки С++ имеют перегрузки для поддержки каждого примитива. - person locka; 27.08.2010

Вы должны поместить оператор printf в цикл:

k[0]=2; 
k[1]=3; 
k[2]=4; 

for (i = 0 ; i <= 2 ; i++) 
{ 
    x[i]=5*k[i]; 
    printf("%d ", x[i]);
} 

printf("\n");
person Grimmy    schedule 26.08.2010

Вы сохранили 100 чисел в массиве и хотите отобразить то же самое.

Проще говоря, мы можем сказать, что массив — это набор элементов похожих типов.

Для этого вы должны сначала объявить размер массива, предположим, вы объявили массив как x[100], тогда он будет хранить 100 чисел с номером индекса от 0 до 99, или вы можете сделать то же самое, объявив каждую переменную как x[ 0]=20,x[1]=30 .......x[99]=98, но это займет больше времени. Так что лучше, если вы сделаете следующее.

Принять значения

int x[100];    
 int index;
 for(index=0;index<100;index++)
 {
        printf("\nEnter %d number:",index+1);
        scanf("%d",x[i]);
  }

Отображать

for(index=0;index<100;index++)

{

printf("\nArray element at index %d is %d",index,x[i];

}

Это поможет вам.

person Vibhakar SInha    schedule 26.08.2010

Вы можете думать об этом следующим образом:

k[0]=2;
k[1]=3;
k[2]=4;

for (i = 0 ; i <= 2 ; i++)
{
    x[i]=5*k[i];
    printf("%d",x[i]);
}
printf("\n");
person Kangkan    schedule 26.08.2010
comment
Результат не будет одинаковым, все числа находятся в разных строках. - person Grimmy; 26.08.2010

#include <stdio.h>
#define FOR_PRINT(index, array, size, format) \
    { \
        for(index = 0; index < size; ++index){ \
            printf(format, array[index]); \
        } \
        printf("\n");
    } \

int main(){
    int array [] = {1,2,3};
    int i;
    FOR_PRINT(i, array, 3, "%d ");
    return (0);
}

Вы всегда можете использовать для этого MACRO.

Мой предыдущий пример — не самый безопасный и не самый читаемый пример макроса, но он может стать для вас отправной точкой.

person Andrei Ciobanu    schedule 26.08.2010
comment
Хм, а в чем причина делать это с помощью макроса? - person ; 26.08.2010
comment
-1: Всегда избегайте макросов, когда это возможно. Этот случай абсолютно не требует макроса. - person Puppy; 26.08.2010