为什么小于2000的年份输出是空白

为什么小于2000的年份输出是空白
2000以上都能输出
蹲帮忙

img

没有输出是因为没有进入两个if,判断闰年的条件有问题,可以参考一下下面的判断


if( ((0 == year%4)&&(0 != year%100)) ||(0 == year %400) )


(year % 4 == 0 && year % 100 != 0) || year % 400 == 0 括号括起来

【相关推荐】



  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/242606
  • 除此之外, 这篇博客: 海大16年秋编程题1:请编写一个程序,输出20000以内所有的亲和数对,并统计该指定范围内有多少对亲和数。中的 2.主函数部分 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    代码如下(示例):

    int main()
    {
    	int A, B, x, i, sum1, sum2;
    	printf("Input A,B:");
    	scanf("%d %d",&A,&B);//输入亲和数的范围
    	if(A>B)//使得a为下标,b为最大数
    	{
    	int t=A;
    	A=B;
    	B=t;
    	}
    	//A = 1;
    	//B = 20000;
    	int cop = 0;//用于计算该区间共有多少对亲和数
    	for (x = A; x <= B; x++)//x从A到B
    	{
    		sum1 = 0, sum2 = 0;
    		for (i = 1; i < x; i++)
    			if (x % i == 0)
    				sum1 += i;//算出当前因数的和,赋值给sum1
    		if (sum1 >= x || sum1<A || sum1>B)//简化算法,当sum的值大于当前值或者小于A,B时,跳出本次循环
    			continue;//需要注意的是sum不能大于x本身,不能小于下限,不能大于上限,以防止求出的数不准确。
    		for (i = 1; i < sum1; i++)//从1-sum1,计算出sum1各个因子的和,赋值给sum2
    			if (sum1 % i == 0)
    				sum2 += i;
    		if (sum2 == x)//如果sum2与当前数相等,说明这俩数的因子和相等,输出即可
    		{
    			printf("%d,%d\n", x, sum1);
    			cop++;
    		}
    	}
    	printf("\n在该指定范围内有%d对亲和数", cop);
    	return 0;
    }
    


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^