C語言一道題,想不通,幫忙修改一下(急)
15
#include<stdio.h>#include<stdlib.h>
int main(){ int array[10000] = {0}; int i=0,j,k,t,m; int count = 0; printf("Please input numbers:\n"); for(i=0;i<10000;i++) { scanf("%d",array+i); if(array[i] == -222) { count = i; goto label; } } label:for(j=0;j<i-1;j++)for(k=0;k<i-j-1;k++)if(array[k]>array[k+1]){ t=array[k]; array[k]=array[k+1]; array[k+1]=t; } for(i=0;i<count;i++) { if((i+1)%5==0) { for(m=-4;m<1;m++) { printf("%-6d,",array[i+m]); } } if((i+1)%6==0) { printf("%-6d\n",array[i]); } } system("pause"); return 0;}要求是排好序後,每六位一行,前五個後有逗號,第六位後就換行自己看程序感覺沒錯,可是輸出有錯,求解答,謝謝哈
最佳回答:
你這程序當i=4+5k(k為整數)時會執行
if((i+1)%5==0)
{
for(m=-4;m<1;m++)
{
printf("%-6d,",array[i+m]);
}
}
第一次執行會輸出array[0]~array[4],
但第二次執行時i=9,會輸出array[5]~array[9];
array[5]輸出了兩次
你可以這樣改
for(i=0;i<count;i++)
{
if((i+1)%6 != 0)
printf("%-6d,",array[i]);
else
printf("%-6d\n",array[i]);
}