Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从8位整数(ddmmyyyy)中提取年份_C - Fatal编程技术网

C 从8位整数(ddmmyyyy)中提取年份

C 从8位整数(ddmmyyyy)中提取年份,c,C,我有一个8位数的int存储日期。例如,12041989是1989年4月12日。我应该声明哪种类型的变量的日期以及如何提取年份 编辑:根据你告诉我的,我是这样做的:(我必须通过输入当前日期和他的出生日期来计算一个人的年龄) #包括 #包括 void main() { 无符号整数a,b,ac,an,c; printf(“\n当前日期“\n”); scanf(“%d”和“&a”); printf(“\n出生日期\n”); scanf(“%d”和“b”); ac=a%10000; a=b%10000;

我有一个8位数的
int
存储日期。例如,
12041989
是1989年4月12日。我应该声明哪种类型的变量的日期以及如何提取年份

编辑:根据你告诉我的,我是这样做的:(我必须通过输入当前日期和他的出生日期来计算一个人的年龄)

#包括
#包括
void main()
{
无符号整数a,b,ac,an,c;
printf(“\n当前日期“\n”);
scanf(“%d”和“&a”);
printf(“\n出生日期\n”);
scanf(“%d”和“b”);
ac=a%10000;
a=b%10000;
c=ac-an;
printf(“\n年龄为:%d”,c);
getch();
}

有时有效,但有时无效,我不明白为什么。例如,对于
13102013
12061995
,它告诉我年龄是
-3022
。为什么会这样?

如果您不关心年份中有5位或更多数字的日期,可以使用模运算符:

int date = 12041989;
int year = date % 10000;
在大多数机器上,
int
类型通常为32位宽。这足以将格式为“ddmmyyyy”的日期存储在一个数字中。我不鼓励您使用
unsigned int
,因为两个日期的差异可能是故意为负的(例如,如果您意外地将出生日期放在第一位,而当前日期放在第二位,您将获得负年龄,因此您在输入中检测到错误)

#包括
#包括
int main()//最好使用int main(),因为void main只是一种特殊的东西,并非所有编译器都支持。
{
int a,b,ac,an,c;//在此处删除“unsigned”。
printf(“\n当前日期“\n”);
scanf(“%d”和“&a”);
printf(“\n出生日期\n”);
scanf(“%d”和“b”);
ac=a%10000;
a=b%10000;
c=ac-an;
if(c<0)
{
printf(“您出生在未来,这似乎不太可能。您是否交换了输入?\n”);
}
printf(“\n年龄为:%d”,c);
getch();
}

如果您不关心年份中有5位或更多数字的日期,可以使用模运算符:

int date = 12041989;
int year = date % 10000;
在大多数机器上,
int
类型通常为32位宽。这足以将格式为“ddmmyyyy”的日期存储在一个数字中。我不鼓励您使用
unsigned int
,因为两个日期的差异可能是故意为负的(例如,如果您意外地将出生日期放在第一位,而当前日期放在第二位,您将获得负年龄,因此您在输入中检测到错误)

#包括
#包括
int main()//最好使用int main(),因为void main只是一种特殊的东西,并非所有编译器都支持。
{
int a,b,ac,an,c;//在此处删除“unsigned”。
printf(“\n当前日期“\n”);
scanf(“%d”和“&a”);
printf(“\n出生日期\n”);
scanf(“%d”和“b”);
ac=a%10000;
a=b%10000;
c=ac-an;
if(c<0)
{
printf(“您出生在未来,这似乎不太可能。您是否交换了输入?\n”);
}
printf(“\n年龄为:%d”,c);
getch();
}
使用模运算符(
%
)从数字中提取数字

int date = 12041989;
int day,month,year;

year = date%10000;
date = date/10000;
month = date/100;
date = date/100;
day  = date; 
使用模运算符(
%
)从数字中提取数字

int date = 12041989;
int day,month,year;

year = date%10000;
date = date/10000;
month = date/100;
date = date/100;
day  = date; 


如果您尝试任何操作,请发布您的代码。此问题不应关闭。虽然OP没有发布代码,但他不是在要求代码。他只查询存储日期的变量以及如何从该变量中提取数字(年份)。我投票决定重新开张。这对你来说可能很明显,可能在你的编程入门教材的第1章中(虽然可能不是),但这并不意味着提问者可以很容易地找到答案。表现出一些基本的礼貌。要求一种类型和一种方法来完成某件事,从技术上讲就是要求代码。是的,我知道,这不是一个“给我代码plz”的问题,但我也不认为这是一个适合广大观众的好问题。不太可能有人会偶然发现它,需要同样的建议。这是一个不错的问题,但并不完全适合这个平台。无论如何,我认为根据目前提供的答案,完全没有必要重新打开它。@maxx您使用的是
无符号
整数。用
int
替换
unsigned int
,它应该可以正常工作。如果您尝试了任何操作,请发布您的代码。此问题不应关闭。虽然OP没有发布代码,但他不是在要求代码。他只查询存储日期的变量以及如何从该变量中提取数字(年份)。我投票决定重新开张。这对你来说可能很明显,可能在你的编程入门教材的第1章中(虽然可能不是),但这并不意味着提问者可以很容易地找到答案。表现出一些基本的礼貌。要求一种类型和一种方法来完成某件事,从技术上讲就是要求代码。是的,我知道,这不是一个“给我代码plz”的问题,但我也不认为这是一个适合广大观众的好问题。不太可能有人会偶然发现它,需要同样的建议。这是一个不错的问题,但并不完全适合这个平台。无论如何,我认为根据目前提供的答案,完全没有必要重新打开它。@maxx您使用的是
无符号
整数。用
int
替换
unsigned int
,它应该可以正常工作。+1,但不要在不尝试的情况下直接回答问题。@Gangadhar;同意。但他并不是在要求密码。他很可能只是想知道如何从一个数字中提取数字(使用模运算符)。+1,但如果不直接回答问题,就不必一试。@Gangadhar;同意。但他并不是在要求密码。很可能他只是想知道如何从一个数字中提取数字(使用模运算符)。+1,但对于直接提出的问题,如果不进行一次尝试,就不要给出答案。@Gangadhar我不同意。我同意结束(这就是我投票的原因),但几乎没有任何努力来写d