【问题标题】:How do I assign cumbersome repetitive values to an array?如何将繁琐的重复值分配给数组?
【发布时间】:2015-07-16 05:46:28
【问题描述】:

我想创建一个 10 × 10 的数组,其中包含每个元素的 '.'。所以我写成:

int A[10][10]={ '.','.','.','.',

(等一下,我要写 100 个句号和 100 个逗号)

               '.','.','.'}

另一种方法是写'.', 10次,然后复制粘贴10次,但这仍然需要时间,我认为这不是最聪明的方法。

有没有更聪明的方法?我不想写这么长的句号。

【问题讨论】:

标签: c


【解决方案1】:

初始化这样一个数组的唯一可行方法是(不幸的是)使用大量宏:

#define ONE_DOT '.',
#define TWO_DOTS ONE_DOT ONE_DOT
#define FIVE_DOTS TWO_DOTS TWO_DOTS ONE_DOT
#define TEN_DOTS { FIVE_DOTS FIVE_DOTS },
#define TWENTY_DOTS TEN_DOTS TEN_DOTS
#define FIFTY_DOTS TWENTY_DOTS TWENTY_DOTS TEN_DOTS
#define ONE_HUNDRED_DOTS FIFTY_DOTS FIFTY_DOTS


int A[10][10] = { ONE_HUNDRED_DOTS };

【讨论】:

  • 它几乎看起来像歌词。
  • @Quentin 随意将代码用作您的下一个主流流行歌曲的歌词 :)
  • @Lundin 非常感谢!
【解决方案2】:

使用 for 循环语句将所有元素分配给 '.' ----

char A[10][10];
int i,j;
for(i=0;i<10;i++)
  for(j=0;j<10;j++)
     A[i][j]='.';

【讨论】:

  • 然而,这不是初始化。例如,如果 A 是 const,会怎样?
【解决方案3】:

循环是您现在想了解的内容。

简单的 for 循环将为您做到这一点。

char A[10][10];
int i,j;
for ( i=0;i <10;++i){
     for ( j=0;j <10;++j)
            A[i][j]='.';
 }

为了进一步证明谷歌在 c/c++ 中的循环

【讨论】:

  • 所以,对于介于 0 和 -1 之间的每个 i……这是一个好的开始。
  • @Quentin i 是 intiger 类型,0 到 -1 之间是什么意思??
  • 您的 for 循环从包含的 0 变为排除的 0,即 [0, 0)。他们永远不会被输入。
  • 那是 10 的错别字……老实说,我忽略了它……无论如何,我不介意对我的答案投反对票,但请帮助我改进!谢谢
  • 然而,这不是初始化。例如,如果 A 是 const,会怎样?
猜你喜欢
  • 2017-06-16
  • 2021-05-14
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多