55、下列程序的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NIN
E+NINE的个数cnt,以及满足此条件所有的SIX与NINE的和SUM。请编写函数countvalue(
)实现程序的要求,最后调用函数writedat()把结果cnt和sum,输出到文件out15.dat中

其中S,I,X,N,E各代表一个十进制数字。
#include <stdio.h>
long cnt,sum;

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;
}
}

返回南开百题目录

www.163164.cn 联系QQ:3149886