카테고리 없음
02 기본 자료구조 -1. 배열 (2)
홍콩판다
2019. 5. 2. 16:00
난수 사용해 배열의 요솟값 설정하기
<난수 생성 단계>
1. <stdlib.h> rand, srand 함수 <time.h> time함수
2. seed값을 변경할 srand함수 srand(seed값)
//seed값에 따라 rand함수는 일정한 순서로 난수를 발생시킨다 -> seed값을 계속해서 변경할 방법?
3. srand(time(NULL)) , rand()로 난수 발생 //time함수는 현재 시간을 반환
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int maxof(const int a[], int n)
{
int i;
int max=a[0];
for(i=1;i<n;i++)
{
if(a[i]>max)
max=a[i];
}
return max;
}
int main(void)
{
int i;
int *height;
int number;
printf("사람 수 : ");
scanf("%d",&number);
height=calloc(number,sizeof(int));
srand(time(NULL));
for(i=0;i<number;i++)
{
height[i]=100+rand()%90;
//rand()%90 값의 범위는 0~89
printf("height[%d] = %d\n",i,height[i]);
}
printf("최댓값은 %d 입니다.\n",maxof(height,number));
free(height);
return 0;
}
/*
사람 수 : 8
height[0] = 139
height[1] = 146
height[2] = 109
height[3] = 107
height[4] = 149
height[5] = 153
height[6] = 103
height[7] = 186
최댓값은 186 입니다.
--------------------------------
Process exited after 1.212 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/
역순 정렬
void sort(int a[], int n)
{
int i,j;
int tmp;
for(i=0;i<n/2;i++)
{
tmp=a[i];
a[i]=a[n-i-1];
a[n-i-1]=tmp;
}
}
함수 형식 매크로
: 변수의 두 값을 교환하는 과정을 함수 형식 매크로로 구현
#define swap(type,x,y) do{type t=x; x=y; y=t;} while(0)
//do while()로 구현하고 끝에 ;를 안 붙인 이유==?
void sort(int a[], int n)
{
int i,j;
for(i=0;i<n/2;i++)
{
swap(int,a[i],a[n-i-1]);
//이와 같이 함수처럼 잘 치환되도록 하기 위해(문장 끝에 ;를 붙여야 하므로)
}
}
n진수 변환
과정 : 그 수를 n으로 나누고 나머지를 구하고, 몫은 다시 n으로 나누는 것을 반복함
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]; //n으로 나눈 나머지를 저장
x/=n; //n으로 나누기
}
}
return digits;//자릿수를 반환(배열에 저장된 길이)
}
//dchar[0]~dchar[digits-1]에 저장됨
//dchar[digits-1]~dchar[0]순으로 나열하면 n진수