-
Layer7_20160323수업_다차원 배열 과제예제/Layer7_20160323 2016. 3. 27. 00:28반응형
<1> n이 입력되면 크기가 n인 다음과 같은 2차원 배열을 출력.
1234567891011121314151617181920212223#include <stdio.h>int main() {int arr[50][50];int i, j;int input;scanf("%d", &input);for (i = 0; i<input; ++i) {for (j = 0; j<input; ++j) {arr[i][j] = j + (i*input) + 1;}}for (i = 0; i<input; ++i) {for (j = 0; j<input; ++j) {printf("%d", arr[i][j]);}printf("\n");}return 0;}cs 입력 :
3
출력
1 2 3
4 5 6
7 8 9
<2> n이 입력되면 크기가 n인 다음과 같은 2차원 배열을 출력.
1234567891011121314151617181920212223#include <stdio.h>int main() {int arr[50][50];int i, j;int input;scanf("%d", &input);for (i = 0; i<input; ++i) {for (j = 0; j<input; ++j) {arr[i][j] = i + (j*input) + 1;}}for (i = 0; i<input; ++i) {for (j = 0; j<input; ++j) {printf("%d", arr[i][j]);}printf("\n");}return 0;}cs 입력 :
3
출력 :
1 4 7
2 5 8
3 6 9
<3> 지그재그로 출력.
12345678910111213141516171819202122232425262728#include <stdio.h>int main(){int arr[50][50];int i, j;int input;scanf("%d", &input);for (i = 0; i < input; ++i){for (j = 0; j < input; ++j){if (i % 2 == 1){ //둘째줄, 넷째줄, 여섯째줄, ...arr[i][j] = (i + 1)*input - j;}else{arr[i][j] = j + 1 + i*input;}}}for (i = 0; i < input; ++i){for (j = 0; j < input; ++j){printf("%5d", arr[i][j]);}printf("\n");}return 0;}cs 입력 : 5
출력 :
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
<4> 수직으로 지그재그 출력.
12345678910111213141516171819202122232425262728#include <stdio.h>int main() {int arr[50][50];int i, j;int input;scanf("%d", &input);for (i = 0; i < input; ++i) {for (j = 0; j < input; ++j) {if (j % 2 == 1) { //(세로로)둘째줄, 넷째줄, 여섯째줄, ...arr[i][j] = (j + 1)*input - i; //양심고백 : 바로 위 예제에서 i, j위치를 바꿨습니다.}else {arr[i][j] = i + 1 + j*input; //양심고백 : 요것두요 ㅎ}}}for (i = 0; i < input; ++i) {for (j = 0; j < input; ++j) {printf("%5d", arr[i][j]);}printf("\n");}return 0;}cs 입력 :
3
출력 :
1 6 7
2 5 8
3 4 9
<5> 길이가 n인 숫자가 입력되고, 천단위마다 콤마를 넣어서 출력.
1234567891011121314151617181920212223242526272829303132/*길이를 입력받은 것으로 보아, 그 길이를 이용하여 ','를 찍는것 같다.*/#include <stdio.h>int main(){char arr[270];int length;int i, j;int count=3, comma;scanf("%d", &length);scanf("%s", arr);comma = (length-1) / 3; //만약 길이가 3으로 나누어 떨어지는 수라면, comma는 3개가 아니라 2개가 찍혀야 한다.arr[length + comma + 1] = '\0';for (i = length-1; i >=0; --i){if (comma == 0) //찍어야 하는 ',' 개수가 0일때 종료break;arr[i + comma] = arr[i]; //남은 ',' 개수대로 뒤로 미루기--count;if(count==0){arr[i + comma - 1] = ',';--comma;count = 3;}}printf("%s", arr);return 0;}cs 입력 :
8
12421421
출력 :
12,421,421
<6> n이 입력되면 크기가 n인 다음과 같은 2차원 배열을 출력.(달팽이 모양으로 숫자 나열)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include <stdio.h>int main(){int arr[50][50] = { {0,},{0,} };int input;int i, j, k;int number=1;//현재 위치에 넣을 수int state; //동=state%4==0, 남=state%4==1, 서=state%4==2, 북=state%4==3scanf("%d", &input);for (state = 0; state < (input*2)-1; ++state){ //동서남북의 변환이 몇번 일어나는지if (state % 4 == 0) { //동for (k = state / 4; k <= input - state / 4 - 1; ++k) {arr[state / 4][k] = number;++number;}}if (state % 4 == 1) { //남for (k = state / 4 + 1; k <= input - state / 4 - 1; ++k) { //겹치면 안되니 초기식에 +1arr[k][input - state / 4 - 1] = number;++number;}}if (state % 4 == 2) { //서for (k = state / 4; k <input - state / 4 - 1; ++k) { //겹치면 안되니 초기식에 -1arr[input - state / 4 - 1 ][input-k-1-1] = number;++number;}}if (state % 4 == 3) { //북for (k = state / 4 + 1; k <input - state / 4 - 1; ++k) {arr[input-k-1][state / 4] = number;++number;}}}for (i = 0; i < input; ++i){for (j = 0; j < input; ++j){printf("%5d", arr[i][j]);}printf("\n");}return 0;}cs 입력 :
4
출력 :
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
반응형'예제 > Layer7_20160323' 카테고리의 다른 글
(추가) 달팽이 배열 (2) 2017.03.28 Layer7_20160323수업_2의2000제곱(2의 2000승) (0) 2016.03.24 Layer7_20160323수업 (0) 2016.03.24