본문 바로가기

Nefus

Nefus 과제(5)

<1465>

Q.다음과 같은 n*m 배열 구조를 출력해보자.


입력이 3 4인 경우 다음과 같이 출력한다.
9 10 11 12
5 6 7 8
1 2 3 4
입력이 4 5인 경우는 다음과 같이 출력한다.
16 17 18 19 20
11 12 13 14 15
6 7 8 9 10
1 2 3 4 5
입력이 n m인 경우의 2차원 배열을 출력해보자.

 

 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
int main()
{
    int a, n, m, arr[100][100];
    scanf("%d %d"&n, &m); //가로, 세로 입력
    a = n * m;
    for (int i = 0; i < n; i++
    {
        for (int j = 0; j < m; j++
        {
            arr[i][j] = a; //배열에 값 지정
            a--//a값 감소
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = m - 1; j >= 0; j--//j 거꾸로
        {
            printf("%d ", arr[i][j]); //배열 출력
        }
        printf("\n"); //줄 바꾸기
    }
}
 
cs

 

 

 

 

 

 

<1466>
Q. 다음과 같은 n*m 배열 구조를 출력해보자.


입력이 3 4인 경우 다음과 같이 출력한다.
12 9 6 3
11 8 5 2
10 7 4 1

입력이 4 5인 경우는 다음과 같이 출력한다.
20 16 12 8 4
19 15 11 7 3
18 14 10 6 2
17 13 9 5 1

입력이 n m인 경우의 2차원 배열을 출력해보자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<stdio.h>
int main()
{
    int a, n, m, arr[100][100];
    scanf_s("%d %d"&n, &m); //세로,가로 입력
    a = n * m;
    for (int i = 0; i < m; i++){
        for (int j = 0; j < n; j++)
        {
            arr[i][j] = a; //배열에 값 지정
            a--//a값 감소
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <m; j++)
        {
            printf("%d ", arr[j][i]); //반대로 배열 출력
        }
        printf("\n"); //줄 바꾸기
    }
}
 
cs

<1467>

Q.다음과 같은 n*m 배열 구조를 출력해보자.

입력이 3 4인 경우 다음과 같이 출력한다.
10 7 4 1
11 8 5 2
12 9 6 3
입력이 4 5인 경우는 다음과 같이 출력한다.
17 13 9 5 1
18 14 10 6 2
19 15 11 7 3
20 16 12 8 4

입력이 n m인 경우의 2차원 배열을 출력해보자.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main() {
    int n, m, k = 1, arr[100][100= {0,};
    scanf("%d"&n);//세로입력
    scanf("%d"&m);//가로입력
    for (int i = 0; i < m; ++i) {
        for (int j = 0; j < n; ++j) {//가로와 세로의 줄 개수를 반대로하여 배열에 입력
            arr[i][j] = k;
            k++;//k를 1씩 늘려가며 배열에 저장
        }
    }
    for (int i = 0; i <n; ++i) {//세로는 그대로
        for (int j = m-1; j >= 0--j) {//가로는 반대로 출력
            printf("%d ", arr[j][i]);
        }
        printf("\n");//개행
    }
}
cs
<1496>
Qn개의 데이터를 배열에 입력 받은 후,

두 개씩 묶어 비교한 후, 작은 값만 들어간 배열을 만들고 출력해보자.

6개의 데이터가 다음과 같이 입력되었을 때,
1 2 3 4 5 6

아래와 같이 출력하면 된다.

1 3 5

k번째 위치에 저장되어야 하는 값은 다음과 같이 표현할 수도 있다.
m[k] = min(m[2*k], m[2*k+1]); //k >= 0

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
int main(){
    int n, arr[100], k = 100;
    scanf("%d"&n); //입력받을 개수
    for (int i = 0; i < n; i++)
    {
        scanf("%d"&arr[i]); //배열에 입력
    }
    for (int j = 0; j < n; j++)
    {
        if (j % 2 == 1//2번째 수일때 실행
        {
            if (arr[j] > arr[j - 1]) //비교
                k = arr[j - 1]; 
            else
                k = arr[j]; //비교한 후 작은 수를 k에 입력
            printf("%d ", k); //k 출력
        }
    }
}
 
cs
<1497>
Q. n개의 데이터를 배열에 입력 받은 후,

두 개씩 묶어 비교한 후, 큰 값만 들어간 배열을 만들고 출력해보자.
6개의 데이터가 다음과 같이 입력되었을 때,
1 2 3 4 5 6

아래와 같이 출력하면 된다.

2 4 6

k번째 위치에 저장되어야 하는 값은 다음과 같이 표현할 수도 있다.
m[k] = max(m[2*k], m[2*k+1]); //k >= 0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
int main()
{
    int n, arr[100], a = 100;
    scanf("%d"&n); //입력받음
 
    for (int i = 0; i < n; i++){
        scanf("%d"&arr[i]); //배열 입력
    }
    for (int j = 0; j < n; j++){
        if (j % 2 == 1//2번째 수d 실행
        {
            if (arr[j] > arr[j - 1]) //비교
                a = arr[j]; 
            else
                a = arr[j - 1]; //큰 수를 a에 입력
            printf("%d ", a); //a 출력
        }
    }
}
cs

 

'Nefus' 카테고리의 다른 글

리눅스 숙제  (0) 2018.06.18
Nefus과제(7)-배열,포인터,구조체,반복문 이용  (0) 2018.06.06
Nefus-게임 프로젝트  (0) 2018.05.14
Nefus 과제(6)  (0) 2018.04.06
Nefus 과제(4)  (0) 2018.04.06