fork download
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5. int i = 0, j = 0;
  6. int group = 0, left = 0, right = 0; // 그룹의 수가 층의 수가 된다.
  7. int width = 0, min_width = 0, max_width = 0, add_width = 0, num_of_add_width = 0;
  8.  
  9. fputs("몇 줄에 출력할지 숫자 입력 : ", stdout);
  10. scanf("%d", &group);
  11. putc('\n', stdout);
  12.  
  13. left = 2;
  14. min_width = 8 / group;
  15. num_of_add_width = 8 % group;
  16.  
  17. for (i = 0; i < group * 9; i++)
  18. {
  19. add_width = (num_of_add_width * 9 > i ? 1 : 0);
  20. width = min_width + add_width;
  21. right = i % 9 + 1;
  22. max_width = (num_of_add_width != 0) ? min_width + 1 : min_width;
  23. left = (i / 9)*max_width + 2;
  24.  
  25. if (i != 0 && i % 9 == 0)
  26. putc('\n', stdout);
  27.  
  28. for (j = 0; j < width; j++)
  29. {
  30. printf("%d*%d=%3d ", left + j, right, (left + j)*right);
  31. }
  32. putc('\n', stdout);
  33. }
  34.  
  35. return 0;
  36. }
Success #stdin #stdout 0s 2160KB
stdin
6
stdout
몇 줄에 출력할지 숫자 입력 : 
2*1=  2  3*1=  3  
2*2=  4  3*2=  6  
2*3=  6  3*3=  9  
2*4=  8  3*4= 12  
2*5= 10  3*5= 15  
2*6= 12  3*6= 18  
2*7= 14  3*7= 21  
2*8= 16  3*8= 24  
2*9= 18  3*9= 27  

4*1=  4  5*1=  5  
4*2=  8  5*2= 10  
4*3= 12  5*3= 15  
4*4= 16  5*4= 20  
4*5= 20  5*5= 25  
4*6= 24  5*6= 30  
4*7= 28  5*7= 35  
4*8= 32  5*8= 40  
4*9= 36  5*9= 45  

6*1=  6  
6*2= 12  
6*3= 18  
6*4= 24  
6*5= 30  
6*6= 36  
6*7= 42  
6*8= 48  
6*9= 54  

8*1=  8  
8*2= 16  
8*3= 24  
8*4= 32  
8*5= 40  
8*6= 48  
8*7= 56  
8*8= 64  
8*9= 72  

10*1= 10  
10*2= 20  
10*3= 30  
10*4= 40  
10*5= 50  
10*6= 60  
10*7= 70  
10*8= 80  
10*9= 90  

12*1= 12  
12*2= 24  
12*3= 36  
12*4= 48  
12*5= 60  
12*6= 72  
12*7= 84  
12*8= 96  
12*9=108