【问题标题】:how to printf a loop result?如何打印循环结果?
【发布时间】:2010-08-26 14:46:19
【问题描述】:

如何从循环中打印结果?

例如,如果我有这样简单的东西:

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]... 一百次。

希望有人能帮忙,谢谢!

【问题讨论】:

  • 当然要使用循环:)

标签: c for-loop printf


【解决方案1】:

也许是这样的:

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

【讨论】:

    【解决方案2】:

    您可以将 printf 放入循环中。如果您没有在 printf 中添加“\n”,则下一个 printf 将在同一行。然后当你完成循环时, printf 只是一个换行符。

    数组没有printf类型说明符,你必须循环遍历数组元素并一个一个打印出来。

    【讨论】:

      【解决方案3】:

      为什么不能在循环中打印出来?

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

      除此之外,您还可以有另一个循环,在该循环下将结果组合成一个字符串以供输出。

      【讨论】:

      • 对不起我的错,实际上我真正的问题围绕着一个由指针定义的值数组>
      • 您可以通过在值前面加上 * 来打印指针中的值。即“int a = 5; int *b = &a; printf("%d", *b);"将打印 5. 如果您的数组是指针,那么类似 ("int *data[10]; data[3] = malloc(sizeof(int)); *data[3] = 123; printf("%d", *数据[3]);"
      • heya locka,谢谢...我感觉有一个解决方案即将到来..urm,你能解释一下 malloc 部分吗?谢谢!
      • malloc() 代表内存分配。由于您的问题被标记为 C,我说 malloc() 但是如果您的应用程序是 C++,您也可以将上面的内容表达为 "int *data[10]; data[3] = new int(1234); printf("%d ", *数据[3]);"。 “new int(1234)”分配一个整数并通过其默认构造函数为其分配 1234。如果您对内存分配不太了解,那么值得一读。请注意,您分配的任何内容都必须被释放。对于 malloc() 这意味着调用相应的 free() for 一个 new 操作符调用相应的 delete 操作符。
      • 再想一想,如果你使用 C++,你可以使用 "std::cout
      【解决方案4】:

      您应该将 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");
      

      【讨论】:

        【解决方案5】:

        您已经在一个数组中存储了 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];
        
        }
        

        这会对你有所帮助。

        【讨论】:

          【解决方案6】:

          你可以这样想:

          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");
          

          【讨论】:

          • 结果不一样,所有数字都在不同的行
          【解决方案7】:
          #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。

          我之前的示例不是最安全或最易读的宏示例,但可以作为您的起点。

          【讨论】:

          • 嗯,用宏做这个的原因是什么?
          • -1:尽可能避免使用宏。这种情况绝对不需要宏。
          猜你喜欢
          • 2022-10-06
          • 2018-08-12
          • 1970-01-01
          • 2021-10-12
          • 2010-12-21
          • 2017-05-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多