|
发表于 2023-12-26 16:44:52
|
显示全部楼层
想要实现图片中的要求,并且我已经写好了大部分的代码,接下来我会问你两个问题,以及提供给你我编写好的代码,请你回答我的两个问题
提供的代码
#include <stdio.h>
#include <math.h>
int main()
{
long count1,count2;
int year1,year2,year3;
int month1,month2,month3;
int day1,day2,day3;
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
float percent;
printf("请输入你的生日(如1988-05-20):");
scanf("%d-%d-%d",&year1,&month1,&day1);
printf("请输入今天日期(如2016-03-28):");
scanf("%d-%d-%d",&year2,&month2,&day2);
year3=year1+80;
month3=month1;
day3=day1;
while(year1<=year2)
{
days[1] = (year1 % 400 == 0 || (year1 % 4 == 0 && year1 % 100 != 0)) ? 29 : 28;
while(month1<=12)
{
while(day1<=days[month1-1])
{
if(year1 == year2 && month1 == month2 && day1 == day2)
{
goto FINISHONE;
}
day1++;
count1++;
}
day1=1;
month1++;
}
month1=1;
year1++;
}
FINISHONE: ;
while(year1<=year3)
{
days[1] = (year1 % 400 == 0 || (year1 % 4 == 0 && year1 % 100 != 0)) ? 29 : 28;
while(month1<=12)
{
while(day1<=days[month1-1])
{
if(year1 == year3 && month1 == month3 && day1 == day3)
{
goto FINISHTOW ;
}
day1++;
count2++;
}
day1=1;
month1++;
}
month1=1;
year1++;
}
FINISHTOW: ;
percent = ((float)count2-count1) / ((float)count2);
printf("你在这个世界上总共生存了%d天\n",count1);
printf("如果你可以活到80岁,你还剩下%d天\n",count2-1);
printf("你已经使用了%.2f的生命,请好好珍惜剩下的时间!",percent);
return 0;
}
问题1:为什么我的count2,算出来理应是19046天,但为何结果为19047天
问题2:这个percent想表达count2-count1除以count2的比值,结果想呈现两位小数浮点型的34.82%,但结果为0.47%,为什么,如何修改?
@FishC |
-
|