我的代码好多问题,有没有人可以帮我运行一下找一下问题?我运行了有问题但是不会解决,困扰了好久了,好难!
#include<stdio.h>
int H(int x,int y,int z);
int main()
{
int nian,yue,ri;
printf("请依次输入年、月、日:");
scanf("%d %d %d",&nian,&yue,&ri);
if(nian%4!=0&&nian%100==0||nian%400!=0)
printf("%d",H(nian,yue,ri)-1);
else
printf("%d",H(nian,yue,ri));
}
int H(int a,int b,int c)
{
int sum=0,i;
if(a%4==0&&a%100!=0||a%400==0)
{
for(i=0;i<b;i++)
{
i=i-1;
if(i==2)
{
sum=sum+29;
}
else if(i==4||i==6||i==9||i==11)
{
sum=sum+30;
}
else
{
sum=sum+31;
}
}
return sum;
}
}
if(a%4==0&&a%100!=0||a%400==0)
如果是平年呢?输入2022 5 31,压根没运行这个if里面的语句
所以返回的值是错的
第10行,判断为闰年后并不是立刻就能得出天数要减一,因为闰年和非闰年在1、2月大部分没有区别,所以还要判断月份是否大于2
第17行不用判断是否为闰年了,在前面已经判断过了
#include<stdio.h>
int H(int x,int y,int z);
int main() {
int nian,yue,ri;
printf("请依次输入年、月、日:");
scanf("%d %d %d",&nian,&yue,&ri);
if((nian%4==0&&nian%400!=0)&&yue>2)//判断是否为闰年以及月份是否大于2
printf("%d",H(nian,yue,ri)+1);//闰年2月有29天
else
printf("%d",H(nian,yue,ri));
}
int H(int a,int b,int c) {
int sum=0;
for(int i=1; i<b; i++) {
if(i==2)sum=sum+28;
else if(i==4||i==6||i==9||i==11)sum=sum+30;
else sum=sum+31;
}
return sum+c;//月份天数加上日期
}
修改如下,供参考:
#include<stdio.h>
int H(int x, int y, int z);
int main()
{
int nian, yue, ri;
printf("请依次输入年、月、日:");
scanf("%d %d %d", &nian, &yue, &ri);
//if (nian % 4 != 0 && nian % 100 == 0 || nian % 400 != 0)
//printf("%d", H(nian, yue, ri) - 1);
//else
printf("%d", H(nian, yue, ri));
return 0;
}
int H(int a, int b, int c)
{
int sum = 0, i;
//if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0)
//{
for (i = 1; i < b; i++) //for (i = 0; i < b; i++)
{
//i = i - 1;
if (i == 2)
{
if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0)
sum = sum + 29;
else
sum += 28;
}
else if (i == 4 || i == 6 || i == 9 || i == 11)
{
sum = sum + 30;
}
else
{
sum = sum + 31;
}
}
return sum += c;
//}
}