티스토리 뷰
C언어로 만든 디지털 시계 소스코드입니다.
네이버 지식인에 어떤 분이 C언어 디지털 시계를 만드신다고 하면서 소스코드 수정을 요청 질문이 올라왔기에 한번 해봤어요.
출처 http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=185789762&page=1#answer1
#include <stdio.h> #include <time.h> #include <stdlib.h> #include <conio.h> #include <windows.h> long time_to_number(void); void dot_print(int hour); void digital_print(int dim[], int check); void gotoxy(int x, int y); void number_check(int k, int i); int hour_to_number(void); int time_to_24hour(void); int time_to_hour(void); int time_to_min(void); int time_to_sec(void); int is_am(void); int zero[20] = {1,1,1,1, 1,0,0,1, 1,0,0,1, 1,0,0,1, 1,1,1,1}; int one[20] = {0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0}; int two[20] = {1,1,1,1, 0,0,0,1, 1,1,1,1, 1,0,0,0, 1,1,1,1}; int three[20] = {1,1,1,1, 0,0,0,1, 1,1,1,1, 0,0,0,1, 1,1,1,1}; int four[20] = {1,0,1,0, 1,0,1,0, 1,1,1,1, 0,0,1,0, 0,0,1,0}; int five[20] = {1,1,1,1, 1,0,0,0, 1,1,1,1, 0,0,0,1, 1,1,1,1}; int six[20] = {1,0,0,0, 1,0,0,0, 1,1,1,1, 1,0,0,1, 1,1,1,1}; int seven[20] = {1,1,1,1, 1,0,0,1, 1,0,0,1, 0,0,0,1, 0,0,0,1}; int eight[20] = {1,1,1,1, 1,0,0,1, 1,1,1,1, 1,0,0,1, 1,1,1,1}; int nine[20] = {1,1,1,1, 1,0,0,1, 1,1,1,1, 0,0,0,1, 0,0,0,1}; int main(void) { int line; long time_number; int hour; printf("디지털시계프로그램\n\n"); system("cls"); while(!kbhit()) { gotoxy(1,2); time_number = time_to_number(); for(line=0; line<=4; line++) { number_check(time_number, line); printf("\n"); } hour = hour_to_number(); printf("\n현재 시간은 %s %02d:%02d:%02d 입니다.\n", (is_am()? "오전":"오후"), time_to_hour(), time_to_min(), time_to_sec()); Sleep(1000); dot_print(hour); printf("\n\n\n\n아무키나 누르면 종료합니다.\n"); } return 0; } int hour_to_number(void) { int hour; time_t current; struct tm *d; current = time(NULL); d = localtime(¤t); hour = d->tm_hour*10000; return hour; } // 현재 시간을 반환하는 함수(24시 형식) int time_to_24hour(void) { time_t current; struct tm *d; current = time(NULL); d = localtime(¤t); return d->tm_hour; } // 현재 시간을 반환하는 함수 int time_to_hour(void) { time_t current; struct tm *d; current = time(NULL); d = localtime(¤t); if ( d->tm_hour > 12 ) return (d->tm_hour - 12) ; return d->tm_hour; } // 현재 분을 반환하는 함수 int time_to_min(void) { time_t current; struct tm *d; current = time(NULL); d = localtime(¤t); return d->tm_min; } // 현재 초를 반환하는 함수 int time_to_sec(void) { time_t current; struct tm *d; current = time(NULL); d = localtime(¤t); return d->tm_sec; } // 오전과 오후를 판단하는 함수 int is_am(void) { if ( time_to_24hour() < 12 ) return 1; return 0; } /* 시, 분, 초 단위의 값을 하나의 정수로 변환하는 함수*/ long time_to_number(void) { int hour, min, sec; time_t current; struct tm *d; current = time(NULL); d = localtime(¤t); hour = d->tm_hour*10000; min = d->tm_min*100; sec = d->tm_sec; return hour+min+sec; } /* 시, 분, 초 사이의 구분을 위한 도트 출력 함수dot_print */ void dot_print(int hour) { int i; if(hour<100000) // 0시~9시 { for(i=0; i<2; i++) { gotoxy(10+(i*24), 3); // 도트의 위치가 맞지 않아서, gotoxy()의 좌표값을 수정. printf("■"); gotoxy(10+(i*24), 5); printf("■"); } } else { // 10시~24시 for(i=0; i<2; i++) { gotoxy(22+(i*24), 3); printf("■"); gotoxy(22+(i*24), 5); printf("■"); } } } void digital_print(int dim[], int line) { int i; for(i=line*4; i<=line*4+3; i++) { if(dim[i] == 1) { printf("■"); } else{ printf(" "); } } printf(" "); } /* 입력된 숫자에 해당하는 배열로 digital_printf() 호출*/ void number_check(int k, int i) { if(k>=1) { number_check(k/10, i); switch(k%10) { case 0: digital_print(zero, i); break; case 1: digital_print(one, i); break; case 2: digital_print(two, i); break; case 3: digital_print(three, i); break; case 4: digital_print(four, i); break; case 5: digital_print(five, i); break; case 6: digital_print(six, i); break; case 7: digital_print(seven, i); break; case 8: digital_print(eight, i); break; case 9: digital_print(nine, i); break; } } } void gotoxy(int x, int y) { COORD Pos = {x-1, y-1}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos); }
C언어로 만든 디지털 시계 소스코드를 실행한 결과입니다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- W3Schools Online Web Tutorials
- 구차니의 잡동사니 모음
- [IT]블로거팁닷컴
- 비앤아이님의 블로그
- Blog Suspect
- 즐거운하루 blog
- zinicap의 검색엔진 마케팅(SEM)
- 머니야머니야님의 블로그
- [Friend] AtinStory
- [기타배우기]해브원 박스
- [웹표준] SINDB.com
- 해커 C 이야기
- [애드센스] 길라잡이
- 정순봉의 IT SCHOOL
- 씨디맨의 컴퓨터이야기
- 2proo Life Story
- 못된준코의 세상리뷰
- [IT강좌] 정보문화사
- IN 대전
- 에우르트는 나쁜남자 -_-
- 씬의 싱크탱크
- 엔돌슨의 IT이야기
- 진이늘이
- 'Cooltime'의 블로그
- 후이의 Tistory
- Soulstorage
- 앤드&엔드의 블로그
- June Blog
- 노지의 소박한 이야기
- gbWorld
- 인터넷 속 나의 생각
- HarshNix
- ART of WEB
- 녹두장군 - 상상을 현실로
TAG
- C언어
- php
- JavaScript
- 예제 소스
- 성공
- 인터넷 익스플로러
- MBTI 테스트
- 모토로이
- 강좌
- It
- 안드로이드 어플
- 효과음
- MBTI 자료
- 안드로이드 어플 추천
- 인터넷
- C언어 소스
- 소스
- HTML
- MBTI 강좌
- 리뷰
- 스마트폰
- 프로그래밍 문제
- 안드로이드
- 프로그래밍
- 강의
- MBTI
- 소스코드
- C언어 문제
- C
- MBTI 검사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함