- 注册时间
- 2004-10-13
- 最后登录
- 2019-5-15
⑧专业
*永恒国度*
- 积分
- 14145

|
战士们做了一个靶子,靶子分五格,中心是39环,从左起顺时针是23、17、24 、16。
战士小李射了若干枪,每一次都击中靶子,并且正好是100环。问他打了几枪?每枪
多小环?(靶子趣谈.c) (答案:6枪,环数为17,17,17,17,16,16。)
答案是这样:
main()
{int i,j,k,l,m,n;
for (i=0;i<3;i++) /*打中39环的枪数*/
for (j=0;j<=4;j++) /*打中24环的枪数*/
for (k=0;k<=4;k++) /*打中23环的枪数*/
for (l=0;l<=6;l++) /*打中17环的枪数*/
{ n=100-i*39-j*24-k*23-l*17; /*余下的就为16环的枪数*/
if (n%16==0)
{ m=n/16;
printf("打中39环%d个,24环%d个,23环%d个,17环%d个,16环%d个,共打了%d枪.",
i,j,k,l,m,i+j+k+l+m);
exit(0);
}
}
getch();
}
----------------------------------------------------------------------------------------------------------------------
但我改了下:
main()
{int i,j,k,l,m,n;
for (i=0;i<3;i++) /*打中39环的枪数*/
for (j=0;j<=4;j++) /*打中24环的枪数*/
for (k=0;k<=4;k++) /*打中23环的枪数*/
for (l=0;l<=6;l++) /*打中17环的枪数*/
{
if((n=100-i*39-j*24-k*23-l*17)>=0) /*余下的就为16环的枪数*/
if (n%16==0)
{ m=n/16;
printf("打中39环%d个,24环%d个,23环%d个,17环%d个,16环%d个,共打了%d枪.",
i,j,k,l,m,i+j+k+l+m);
}
}
}
但这样写好像也不能准确确定 五环的数加起来就刚刚等于100 ,但它确能输出正确答案.
然后我再这样写
-------------------------------------------------------------------------------------------------
main()
{int i,j,k,l,m,n;
for (i=0;i<3;i++) /*打中39环的枪数*/
for (j=0;j<=4;j++) /*打中24环的枪数*/
for (k=0;k<=4;k++) /*打中23环的枪数*/
for (l=0;l<=6;l++) /*打中17环的枪数*/
{
n=100-i*39-j*24-k*23-l*17
if((n+i*39+j*24+k*23+l*17==100 ) && n>=0) /*余下的就为16环的枪数*/
if (n%16==0)
{ m=n/16;
printf("打中39环%d个,24环%d个,23环%d个,17环%d个,16环%d个,共打了%d枪.",
i,j,k,l,m,i+j+k+l+m);
}
}
}
首先第一个是输不出来的,第二个感觉它的判断条件并不充分,但为什么也能输出正确答案呢? |
|