gpt4 book ai didi

c - printf 之后打印额外的数字

转载 作者:行者123 更新时间:2023-11-30 21:14:43 25 4
gpt4 key购买 nike

这是我计算年龄的程序。

#include <stdio.h>
#include <time.h>

int main(void) {

int d1, d2, m1, m2, y1, y2, d3, m3, y3;

struct tm *t;
time_t ts;

ts = time(NULL);
t = localtime(&ts);

printf ("\n Enter date of birth (dd-mm-yyyy) : ");
scanf ("%2d-%2d-%4d",&d1,&m1,&y1);

d2 = t->tm_mday;
m2 = t->tm_mon + 1;
y2 = t->tm_year + 1900;

printf ("\n Current Date : %d-%d-%d\n",d2,m2,y2); //Problem on this line

d3 = d2 - d1;
m3 = m2 - m1;
y3 = y2 - y1;

printf ("%d%d%d",d3,m3,y3);

if (d3 < 0){
d3 += 30;
m3 -= 1;
}
if (m3 < 0){
m3 = 12 + m3;
y3 = y3 - 1;
}


printf ("\n You Are %d Year(s) %d Month(s) %d Day(s) Old",y3,m3,d3);
return 0;
}

问题出在打印当前日期的第 14 行。我输入了 16-10-2000 作为输入,每次运行程序时,我都会在第 14 行的换行符后得到这个数字“10-817”。如果我更改输入,这个数字就会发生变化。为什么在运行程序后会打印这个额外的数字以及如何修复它?

最佳答案

printf ("%d%d%d",d3,m3,y3); 这是您的额外行。删除它

如果您想知道这些值来自哪里,那么:

d3 = d2 - d1;// 26 - 16 = 10 
m3 = m2 - m1;// 2 - 10 = -8
y3 = y2 - y1;// 2017 - 2000 = 17

因此 10-817

关于c - printf 之后打印额外的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42466729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com