Layer7 C Programming 2차시

Kioreo·2023년 4월 8일
0

Layer7

목록 보기
3/5

문제 1번

#include <stdio.h>
#define MAX 101

int main() {
    int n, j;
    int arr[MAX][MAX];
    scanf("%d", &n);

    int k = n*n-1;

    for(int dia = 0; dia < n*2-1; dia++){
        for(int i=n-1;i >= 0; i--){
            j = -dia+i+1;
            if(-j >=0 && -j < n){
                arr[i][j+(n-1)] = k--;
            }
        }
    }

    for(int i = 0; i < n; i++){
        for(int j =0; j < n; j++){
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

문제 2번

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int n;

typedef struct PEOPLE {
  char name[36];
  char res_num[15];
  char phone[15];
} people;

void input_info(int i, people *arr) {
  int idx = i + 1;
  printf("사람%d의 이름 입력 : ", idx);
  scanf("%s", arr->name);
  printf("사람%d의 전화번호 입력 : ", idx);
  scanf("%s", arr->phone);
  printf("사람%d의 주민등록 번호 : ", idx);
  scanf("%s", arr->res_num);
}

void menu() {
  printf("\n이름으로 찾으려면 1, 전화번호로 찾으려면 2, 주민등록 번호로 찾으려면 "
         "3을 입력해주세요 >>> ");
}

void print_peo(int i, people p[]) {
  int idx = i+1;
  printf("\n사람%d의 정보:\n", idx);
  printf("사람%d의 이름 : %s\n", idx, p[i].name);
  printf("사람%d의 전화번호 : %s\n", idx, p[i].phone);
  printf("사람%d의 주민등록 번호 : %s\n", idx, p[i].res_num);
}

int find_name(people p[]) {
  char s[36], i;
  printf("이름 입력 >>> ");
  scanf("%s", s);
  for(i =0; i < n; i++){
    if(!(strcmp(p[i].name, s))){
      break;
    }
  }
  if(!(i < n)){
    exit(-1);
  }
  print_peo(i, p);
}

void find_phone(people p[]) {
 char s[15], i;
  printf("전화번호 입력 >>> ");
  scanf("%s", s);
  for(i =0; i < n; i++){
    if(!(strcmp(p[i].phone, s))){
      break;
    }
  }
  if(!(i < n)){
    exit(-1);
  }
  print_peo(i, p);
}

void find_res_num(people p[]) {
 char s[15], i;
  printf("주민번호 입력 >>> ");
  scanf("%s", s);
  for(i =0; i < n; i++){
    if(!(strcmp(p[i].res_num, s))){
      break;
    }
  }
  if(!(i < n)){
    exit(-1);
  }
  print_peo(i, p);
}

int main(void) {
  int c, idx;
  
  scanf("%d", &n);

  people arr[n + 1];

  for (int i = 0; i < n; i++) {
    input_info(i, &arr[i]);
  }
  
  menu();
  scanf("%d", &c);
  if(c == 1){
    find_name(arr);
  }else if(c == 2){
    find_phone(arr);
  }else if(c == 3){
    find_res_num(arr);
  }else{
    exit(-1);
  }
  
  return 0;
}

문제 3번

#include <stdio.h>

typedef struct COMP{
  struct COMP *front;
  struct COMP *back;
  int data;
}comp;

comp arr[101];
int n, f_i, b_n;

void insert(int i, int d){
  arr[b_n].back = &arr[i];
  arr[i].data = d;
  arr[i].front = &arr[b_n];
  b_n = i;
}

void print_n() {
  comp *next;

  for(int i = 0; i < n; i++){
    if(i == 0){
      printf("%d ", arr[f_i].data);
      next = arr[f_i].back;
      continue;
    }
    if(i == n-1){
        printf("%d ", next->data);
        break;
    }
    
    printf("%d ", next->data);
    next = next->back;
  }
}

int main() {
  int idx, data;
  scanf("%d", &n);
  
  for(int i = 0; i < n; i++){
    scanf("%d %d", &idx, &data);
    if(i == 0){
      f_i = idx;
      b_n = idx;
      arr[idx].data = data;
      continue;
    }
    insert(idx, data);  
  }

  print_n();
  return 0;
}
profile
KITRI BoB 12th, Layer7 23rd

0개의 댓글