반응형

C언어 소스 40

[정답] 41. 반복문(while, do while, for)

[정답] 41. 반복문(while, do while, for) ◈ 기본 연습 1. 두 수를 입력받은 후 작은 수~큰 수 사이의 모든 수의 합을 구하는 프로그램을 작성하시오. 답: //두 수를 입력받은 후 작은 수~큰 수 사이의 모든 수의 합을 구하는 프로그램 #include int main(void) { int a, b; int sum; printf("두 개의 정수 입력:"); scanf_s("%d%d", &a, &b); if (a > b)//a가 b보다 크면 { //두 수를 교환 int temp = a; a = b; b = temp; } printf("%d ~ %d =", a, b); for (sum = 0; a 2. 1부터 100 사이에 있는 모든 6의 배수를 출력하는 프로그램을 작성하시오. 답: /..

[C언어 소스] 성적 관리 프로그램 4가지 유형

[C언어 소스] 성적 관리 프로그램 4가지 유형 C언어로 프로그래밍할 때 데이터를 관리할 메모리를 언제 부여하게 할 것인가에 따라 여러 형태로 프로그램을 작성할 수 있습니다.이번에는 학생 성적 관리 프로그램을 4가지 유형으로 서로 비교합시다. 제공 기능1. 학생 데이터 입력2. 학생 데이터 삭제3. 학생 검색4. 목록 보기 전역 변수 사용 소스 보기동적 메모리 할당 이용 소스 보기학생 데이터를 위한 메모리도 동적 메모리 할당 이용 소스 보기 이중 연결리스트를 이용한 소스 보기

[C언어] 79. 사용자 정의 형식 실습 - 기능 구현

79. 사용자 정의 형식 실습 - 기능 구현 이제 Student.c 소스 파일을 프로젝트에 추가하여 구체적으로 기능을 정의하세요. 먼저 필요한 헤더 파일을 포함하는 구문이 필요하겠죠. #include "Student.h" #include #include #include 먼저 학생 생성자를 작성하세요. 생성자는 학생 데이터를 초기 설정하는 함수예요. void Student_Student(Student *stu,const char *name) { 학생은 생성할 때 순차적으로 번호를 부여하세요. 이를 위해 정적 변수로 가장 최근에 부여한 학생 번호를 기억하는 변수를 선언하세요. static int last_num; 입력 인자로 전달받은 학생의 메모리를 초기화가 필요하죠. memset(stu,0,sizeof(S..

[C언어 소스] 병합 정렬(Merge Sort, 합병 정렬) 알고리즘

