日期只输入一个整数而不是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中的日月年的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用啥来获取整数输入而不是 C 中的 scanf?

Bailian2964 日历问题日期+模拟

Pandas_实现数字顺序填充指定值交替填充日期顺序填充(按日月年)

将日期转换为格式日、日月年

c语言将日期转换为字符串 急求,谢谢!

检查输入是不是是C中的整数类型