所以我有这段代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i,k,m,l;
int add=0;
for(i=1;i<11;i++)
{
printf("%-2d: ",i);
for(k=i;k>0;k--)
{
m=i/k;
if(i%k==0)
{
m=i/k;
add=add+m;
printf("%d ",m);
}
else
printf(" ");
}
for(l=(10-i);l>0;l--)
printf(" ");
printf("| %d \n",add);
add=0;
}
}
现在代码发现剩余部分都很好,但是我遇到了分区之间的间隔问题(几乎是else语句)。
这是我的程序输出的内容:
1: 1 | 1
2: 1 2 | 3
3: 1 3 | 4
4: 1 2 4 | 7
5: 1 5 | 6
6: 1 2 3 6 | 12
7: 1 7 | 8
8: 1 2 4 8 | 15
9: 1 3 9 | 13
10: 1 2 5 10 | 18
这就是我需要的样子:
1: 1 | 1
2: 1 2 | 3
3: 1 3 | 4
4: 1 2 4 | 7
5: 1 5 | 6
6: 1 2 3 6 | 12
7: 1 7 | 8
8: 1 2 4 8 | 15
9: 1 3 9 | 13
10: 1 2 5 10 | 18
所以,我需要所有相同的数字来排队。
答案 0 :(得分:0)
您只需修改一些行,请参阅以下评论:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i,k,m,l;
int add=0;
for(i=1;i<11;i++)
{
printf("%2d: ",i); // align to rigth
for(k=1;k<=i;k++) // Invert loop order
{
m=i/k;
if(i%k==0)
{
// m=i/k; Remove it. Duplicated!
add=add+m;
printf("%2d ",k); // use 2 digits and print k
}
else
printf(" "); // three spaces
}
for(l=(10-i);l>0;l--)
printf(" "); // three spaces
printf("| %2d \n",add); // use 2 digits for print
add=0;
}
}