日期只输入一个整数而不是C中的日月年
Posted
技术标签:
【中文标题】日期只输入一个整数而不是C中的日月年【英文标题】:Date input only one integer not day,month and year in C 【发布时间】:2018-01-13 10:37:13 【问题描述】:我想编写一个 C 程序,通过输入注册日期来计算汽车的年限。我只能使用一个 int 而不是日、月和年作为整数。如果整个日期都是 int,我如何只计算年份?
这是我的代码:
#include <stdio.h>
int main()
int inputDateOfFirstUse, ageCalculation, age;
printf("\nProgram to calculate the age of a car");
printf("\nPlease enter the date of the first use (in this syntax tt.mm.jjjj): ");
scanf("%i", &inputDateOfFirstUse);
ageCalculation = inputDateOfFirstUse - 2018;
age = ageCalculation;
printf("\nThe car is %i years old.", age);
return 0;
【问题讨论】:
即使在 C 语言中,使用英语单词作为标识符也可以帮助这里的大多数人为您提供帮助。 能否请您将文本翻译成英文以便更好地理解?老实说,我不知道变量是什么。 您要求人们以tt.mm.jjjj
的形式输入,但点会阻止这样的数字被解释为整数(除非您使用的语言环境中 .
被用作“千分隔符”,,
是小数点)。你真的应该要求人们输入ttmmjjjj
(或者,就像只有英语的顽固分子那样:ddmmyyyy
)。要从这样的整数中提取年份,您需要使用int jjjj = eingabeZulassungsdatum % 10000
。
为什么不对输入的日期使用字符串?然后获取适当的子字符串并进行转换?
与所描述的问题无关,但我预计2018 - inputDateOfFirstUse
。
【参考方案1】:
在scanf
中,您可以使用%*i
语法来跳过您不关心的值。
#include <stdio.h>
int main()
int inputDateOfFirstUse, ageCalculation, age;
printf("\nProgram to calculate the age of a car");
printf("\nPlease enter the date of the first use (in this syntax tt.mm.jjjj): ");
scanf("%*i.%*i.%i", &inputDateOfFirstUse); // Skips day and month, reads only year
ageCalculation = 2018 - inputDateOfFirstUse;
age = ageCalculation;
printf("\nThe car is %i years old.", age);
return 0;
【讨论】:
以上是关于日期只输入一个整数而不是C中的日月年的主要内容,如果未能解决你的问题,请参考以下文章