| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 378 人关注过本帖
标题:不会中间的转换,急着用,有哪位高手会?有木有?
只看楼主 加入收藏
yjj598889481
Rank: 1
等 级:新手上路
帖 子:57
专家分:2
注 册:2011-4-4
结帖率:100%
收藏
 问题点数:0 回复次数:1 
不会中间的转换,急着用,有哪位高手会?有木有?
假定time结构包含三个成员:hour、minute和second(都是int类型)。由用户读入从午夜开始的秒数total_sec,请计算出一个等价的时间结构,等价的时间用小时(0 ~23)、分钟(0 ~59)和秒(0 ~59)表示。
Enter total seconds:2590
Time:0:43:10

Enter total seconds:39802
Time:11:3:22
搜索更多相关主题的帖子: 时间 用户 
2011-04-26 18:12
boxinchao
Rank: 4
等 级:业余侠客
帖 子:51
专家分:231
注 册:2011-4-13
收藏
得分:0 
程序代码:
#include <stdio.h>

/* 宏定义 */
#define UINT32 unsigned int
#define UINT16 unsigned short
#define UINT8  unsigned char

#define FAILURE 1
#define SUCCESS 0

#define TOTAL_SECOND_PER_MINUTE 60
#define TOTAL_SECOND_PER_HOUR   3600

/* 数据结构定义 */
typedef struct time
{
    UINT8 ucHour;
    UINT8 ucMinute;
    UINT8 ucSecond;
}STRUCT_TIME;

STRUCT_TIME gstrTime;

/* 获取时间秒数 */
UINT32 getTotalSecond(UINT32 *pulTotalSecond)
{
    if(NULL == pulTotalSecond)
    {
        printf("para error !\n");

        return FAILURE;
    }

    printf("Plz input the ulTotalSecond:");
   
    while(1)
    {
        scanf("%u", pulTotalSecond);
        if(*pulTotalSecond < 0)
        {
            printf("Input error !\n");
        }
        else
        {
            break;
        }
    }

    return SUCCESS;
}

/* 转换并输出时间 */
UINT32 getTrueTime(UINT32 ulTotalSecond, STRUCT_TIME *pstrTime)
{
    if(NULL == pstrTime)
    {
        printf("para error !\n");

        return FAILURE;
    }

    pstrTime->ucHour   = ulTotalSecond/TOTAL_SECOND_PER_HOUR;
    pstrTime->ucMinute = (ulTotalSecond -(pstrTime->ucHour * TOTAL_SECOND_PER_HOUR))/TOTAL_SECOND_PER_MINUTE;
    pstrTime->ucSecond = ulTotalSecond%TOTAL_SECOND_PER_MINUTE;

    printf("Time: %u:%u:%u \n", pstrTime->ucHour, pstrTime->ucMinute, pstrTime->ucSecond);

    return SUCCESS;
}

int main(void)
{
    UINT32 ulTmp;
    UINT32 ulTotalSecond = 0;
    STRUCT_TIME *pstrTime = (STRUCT_TIME *)&gstrTime;
   
    ulTmp = getTotalSecond(&ulTotalSecond);
    if(ulTmp)
    {
        return FAILURE;
    }

    ulTmp = getTrueTime(ulTotalSecond, pstrTime);
    if(ulTmp)
    {
        return FAILURE;
    }

    return SUCCESS;
}


我觉得这么写比较正规一些,虽然有的分支可能是多余的,欢迎大家讨论
2011-04-26 23:00
快速回复:不会中间的转换,急着用,有哪位高手会?有木有?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016479 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved