본문 바로가기

전체 글211

[C언어] 범위가 지정된 난수생성 : a~b 범위의 난수를 생성하라 rand()%6의 경우 무작위의 숫자를 6으로 나눈 나머지를 의미한다. 즉 0,1,2,3,4,5의 수가 무작위로 생성된다. 이를 좀 더 일반화하면 rand()%a ===> 0부터 a-1 까지 범위의 난수를 받는다. rand()%a+3 ==> 3부터 a+2까지의 범위의 난수를 받는다. 이와 같은 과정을 통해 rand()%b+a ==> a부터 (b-1)+a의 범위의 난수를 받는다는 것을 알수있다. rand()%(b-a+1) ==> 0부터 b-a의 범위 rand()%(b-a+1)+a ==> a부터 b의 범위이다. 즉 정리하자면 N, T 까지의 범위의 난수를 생성하고싶다면 rand()%(T-N+1)+N 이다. 2020. 5. 11.
[C실습]소수와 다음 소수 출력하기 종료조건시까지 양의 정수 N을 반복해서 입력받고, 입력받은 정수중 소수와 그 소수의 다음소수를 출력하라. 입력예시 11 4 101 200 -10 출력예시 11 13 101 103 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #pragma warning (disable:4996) #include int main() { int N; int cnt = 0,cnt2=0; int flag = 1; scanf("%d", &N); while (flag) { if (N < 0) break; cnt = 0; for(int j=1;j 2020. 5. 10.
[C실습] 두번째로 빠른 문자 출력하기 배열을 사용하지않는 두번째로 작은 수가 핵심 키워드였는데, 반복문안에서 구현했어야했다. 시험도중에는 계속 가장 작은수를 찾고 그 수와 차잇값을 가지고 어떻게 해보려는 시도를 했었었는데 실패했다. 시험이 끝난 후, 틀린문제를 복습해보면서 공부한 알고리즘은 다음과 같다. 가장 작은 수를 smallest, 두번째로 작은수를 sec_smallest 라 하자. 그럼 두가지 경우로 나누어 생각할수있다. 1) 입력된 숫자 N이 있을때 그 수가 가장 작은 수인 smallest보다 작은 경우. 이렇게되면 N->smallest자리에 smallest->sec_smallest에 들어가게된다. if(Nsec_smallest의 자리에 가면 된다. else if(N 2020. 5. 10.