C嵌套for循环在每10次迭代后添加空行

C嵌套for循环在每10次迭代后添加空行,c,nested-loops,C,Nested Loops,我想从一个字符数组中打印长度为2的所有组合(如aa、ab、…、az、ba、bb等)。谁能解释一下为什么这个代码不正确: int main(void){ char a[]="abcdefghijk"; for (int i=0; i<11; i++){ for (int j=0; j<11 && a[j]!='\n'; j++){ char r[2] = {a[i], a[j]}; printf("I

我想从一个字符数组中打印长度为2的所有组合(如aa、ab、…、az、ba、bb等)。谁能解释一下为什么这个代码不正确:

int main(void){
   char a[]="abcdefghijk";
   for (int i=0; i<11; i++){
       for (int j=0; j<11 && a[j]!='\n'; j++){
           char r[2] = {a[i], a[j]};
           printf("I-th element: %c     ", a[i]);
           printf("J-th element: %c     ", a[j]);
           printf("Together: %s", r);
           printf("\n");
       }
   }
  return 0;
}
int main(无效){
字符a[]=“abcdefghijk”;

对于(inti=0;i,这里是发布代码的一个版本,它没有任何未定义的行为,因此输出与预期一致

#include <stdio.h> // printf()

int main(void)
{
   char a[]="abcdefghijk";

   for (int i=0; i<11; i++)
   {
       for (int j=0; j<11; j++)
       {
           printf("I-th element: %c     ", a[i]);
           printf("J-th element: %c     ", a[j]);
           printf("Together: %c%c", a[i], a[j]);
           printf("\n");
       }
   }
  return 0;
}
#包括//printf()
内部主(空)
{
字符a[]=“abcdefghijk”;

对于(int i=0;i
charr[2]={a[i],a[j]};
-->
charr[3]={a[i],a[j]};
注意:
a[j]!='\n'
在这种情况下是正确的。如注释所示或
printf(“一起:%.2s”,r);
避免使用幻数,例如
for(int j=0;jn,您实际上不需要
r
,您可以一起使用
printf[i] ,a[j]);