본문 바로가기

목록

(199)
[C언어] 연습문제5 [문제] 프로그램 사용자로부터 문자열을 입력 받아서 입력 받은 문자열의 단어를 역으로 출력하는 프로그램을 작성해보자. 예를 들어서 "I am a boy"가 입력되면, 다음의 출력을 보여야 한다. "boy a am I" 단, 문자열의 입력에 앞서 프로그램 사용자가 입력할 문자열의 최대길이 정보를 먼저 입력 받기로하자. 그리고 그 길이만큼 메모리 공간을 동적으로 할당해서 문자열을 입력 받기로 하자. 단, "boy a am I"는 printf()만 사용해서 출력하자. [실행결과] 문자열의 최대 길이 입력: 20 문자열 입력: I am a boy boy a am I [수정할 코드] deleteEnter() 없이 수정 및 코드 정리(간략화) #include #include void deleteEnter(char*..
[C언어] 연습문제6 [문제] 이름, 나이, 성별을 입력 받아 바이너리 데이터로 friend.bin 파일에 저장하라. 그리고 다시 읽어 들여서 콘솔창으로 출력하는 프로그램을 작성하라. 조건1) 구조체를 사용할 것 조건2) fprintf, fscanf 함수를 사용하지 말 것 [실행결과] 이름, 성별, 나이 순 입력: Jungs M 27 Jungs M 27 [코드] #include typedef struct friend { char name[30]; char sex; int age; }Friend; void main() { FILE* fp; Friend myfriend1; Friend myfriend2; fp = fopen("friend.bin", "wb"); printf("이름, 성별, 나이 순 입력: "); scanf_s("..
[C언어] 연습문제7 [문제] src.txt라는 파일을 만들고 아래와 같이 입력하고 저장한다. Hello C World Welcome to C World src.txt 파일을 바이너리 데이터로 읽어서 des에 바이너리 데이터로 쓰는 바이너리 파일 복사 프로그램을 작성하라. 조건1) 파일을 여는 데 실패하면 메시지를 띄울 것 조건2) 파일을 복사하는데 성공하거나 실패하면 그에 따른 메시지를 띄울 것 조건3) memset 함수를 사용하지 말 것 [실행결과] [수정할 코드] #include #include #include #define BUFFER_SIZE30 int main(void) { char buffer[BUFFER_SIZE]; int res; FILE* fp1 = fopen("src.txt", "rb"); FILE* fp..
[C언어] 연습문제8 [문제] 열거형은 사용하여 Do, Re, Mi, Fa, So, La, Ti를 정의하고 아래와 같이 해당하는 음계에 문자열이 출력되도록 프로그램을 작성하시오. Do에는 "도는 하얀 도라지" Re에는 "레는 둥근 레코드" Mi에는 "미는 파란 미나리" Fa에는 "파는 예쁜 파랑새" So에는 "솔은 작은 솔방울" La에는 "라는 라디오고요~" Ti에는 "시는 졸졸 시냇물" 조건1) 열거형 변수를 입력 받아 음계가 출력되는 sound() 함수를 만들 것 조건2) 열거형 변수를 typedef로 정의할 것 [실행결과] 도는 하얀 도라지 레는 둥근 레코드 미는 파란 미나리 파는 예쁜 파랑새 솔은 작은 솔방울 라는 라디오고요~ 시는 졸졸 시냇물 [수정할 코드] #include #include #include typed..
[C언어] 연습문제9 [문제] 프로그램 사용자로부터 int형 정수 하나를 입력 받아라. 입력 받은 정수의 상위 2byte와 하위 2byte 값을 양의 정수로 출력하라. 그리고 상위 1byte와 하위 1byte에 저장된 값의 아스키 문자를 출력하라. 조건1) 공용체와 구조체를 둘 다 사용할 것 [실행결과] 정수 입력: 1145258561 상위 2바이트: 17475 하위 2바이트: 16961 상위 1바이트 아스키 코드: D 하위 1바이트 아스키 코드: A [수정할 코드] #include #include #include typedef struct stDivTwo_tag { short lower; short upper; }stDivTwo; typedef union uNum_tag { stDivTwo stDiv; char arr[4]..
[C언어] 연습문제10 [문제] Point라는 이름의 구조체를 선언하고 Point형 포인터 변수를 그 멤버로 선언하자. 그리고 점1을 [1, 1], 점2를 [2, 2], 점3을 [3, 3]으로 초기화 하고 포인터 변수를 이용하여 점1을 점2와 점2를 점3과 점3을 점1과 연결하자. 마지막으로 점의 연결관계를 아래 실행결과와 같이 출력해보자. [실행결과] 점의 연결관계... [1, 1]와(과) [2, 2] 연결 [2, 2]와(과) [3, 3] 연결 [3, 3]와(과) [1, 1] 연결 [코드] #include struct point { int xpos; int ypos; struct point* ptr; }; int main(void) { struct point pos1 = { 1, 1 }; struct point pos2 = ..
C언어 연습문제46 [문제] 구조체를 사용하여 점1은 [1, 2], 점2는 [100, 200]으로 초기화 하라. 그리고 포인터를 사용하여 점1은 2씩 증가시키고 점2는 4씩 증가시키는 프로그램을 작성하라. 조건1) 포인터를 사용하여 접근하는 방법은 2가지를 사용할 것(ptr[0].xpos 형식은 제외) 조건2) 구조체 배열을 사용할 것 조건3) 구조체 포인터를 사용할 것 조건4) 출력하는 함수를 따로 만들 것 [실행결과] [1, 2] [100, 200] [3, 4] [104, 204] [코드] #include struct point { int xpos; int ypos; }; void print(struct point* po); int main(void) { struct point pos[2] = { {1,2}, {100,..
C언어 연습문제45 [문제] 구조체 배열을 이용하여 점의 좌표를 3번 입력 받아 출력하는 프로그램을 작성하라. [실행결과] 점의 좌표 입력: 2 4 점의 좌표 입력: 3 5 점의 좌표 입력: 4 6 [2, 4] [3, 5] [4, 6] [코드] #include struct point { int xpos; int ypos; }; int main(void) { int i; struct point pos[3]; for (i = 0; i < 3; i++) // 3개의 점의 좌표 입력 { printf("점의 좌표 입력: "); scanf_s("%d %d", &pos[i].xpos, &pos[i].ypos); } for(i=0; i