这个题哪里错了

来源:百度知道 编辑:UC知道 时间:2024/06/05 02:43:55
计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt,以及满足此条件的所有SIX与NINE的和sum。请编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件OUT027.DAT中。其中的S,I,X,N,E各代表一个十进制数字。
着重分析countValue函数就可以
#include<stdio.h>
int cnt,sum;
void writeDAT();
void countValue()
{
int S,I,X,N,E;
cnt=0;
sum=0;
for(S=1;S<=9;S++)
for(I=0;I<=9;I++)
for(X=0;X<=9;X++)
for(N=1;N<=9;N++)
for(E=0;E<=9;E++)
{
if((S*100+I*10+X)*3==(N*1000+I*100+N*10+E)*2)
{
cnt++;
sum+=S*100+I*10+X+N*1000+I*100+N*10+E;
printf("SIX=%d\tNINE=%d\n",S*100+I*10+X,N*1000+I*100+N*10+E);
}
}
}
void main()
{
cnt=sum=0;
countValue();
printf("满足条件的个数=%d\n",cnt);
printf("满足条件所有的SIX与NINE的和=%d\n",sum);
writeDAT();
}

void writeDAT()
{
FILE

将你的函数按照下面的改正:
void countValue()
{
int i=100,j; /*定义变量分别存储SIX(i)和NINE(j)*/
int a2,b4,b3,b2;
for(i=100;i<=999&&j<=9999;i++) /*当i为三位数,并且j没有增加到5位数位数时,循环继续*/
{
if(3*i%2==0)//这里增加一个条件,用来判断是不是为偶数
{
j=3*i/2; /*计算满足条件的4位数*/
a2=i%100/10;
b4=j/1000;
b3=j%1000/100;
b2=j%100/10;
if(j>=1000 && j<=9999 && a2==b3 && b4==b2)
/*如果满足条件SIX+SIX+SIX=NINE+NINE*/
{ /*即一个3位数乘3再除2余数为0,且所得的数为4位数*/
cnt++; /*统计满足条件的数的个数*/
sum+=i+j; /*求满足此条件的所有SIX与NINE的和*/
printf("six=%d,nine=%d\n",i,j);
}
}
}
}

你写的虽说效率差但是对的,答案是错的

j=3*i/2; /*计算满足条件的4位数*/ 答案,这里没判断是不是能整除