55、下列程序的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NIN
void countValue()
{
}
void main()
{
cnt=sum=0;
countValue();
printf("cnt=%d\n",cnt);
printf("sum=%ld\n",sum);
writeDAT();
}
writeDAT()
{
FILE *fp;
fp=fopen("OUT11.DAT","w");
fprintf(fp, "%d\n%d\n",cnt,sum);
fclose(fp);
}
/* 注:由于有SIX+SIX+SIX=NINE+NINE可看出SIX的3倍必须大于等于2000(右边是一个
四位数字的数可知),因此从666开始循环,再由三个数的和是个偶数(右边为一个数的
2倍可知)可循环时步长为2。再由SIX和NINE中有一个共同数字I所以得出第一个if()判
断,还有NINE中有一共同数字N所以得出第二个if()判断。*/
void countValue()
{ int i;
printf("\n");
for(i=666;i<=999;i=i+2)
if(i/10%10==(3*i/2)/100%10) /*以I为准*/
{cnt++;
sum+=i+3*i/2;
}
}
_________________________________
本人只是为了上机能通过,不追求什么算法速度,答案仅供大家参考,
void countValue()
{
int i;
cnt=0;
sum=0;
for(i=1000;i<1500;i++)
if(i/1000==i/10%10 && ((2*i)/3)*3==(i+i))
/*以N为准*/
{
cnt++;
sum+=i*5/3;
}
}