高手帮忙分析c程序错误

[复制链接]
2387|7
 楼主| 于言 发表于 2010-8-16 13:35 | 显示全部楼层 |阅读模式
#include "stdio.h"

main()
{
long int i;
for(i=1;(i%9==8)&&(i%7==6)&&(i%3==2)&&(i%5==4)&&(i%11=0);i++)
{
printf("%d",i);
}
}
zc3909 发表于 2010-8-16 14:46 | 显示全部楼层
晕了,分解开处理吧
heleixue 发表于 2010-8-16 14:56 | 显示全部楼层
(i=1;(i%9==8)&&(i%7==6)&&(i%3==2)&&(i%5==4)&&(i%11=0)
最后一个等号跟前面不一样这都没发现.变成赋值的去了
huangbb 发表于 2010-8-16 15:15 | 显示全部楼层
ls说得对,另外终止条件在哪儿?
 楼主| 于言 发表于 2010-8-16 15:17 | 显示全部楼层
谢谢,已经修改过,编译通过但无输出.
aresc 发表于 2010-8-16 17:34 | 显示全部楼层
当i=1时,(i%9==8)&&(i%7==6)&&(i%3==2)&&(i%5==4)&&(i%11==0)的值为FALSE,所以for循环体不会执行且直接退出了。
赤铸 发表于 2010-8-16 17:42 | 显示全部楼层
无输出那就是没碰到表达式为真的情况
单步调试,观察窗口……就是干这个用的
应该有解
(i%9==8)&&(i%7==6)&&(i%3==2)&&(i%5==4)&&(i%11==0)
=>
i = 9*n1+8 = 7*n2+6 = 3*n3+2 = 5*n4+4 = 11*n5
=>
i+1 = 9*n1 = 7*n2 = 3*n3 = 5*n4 = 11*n5+1
=>
i+1 = 5,7,9公倍数, i = 11倍数
=>
5*7*9*m1 = 315*m1 = 11*m2+1
m2 = (315*m1-1)/11 = 28*m1+(7*m1-1)/11
最小的 m1 = 8, m2=229, i=11*m2=2519

评分

参与人数 1威望 +1 收起 理由
于言 + 1 5

查看全部评分

 楼主| 于言 发表于 2010-8-16 17:59 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

214

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部