병합 정렬(Merge Sort, 합병 정렬) 알고리즘이번에는 병합 정렬 알고리즘을 살펴봅시다. 병합 정렬 알고리즘은 배열을 작은 단위의 배열로 분할한 후에 분할한 배열을 정렬하고 이들을 다시 정렬하면서 전체 배열을 정렬하는 알고리즘입니다. 병합 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) ah:= n/2 bh:= n - ah; 조건(n이 1보다 작거나 같으면) 종료 병합정렬(base,ah,compare) 병합접열(base+ah,bh,compare) tbase에 동적 메모리 할당(원소크기*원소개수) 메모리 복사(tbase,base) ai:=0 bi:=ah i:=0 반복(ai가 ah보다 작으면서 bi가 n보다 작다) 조건(tbase[ai]가 tbase[bi]보다 작거나 같으..

[C언어 소스] 쉘 정렬(Shell Sort) 알고리즘

쉘 정렬 (Shell Sort) 쉘 정렬은 삽입 정렬 알고리즘을 이용하는 정렬 방식입니다.쉘 정렬은 같은 간격에 있는 원소들을 삽입 정렬 원리로 정렬하는 것을 반복합니다. 간격의 초기값은 배열의 크기/2이며 간격이 1일 때까지 1/2로 줄이면서 반복합니다. 쉘정렬 //쉘 정렬(Shell Sort)#include #define SWAP(a,b) {int t; t = a; a=b; b=t;}//a와 b를 교환 int *origin;int on; void ShellSort(int *base, int n);int main(void){ int arr[10] = { 9,4,3,10,5,8,7,6,2,1 }; origin = arr; on = 10; ShellSort(arr, 10); return 0;}void In..

[디딤돌 자료구조와 알고리즘 with C] 4. 분할 정복 알고리즘

4. 분할 정복 알고리즘 분할 정복 알고리즘은 커다란 문제를 작은 문제로 나누어 작은 문제를 해결하고 이를 다시 합쳐 커다란 문제를 해결하는 알고리즘입니다. 분할 정복 알고리즘은 내부적으로 재귀 알고리즘을 사용합니다. 대표적인 분할 정복 알고리즘에는 최소값(최대값) 찾기 알고리즘, 이진 탐색 알고리즘과 병합 정렬 알고리즘 등이 있습니다. 4.1 최소값(최대값) 찾기 알고리즘 선형 자료구조에 보관한 자료 중에 최소값을 찾는 방법은 많습니다. 그 중에 분할 정복 알고리즘으로 해결하는 방법을 알아봅시다. 분할 정복 알고리즘에서는 모집합을 부분 집합으로 나누는 작업을 선행합니다. 원하는 기준에 맞게 부분 집합으로 분리한 후에 부분 집합에서 원하는 결과를 구합니다. 그리고 해결한 부분을 합쳐서 다시 커다란 집합에..

이중 연결리스트 - 순차 보관, C언어 소스

이중 연결리스트 - 순차 보관, C언어 소스 //이중 연결리스트 - 순차 보관(가장 최근에 보관한 데이터가 맨 뒤) //노드 정의, 초기화, 추가, 삭제, 검색, 전체 출력, 해제 #include #include typedef struct Node//노드 정의 { int data;//데이터 struct Node *next;//링크(다음 노드의 위치 정보) struct Node *prev;//링크(이전 노드의 위치 정보) }Node; void InitList(Node **phead, Node **ptail);//초기화 void AddData(Node **phead, Node **ptail, int data);//데이터 추가 void Remove(Node **phead, Node **ptail, Node *..

시저 암호(Caesar cipher, 카이사르 암호) , C언어 소스

시저 암호(Caesar cipher, 카이사르 암호) , C언어 소스 Bovmywo! Mobo sc ormvel.xod위 문장의 뜻이 무엇일까요?어느 나라 말인지 모르겠다고요. 위 문장은 일상에서 사용하는 문장이 아니라 암호화한 문장입니다. 네트워크 통신에서 스니핑 기술이 그리 어려운 것이 아니라서 암호화는 선택이 아닌 필수적인 요소라고 말해도 과언이 아닙니다. 이번에는 암호화에 관한 기초 상식을 살펴보려고 합니다.암호화에서 제일 많이 사용하는 용어는 평문과 암호문입니다. 평문은 암호화하지 않은 상태의 문장을 의미하고 암호문은 암호화한 문장을 의미합니다. 치환 암호일정한 규칙에 따라 평문의 문자를 다른 문자로 치환하여 암호문을 만드는 암호화 방식입니다. 시저 암호(Caesar cipher, 카이사르 암호..

앞 뒤가 똑같은 문장 회문(Palindrome), C언어 소스

앞 뒤가 똑같은 회문(Palindrome), C언어 소스 //회문(Palindrome) //앞 뒤가 똑같은 문을 회문(Palindrome) 이라고 합니다. #include #include #include #include int Palindrome(char str[]); int main() { char test_str[5][100] = { "HannaH",//회문인 예 "ReliefpfeileR",//회문인 예 "Root",//회문이 아닌 예 "RotoR",//회문인 예 "RentneR"//회문인 예 }; int i = 0; for (i = 0; i

반응형