我有一道c语言的题,不知道是否有解?

来源:百度知道 编辑:UC知道 时间:2024/06/29 21:22:07
我在一本习题集上看到了一个问题,就是有a,b,c,3个为知数,他们的范围都是在1~100之间,让你在1~300之中求得一个数k,使a+b+c<=k,并且4a>=k,6b>=k,8c>=k;求出各种可能的a,b,c,k.
练习册上没有答案,我反复做了好几次,都是没有结果,不知道是我做错了,还是没解,希望大家帮助一秒,我的原程序:

main()
{int a,b,c,k;
for(k=1;k<=1000;k++)
{for(a=1;a<30;a++)
{for(b=1;b<=30;b++)
{for(c=1;c<=30;c++)
if((a+b+c<=k)&&(2*a>=k)&&(3*b>=k)&&(3*c>=k))
printf("a=%d,b=%d,c=%d",a,b,c);}}}}
我在一本习题集上看到了一个问题,就是有a,b,c,3个为知数,他们的范围都是在1~100之间,让你在1~300之中求得一个数k,使a+b+c<=k,并且4a>=k,6b>=k,8c>=k;求出各种可能的a,b,c,k.
练习册上没有答案,我反复做了好几次,都是没有结果,不知道是我做错了,还是没解,希望大家帮助一秒,我的原程序:

main()
{int a,b,c,k;
for(k=1;k<=300;k++)
{for(a=1;a<100;a++)
{for(b=1;b<=100;b++)
{for(c=1;c<=100;c++)
if((a+b+c<=k)&&(2*a>=k)&&(3*b>=k)&&(3*c>=k))
printf("a=%d,b=%d,c=%d",a,b,c);}}}}
原来的程序做了点改动,这是原程序了。

判断条件都错了
按题意 程序应该是:
main()
{int a,b,c,k;
for(k=1;k<=300;k++)
{for(a=1;a<100;a++)
{for(b=1;b<=100;b++)
{for(c=1;c<=100;c++)
if((a+b+c<=k)&&(4*a>=k)&&(6*b>=k)&&(8*c>=k))
printf("a=%d,b=%d,c=%d",a,b,c);}}}}

1.题目不是说"a,b,c 3个未知数的范围都是在1~100之间"嘛
那么你那句应该是for(a=1;a<=100;a++)
2.题目不是说"4a>=k,6b>=k,8c>=k"嘛
那么应该是这样的啊
if((a+b+c<=k)&&(4*a>=k)&&(6*b>=k)&&(8*c>=k))

满足题目条件的a,b,c和k有很多

最后的程序可以是这样的
main()
{int a,b,c,k;
for(k=1;k<=300;k++)
{for(a=1;a<=100;a++)
{for(b=1;b<=100;b++)
{for(c=1;c<=100;c++)
if((a+b+c<=k)&&(4*a>=k)&&(6*b>=k)&&(8*c>=k))
printf("a=%d,b=%d,c=%d,k=%d\n",a,b,c,k);}}}}