티스토리 뷰
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
- MBTI 테스트
- php
- 예제 소스
- JavaScript
- 안드로이드
- MBTI 강좌
- 스마트폰
- 효과음
- 프로그래밍
- C언어 소스
- 강좌
- 강의
- 성공
- 인터넷 익스플로러
- 인터넷
- MBTI
- 프로그래밍 문제
- It
- 안드로이드 어플
- C
- 소스코드
- C언어
- 모토로이
- 리뷰
- 안드로이드 어플 추천
- HTML
- MBTI 자료
- 소스
- 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 | 31 |
글 보관함