永发信息网

一道程序题,看哪不对?

答案:2  悬赏:50  手机版
解决时间 2021-07-21 14:32

#include<stdio.h>
void main()
{
int a,b,c,d,e,i,j,k,l,m,x,count=0,f=0;
printf("There are following possble result:\n");
for(a=1;a<=23;a++)
for(b=1+a;b<=23-a;b++)
for(c=1+b;c<=23-a-b;c++)
for(d=1+c;d<=23-a-b-c;d++)
{
f=1;
if((e=23-a-b-c-d)>d)
for(f=0,x=1;x<24&&!f;x++)
for(f=0,i=0;i<2&&f;i++)
for(j=0;j<2&&f;j++)
for(k=0;k<2&&f;k++)
for(l=0;l<2&&f;l++)
for(m=0;m<2&&f;m++)
if(x==a*i+b*j+c*k+d*l+e*m) f=0;
if(!f) printf("[%d]: %d %d %d %d %d\n",++count,a,b,c,d,e);
}
}

见加粗的那条for(f=0,i=0;i<2&&f;i++) 为什么f=0,后面的循环语句还能运行呢?也就是该程序还有运行结果!

最佳答案
for(f=0,i=0;i<2&&f;i++) 后面没有{}这个语句没起到限定作用
全部回答

我单步跟踪执行了下 ,发现从你加粗的地方开始的for语句根本没执行。

我把这部分内容注释掉发现,执行的结果和没注释的时候是一样的。

所以这段程序的问题是被注释掉的部分没起到作用。那么从程序中第一次对f 赋值为1和可见的最后一次对f 赋值为0,分析我觉得正确的程序应该是这样的:

虽然这次之前被注释掉的地方可以有效执行了,但是结果和没执行仍然一样。

x==a*i+b*j+c*k+d*l+e*m 对于这个条件我还没能理解,不过这应该是理解这段代码的关键。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
现在11月19日凌晨,炫舞怎么不能进了?
男人没和你分手时候追别人,你放手了,他却追
我是阳历1989年3月5号出生,请问我是什么星座
晚上经常做噩梦怎么办啊?
伍家岗区宜昌菲格美甲地址有谁知道?有点事想
11月15号旋舞心动是双倍么
雨林蝎和智利红蜘蛛哪个好养些
我是女孩1992年属猴的阴历六月十九(阳历七月
哪有海马3的DVD
谁可以告诉我在哪里可以学DS
息县信阳果唯伊(谯和苑店)地址在哪,我要去那
有谁有梦幻西游不玩的好、100级以上的有吗?
急求AU5.7封包 有的给个
温州船舶技术中遇到的人才问题?
请问哪里的冬笋开始收购了?收购价多少钱一斤
推荐资讯
冬季你喜欢听什么歌?
技嘉WM700在淘宝网卖多少钱?
芦淞区株洲芦淞区枫溪街道栗塘村卫生室在什么
主题关于纸书好还是电子书好?的辩论会
没房没车没钱这种男人你会嫁吗`?
香蕉可以煮着吃吗?
50548608这个QQ号值多少钱???
7棵树中六行,每行3棵,怎样种?请画图
赛尔号象征勇士的新精灵是什么
东莞大朗那里有二手手机市场?
怎样才能看懂对方心里在想什么?
驾校报名需要带上什么,去驾校报名需要带什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?