본문 바로가기
알고리즘/자료구조(C)

배열

by 진진리 2023. 9. 19.
728x90
  • 배열 역순 정렬
#include <stdio.h>
#include <stdlib.h>

#define swap(type, x, y) do {type t = x; x = y; y = t;} while(0)

void ary_reverse(int a[], int n){
  int i;
  for(i=0;i<n/2;i++)
    swap(int, a[i], a[n-i-1]);
}

int main(void) {
  int i;
  int *x;
  int nx;

  printf("요소 개수: ");
  scanf("%d",&nx);
  x = calloc(nx, sizeof(int));

  printf("%d개의 정수를 입력하세요.\n",nx);
  for(i=0;i<nx;i++){
    printf("x[%d]: ",i);
    scanf("%d",&x[i]);
  }

  ary_reverse(x, nx);

  printf("배열의 요소를 역순 정렬\n");
  for(i=0;i<nx;i++)
    printf("x[%d]: %d\n",i ,x[i]);
  free(x);
  
  return 0;
}

 

 

  • 진수 변환
#include <stdio.h>
//x를 n진수로 배열d에 아랫자리부터 저장
int card_convr(unsigned x, int n, char d[]){
  char dchar[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  int digits = 0;
  if(x==0)
    d[digits++] = dchar[0];
  else
    while(x){
      d[digits++] = dchar[x%n];
      x /= n;
    }
  return digits;
}


int main(void) {
  int i;
  unsigned no;  //변환하는 정수
  int cd;  // 기수
  int dno;  //변환 후 자릿수
  char cno[512];  //변환한 값의 각 자리 숫자를 저장

  puts("10진수를 기수 변환합니다.");
  printf("변환하는 음이 아닌 정수: ");
  scanf("%u", &no);
  do{
    printf("어떤 진수로 변환할까요?(2-36) : ");    
    scanf("%d", &cd);
  } while (cd < 2 || cd > 36);
  
  dno = card_convr(no, cd, cno);
  
  printf("%d진수로는",cd);
  for(i=dno-1; i>=0; i--){
    printf("%c",cno[i]);
  }
  printf("입니다.\n");
    
  
  return 0;
}

 

 

  • 소수의 나열
#include <stdio.h>

int main(void) {
  int i, n;
  int prime[500]; //소수를 저장
  int ptr = 0; //소수 개수
  
  prime[ptr++] = 2;
  prime[ptr++] = 3;

  for(n=5;n<=1000;n+=2){
    int flag = 0;
    for(i=1; prime[i]*prime[i]<=n; i++){
      if(n%prime[i] == 0){
        flag = 1;
        break;
      }
    }
    if(!flag) prime[ptr++] = n;
  }

  for(i=0;i<ptr;i++) printf("%d\n",prime[i]);
  
  return 0;
}

 

'알고리즘 > 자료구조(C)' 카테고리의 다른 글

  (0) 2023.09.22
스택  (0) 2023.09.22
검색 알고리즘  (0) 2023.09.19
구조체  (0) 2023.09.19
기초  (0) 2023.09.19