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;
}