这个时间转换代码有什么问题?

时间:2014-07-08 13:17:44

标签: c

我编写了这段代码,将“环球时报”集转换为“本地时间”。

#include<stdio.h>
#include<stdlib.h>

#define T_SIZE 2

void Time_change(int time,
             int time_diff,
             int *new_timep,
             int *day_nump)
{
*day_nump=0;

*new_timep=time+(time_diff*100);
if(*new_timep<0)
{
  *new_timep +=2400;
  *day_nump -=1;
}
if(*new_timep>2400)
{
  *new_timep -=2400;
  *day_nump +=1;
}
}

int main(void)
{
int utc[T_SIZE],
    time_diff,
    local[T_SIZE],
    day[T_SIZE],
    i;

    for(i=0;i<T_SIZE;i++)
    {
        printf("Enter Universal Time #%d\n",i);
        scanf("%d",&utc[i]);
        printf("Time difference=");
        scanf("%d",&time_diff);
    }

    printf("\n");

    for(i=0;i<T_SIZE;++i)
    {
        Time_change(utc[i],time_diff,&local[i],&day[i]);
        printf("Local Time = %d:%d  day# %d\n",(local[i]/100)%100,(local[i])%100,day[i]);
    }
   system("pause");
    }

这个结果出现了

Image

但是当我评论这些行时

//*day_nump -=1;

//*day_nump +=1;

结果是在小时部分。

Image

有什么问题?

1 个答案:

答案 0 :(得分:0)

第二次输入time_diff时,它将覆盖第一次,然后第二次将使用两次。

如果您将呼叫转移到Time_change到第一个循环,则每次都会使用正确的值time_diff