C 언어 학습 기록(12)편 정보 조회

20501 단어 C 언어
C 언어 학습 기록
전언
필기를 하는 습관을 배우지 못했기 때문에 지식에 대한 깊은 이해를 강화하기 위해 필기를 쓰기로 했습니다. 여러분께 교류를 배우고 싶습니다!
부당한 점은 고쳐 주십시오!여기에 감사 드립니다!이쪽은 C 언어를 배우기 시작해서 자기가 프로그램 언어에 서툴러서 기초부터 배우기로 했습니다.
소들은 이 글을 소홀히 할 수 있다!
학교 OJ 실험
항공편 정보 조회
Problem Description 아래 표는 한 도시에서 다른 도시로 가는 일일 항공편 정보를 보여 줍니다. 이륙 시간 도착 시간 8:00 a.m. 10:16 a.m. 9:43 a.m. 11:52 a.m. 11:19 a.m. 1:31 p.m. 12:47 p.m. 3:00 p.m. 2:00 p.m. 4:08 p.m. 3:45 p.m.5:55 p.m. 7:00 p.m. 9:20 p.m. 9:45 p.m. 11:58 p.m. 구조 유형 컴파일러를 사용하여 사용자에게 시간(24시간제로 표시)을 입력하고 이륙 시간과 사용자가 가장 가까운 항공편을 선택하여 해당하는 이륙 시간과 도착 시간을 표시한다.Input Description은 콜론으로 구분된 시간을 24시간 단위로 입력합니다.Output Description은 이륙 시간과 입력 시간에 가장 가까운 항공편의 이륙 시간과 도착 시간을 출력하며, 출력 형식은 샘플 출력을 참조합니다.Sample Input 13:15 Sample Output departure time: 12:47 p.m. arriving time: 3:00 p.m. Hint는 입력을 자정부터 분 단위로 표시합니다.이 시간을 표에서도 자정부터 분수로 표시한 이륙시간과 비교해 보자.
문제 풀이:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

struct time{  //     ,             
    int hour;
    int minute;
    char type[7];
};


int TToM(struct time t);  //          


int main()
{
    int a, b, i=0;  //a b        


    struct time ts[]= {
        {8, 00, "a.m."}, {10, 16, "a.m."},
        {9, 43, "a.m."}, {11, 52, "a.m."},
        {11, 19, "a.m."}, {1, 31, "p.m."},
        {12, 47, "p.m."}, {3, 00, "p.m."},
        {2, 00, "p.m."}, {4, 8, "p.m."},
        {3, 45, "p.m."}, {5, 55, "p.m."},
        {7, 00, "p.m."}, {9, 20, "p.m."},
        {9, 45, "p.m."}, {11, 58, "p.m."},


    };

    scanf("%d:%d", &a, &b);

    int result = a*60 + b;   //          
    int min = abs(result - TToM(ts[0]));  //                
    int j=0;

    for(i=2; i<=14; i+=2)   //               
    {
        if(min > abs(result - TToM(ts[i])))
        {
            min = abs(result - TToM(ts[i]));
            j = i;
        }
    }

    if(ts[j].minute<10)   //     
    {
        printf("departure time: %d:0%d %s
"
, ts[j].hour, ts[j].minute, ts[j].type); if(ts[j+1].minute<10) printf("arriving time: %d:0%d %s
"
, ts[j+1].hour, ts[j+1].minute, ts[j+1].type); else printf("arriving time: %d:%d %s
"
, ts[j+1].hour, ts[j+1].minute, ts[j+1].type); } else { printf("departure time: %d:%d %s
"
, ts[j].hour, ts[j].minute, ts[j].type); if(ts[j+1].minute<10) printf("arriving time: %d:0%d %s
"
, ts[j+1].hour, ts[j+1].minute, ts[j+1].type); else printf("arriving time: %d:%d %s
"
, ts[j+1].hour, ts[j+1].minute, ts[j+1].type); } return 0; } int TToM(struct time t){ // if(!strcmp(t.type,"a.m.")) { return t.hour*60 + t.minute; } else { if(t.hour==12) { return t.hour*60 + t.minute; } else return t.hour*60 + t.minute + 12*60; } }

좋은 웹페이지 즐겨찾기