C 显示按5 5顺序排列的25个数字

C 显示按5 5顺序排列的25个数字,c,C,我在按5乘5的顺序排列25个数字时遇到问题。这就是我到目前为止所做的: int main() { int num,arr[100]; int i, y, swap; num = 25; printf("Enter %d integers \n",num); for(i = 0; i < 25; i++) { printf("\nElement %d: ", i + 1); scanf("%d", &arr

我在按5乘5的顺序排列25个数字时遇到问题。这就是我到目前为止所做的:

int main() {
    int num,arr[100];
    int i, y, swap;

    num = 25;

    printf("Enter %d integers \n",num);

    for(i = 0; i < 25; i++) {
        printf("\nElement %d: ", i + 1);
        scanf("%d", &arr[i]);
    }

    for(i = 0; i < ( num - 1 ); i++) {
        for(y = 0 ; y < num - i - 1; y++) {
            if(arr[y] > arr[y+1]) {
                swap     = arr[y];
                arr[y]   = arr[y+1];
                arr[y+1] = swap;
            }
        }
    }

    printf("Sorted list in ascending order:\n");
    for ( i = 0 ; i < num ; i++ )  
        printf("%d \t", arr[i]);

    getch();
}
只需一个修改:

printf("Sorted list in ascending order:\n");
for ( i = 0 ; i < num ; i++ )  
{
  printf("%d \t", arr[i]);
  if(i % 5 == 0) putchar('\n');
}
printf(“按升序排序的列表:\n”);
对于(i=0;i
只需一次修改:

printf("Sorted list in ascending order:\n");
for ( i = 0 ; i < num ; i++ )  
{
  printf("%d \t", arr[i]);
  if(i % 5 == 0) putchar('\n');
}
printf(“按升序排序的列表:\n”);
对于(i=0;i
像这样:

...
   printf("Sorted list in ascending order:\n");
   for ( i = 0 ; i < 5; i++ )  {
       printf("%c%d", (i % 5) ? '\t' : '\n', arr[i]);
   } 
   printf("\n");   
...

像这样:

...
   printf("Sorted list in ascending order:\n");
   for ( i = 0 ; i < 5; i++ )  {
       printf("%c%d", (i % 5) ? '\t' : '\n', arr[i]);
   } 
   printf("\n");   
...


避免在最后一个数字后打印额外的空格选项卡

要获得直观排列的值,请使用打印宽度

int print_width = 4;
int columns = 5;
for (i = 0 ; i < num ; i++ )  {
  printf("%*d", print_width, arr[i]);
  putchar(i%columns == columns-1 ? '\n' : '\t');
}
int-print\u-width=4;
int列=5;
对于(i=0;i
避免在最后一个数字后打印额外的空格选项卡

要获得直观排列的值,请使用打印宽度

int print_width = 4;
int columns = 5;
for (i = 0 ; i < num ; i++ )  {
  printf("%*d", print_width, arr[i]);
  putchar(i%columns == columns-1 ? '\n' : '\t');
}
int-print\u-width=4;
int列=5;
对于(i=0;i
如果(i%%5==0)putchar('\n');,您只需添加吗?它是如何工作的它是这样工作的-
每5个数字(如果我可以被5整除,余数为0),放置一个换行符以形成一行。
这将不起作用,并且说明了为什么使用大括号是一种好的做法……您只需添加if(i%%5==0)putchar('\n')?它是如何工作的它是这样工作的-
每5个数字(如果我可以被5整除,余数为0),放置一个换行符以形成一行。
这将不起作用,并说明了为什么使用大括号是一种好的做法……什么是不起作用的?你的产出是多少?你有没有调试过它,看看哪里出了问题?还有什么是不起作用的?你的产出是多少?你调试过它了吗?为什么用%c来表示(i%5)它在第一个
“x x x x”
之前打印一个
'\n'
,在最后一个
“x x x x”
之后缺少一个
'\n'
@COL
(i%5)
是更大表达式
(i%5)的一部分\t':'\n'
根据
(i%5)
@chux的“真实性”生成制表符或换行符,因此增加了
printf(“\n”)行。如果初始换行符不符合要求,则每5行就有更复杂的方案来完成换行符。是的,我错过了后面的
printf(“\n”)所以请对此进行投票。我确实认为没有更复杂的方法可以避免初始换行。为什么要使用%c(I%5)它在第一个
“x x x”
之前打印一个
,\n'
,在最后一个
“x x x x”
@COL
(I%5)
之后缺少一个
“\n'
是一个更大表达式的一部分
(I%5)\t':'\n'
根据
(i%5)
@chux的“真实性”生成制表符或换行符,因此增加了
printf(“\n”)行。如果初始换行符不符合要求,则每5行就有更复杂的方案来完成换行符。是的,我错过了后面的
printf(“\n”)所以请对此进行投票。我确实认为有,而不是更复杂的方法,来避免最初的换行。
int print_width = 4;
int columns = 5;
for (i = 0 ; i < num ; i++ )  {
  printf("%*d", print_width, arr[i]);
  putchar(i%columns == columns-1 ? '\n' : '\t');
}