为什么小于2000的年份输出是空白
2000以上都能输出
蹲帮忙
没有输出是因为没有进入两个if,判断闰年的条件有问题,可以参考一下下面的判断
if( ((0 == year%4)&&(0 != year%100)) ||(0 == year %400) )
(year % 4 == 0 && year % 100 != 0) || year % 400 == 0 括号括起来
【相关推荐】
代码如下(示例):
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;
}