当前位置: 代码迷 >> C语言 >> 大家来讨论:^_^ ,两个程序
  详细解决方案

大家来讨论:^_^ ,两个程序

热度:48   发布时间:2007-04-12 13:51:38.0
大家来讨论:^_^ ,两个程序
个位数为6,且能被3整除的五位数共有多少个?
方法一:
main( )
{ int a,b,c,d,i;
i=0;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
for(d=0;d<=9;d++)
{
if((a+b+c+d+6)%3==0)
i++;
}
printf("%d",i);
}
二:
main( )
{ int a,b,c,d,i;
i=0;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
for(d=0;d<=9;d++)
{
if((a*10000+b*1000+c*100+d*10+6)%3==0)
i++;
}
printf("%d",i);
}

两个程序的运行结果一个是3000,一个是30001。????

[此贴子已经被作者于2007-4-12 14:21:17编辑过]


----------------解决方案--------------------------------------------------------
main( )
{ int a,b,c,d,i;
i=0;
for(a=1;a<=9;a++)
for(b=0;b<-9;b++) //这里是b<-9吗? 这样的话 -9以下的负整数不都合条件了吗?!
for(c=0;c<=9;c++)
for(d=0;d<=9;d++)
{
if((a*10000+b*1000+c*100+d*10+6)%3==0)
i++;
}
printf("%d",i);
}

----------------解决方案--------------------------------------------------------

我用VS2005测试
所得结果都是3000
请你重新测试下

for(b=0;b<-9;b++)
写错了


----------------解决方案--------------------------------------------------------

#include<stdio.h>

int main(void)
{
int i = 0;
int cnt = 0;

for (i = 1000; i < 10000; ++i)
{
if ((i * 10 + 6) % 3 == 0)
{
++cnt;
}
}

printf("%d", cnt);

return 0;
}
一个循环简洁些吧


----------------解决方案--------------------------------------------------------
你是想让讨论什么呢?
----------------解决方案--------------------------------------------------------
两种方法应该都是对的啊,但为什么结果不一样呢?
----------------解决方案--------------------------------------------------------
两个都是3000啊。。。。
----------------解决方案--------------------------------------------------------
我已经运行了n次了
tc运行的结果,一个是3000,另一个是3001
----------------解决方案--------------------------------------------------------
我用C-FREE运行的。。。都是3000
----------------解决方案--------------------------------------------------------
我换了win-tc ,运行结果还是不一样,晕
----------------解决方案--------------------------------------------------------
  相关解决方案