본문 바로가기

Embeded C/C언어 예제

C언어 버블정렬법 버블 정렬법(bubble sort)은 제 1단계에서 처음 것을 인접한 그 다음 번 위치의 데이터와 비교하여 선택 정렬 때와 같은 요령으로 맞바꾸기한 후 그 중에서 뒤의 데이터와 다시 인접한 그 다음 번 데이터를 끝(n번째)까지 비교하여 가장 뒤에 위치할 데이터를 결정하는 방법입니다. 쉽게말해서 5 4 3 2 1 4 5 3 2 1 4 3 5 2 1 4 3 2 5 1 4 3 2 1 5 인접해 있는 두수를 비교해가는 정렬법을 뜻합니다 앞서 했던 선택정렬에서 조금만 수정하면됩니다 오히려 선택정렬이 더 어렵습니다 버블 정렬의 경우 비교되는 2데이터를 차례대로 이중for문을 이용하여 변수 ij를 선언하여 돌려주기만 하면 됩니다 시작 -> 데이터 입력 -> ( 가로for -> 비교 -> 세로for ) -> 출력 .생.. 더보기
C언어 선택정렬법 데이터가 있고 그데이터를 처리하는 방법은 많이 있습니다 데이터를 처리하는 방법중 정렬을 하는 방법에 대하여 다루어 보겠습니다 데이터의 정렬이란 특정한 규칙에의해 데이터를 재배열하는것을 뜻하는데 숫자의 대소를 가지고 내림 혹은 오름차순으로 정리하는것이 기본입니다 그리고 정렬에도 여러가지 종류가 있는데 선택정렬법을 사용한 정렬을 해보도록 하겠습니다 .선택정렬법 :선택 정렬법(selection sort)은 가장 앞에 있는 데이터 A1부터 시작하여 모든 데이터 A2~An를 차례대로 비교하면서 그 위치에 놓여질 데이터를 결정한 후, 그 다음 데이터 A2로 이동하여 같은 방법을 적용합니다. 처음 데이터 A1를 그 다음 번 째 데이터와 비교하여 오름차순일 때는 A1이 더 크면 맞바꾸고 내림차순일 때는 A1이 더 작으.. 더보기
C언어 달팽이배열(2차원동적배열 적용) 달팽이 배열의 업그레이드 버전인 2차원동적배열 달팽이배열을 작성하여 보겠습니다 기존의 달팽이 배열에서는 여러번 실행시키는 반복문으로 만들게되면 에러가 발생하게됩니다 계속해서 배열이 중첩되어 선언되고 선언된 배열만큼 넘어가버리면 넣을수가 없게 됩니다 하지만 동적배열을 활용하게 되면 원하는 만큰 배열을 선언하여 값을 넣을수 있습니다 malloc를 이용하면 되는데 선언은 int **arr; 초기화는 arr=(int**)malloc(sizeof(int)* j); for(i=0;i 결과>> 더보기
C언어 달팽이배열 배열의 응용인 달팽이 모양의 배열을 가지는 프로그램을 작성해 보겠습니다 달팽이 배열이란 아래 그림과 같이 배열이 선언된 배열을 뜻합니다 배열을 가리키는 화살 모양대로 1부터 16까지 값을 저장한 그림과 같이 출력하면 됩니다 이 숫자들을 분석하면 4칸 이동: y값이 1증가하는 배열 arr[x][y+1] (0,0) (0,1) (0,2) (0,3) 3칸 이동: x값이 1증가하는 배열 arr[x+1][y] (1,3) (2,3) (3,3) 3칸 이동: y값이 1감소하는 배열 arr[x][y-1] (3,2) (3,1) (3,0) 2칸 이동: x값이 1감소하는 배열 arr[x-1][y] (2,0) (1,0) 2칸 이동: y값이 1증가하는 배열 arr[x][y+1] (1,1) (1,2) 1칸 이동: x값이 1증가하는 .. 더보기
C언어로 Lotto 프로그램(배열, 포인터) C언어로 Lotto 번호를 생성하는 프로그램을 작성하도록 하겟습니다 Lotto란 1부터 45까지의 수가 적힌 공을 차례로 6번 꺼내어 나오는 조합인데....; 중요한 포인트가 있습니다 일단 ! 예상출력 모습입니다 1. 사용자에게 로또 게임 수를 입력받아 게임의 횟수별로 임의로 6개의 수(1~45)를 자동 하지만 단, 생성된 난수는 모두 다른 값이어야 합니다 2. 로또 번호는 정수형 배열을 선언하여 설정하도록 합니다 3. 0이나 음수를 입력 받으면 게임을 종료하도록 합니다 #include #include #include int main() { int Lotto[6]; int iNum; int i; int j; int k; long seed; printf ("*** LOTTO NUMBER GENERATOR .. 더보기
C언어 입력받은 char형 데이터 두개를 서로 바꾸는 프로그램 char형 데이터 두 개를 입력받은 다음 서로 바꾸는 swap 함수를 만드는 프로그램을 작성하여 보겠습니다 출력) 문자 입력 ch1 : A 문자 입력 ch2 : C swap 전 : ch1=A, ch2=C swap 후 : ch1=C, ch2=A 문자 입력 ch1 : D 문자 입력 ch2 : E swap 전 : ch1=D, ch2=E swap 후 : ch1=E, ch2=D 위와 같이 출력되는데 중요한 점은 char변수 ch1과 ch2를 main()에 선언하고 swap()함수를 선언하여 main에 입력되어 있는 ch1과 ch2를 값을 바꾸도록하겠습니다. 이러한 방법은 포인터를 이용하면 가능합니다 추가로 동일 문자 입력 받을시 중지 하도록 하겠습니다 #include void swap(char *px, char .. 더보기
C언어 섭씨(Celsius) 온도를 화씨(Fahrenheit)로 변환 그반대도 가능한 프로그램 0℃에서 100℃까지의 섭씨 온도를 화씨 온도로 바꾸어서 5℃ 간격으로 출력하고 그 반대의 경우도 가능한 프로그램을 작성하겠습니다 출력>> 먼저 섭씨와 화씨는 모두 온도의 단위입니다. 1)섭씨(centigrade)는 스웨덴의 천문학자 Anders Celsius(1701~1744)의 고안에 따른 것입니다. 이 셀시우스가 만든 온도계가 중국에 알려졌을 때, 중국사람들이 셀시우스를 '섭씨'라고 부른 것이 "섭씨"라는 말의 기원이라고 합니다. 2)화씨(Fahrenheit)는 the Fahrenheit scale을 고안한 독일의 물리학자 Gabriel Daniel Fahrenheit(1686~1736)의 이름을 딴 것인데, 섭씨의 경우와 마찬가지로 파렌하이트를 중국사람들이 '화륜해'라고 부르게 되어 '화씨'가 되.. 더보기
C언어 두 개의 정수를 입력받고 두 정수 사이의 부호를 바꿔가면서 계산한 식과 결과를 출력 두 개의 정수를 입력받고 두 정수 사이를 나타내고 두 정수 사이의 부호를 다음과 같이 바꿔가면서 계산한 식과 계산학 식의 결과를 출력하는 프로그램을 작성하겠습니다 출력) 정수(2개) 입력 : 1 10 X = 1 – 2 + 3 – 4 + 5 – 6 + 7 – 8 + 9 – 10 X = -5 정수(2개) 입력 : 2 6 X = 2 – 3 + 4 – 5 + 6 X = 4 즉 두 정수 사이에 +와 -를 번갈아가면서 나타내게 됩니다 #include int main() { int n1,n2,i=0; int sum; printf("정수 2개를 입력하세요 : "); scanf("%d %d",&n1,&n2); printf("X=%d",n1); sum = n1; n1++; for(; n1 더보기
C언어 입력된 정수의 2의 보수를 구하여 10진수, 16진수 형태로 출력하는 프로그램 입력된 정수의 2의 보수를 구한다음에 10진수, 16진수의 형태로 각각 출력하는 프로그램을 작성하겠습니다. 출력) Input Number : 1 2’s complement(10진수) : -1 2’s complement(16진수) : ffffffff 위와 같이 출력을 하게되고 10진수는 %d 16진수는 %x를 이용하여 출력하겠습니다 보수를 구하는 부분은 따로 함수를 선언하여 포인트로 받겠습니다 #include void compliment(int *pN, int *pC); int main() { int N, C = 0; printf("Input Number : "); scanf("%d",&N); compliment(&N, &C); printf("2's complement(10진수) : %d \n", C); .. 더보기
C언어로 두 개의 정수를 입력받고 두 정수 사이에 5의 배수의 개수를 출력하는 프로그램 1. 두 개의 정수를 입력받고 두 정수 사이에 5의 배수의 개수를 출력하는 프로그램을 작성해보겠습니다. 출력) 정수(2개) 입력 : 5 21 출력 : 3 두값사이의 5의 배수는 10 15 20 입니다! 두값사이이니 두값은 포함하지 않겠습니다!! 그리고 중요한점은 5 21일 경우도 있고 21 5일 경우도 있습니다 앞자리가 큰수가 나오든 작은수가 나오든 두값사이의 5의 배수를 구해야합니다 #include int main() { int n1, n2, a=0; printf("정수(2개) 입력 : "); scanf("%d %d", &n1, &n2); if(n1>n2) { a = n1 - n2; a = a/5; } else if(n1*pn2) { temp = *pn1; *pn1 = *pn2; *pn2 = temp;.. 더보기