C语言编程问题,求解答

下面程序的是出结果是:#include<stdio.h>voidmain(){intn;for(n=1;n<1000;n++)if(++n%2==0)if(++n%3==... 下面程序的是出结果是:

#include<stdio.h>
void main()
{
int n;
for(n=1;n<1000;n++)
if(++n%2==0)
if(++n%3==0)
if(++n%5==0)
printf("%d\n",n);
}

答案是:不输出任何结果。为什么??
展开
 我来答
KING调皮
2013-09-12 · TA获得超过477个赞
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:180万
展开全部
你的程序从头到尾都没有给n赋值的语句,当然不会有输出了。按照你的意图做了部分修改,试试这个,希望能帮到你。
#include<stdio.h>
void main()
{
int i,n,m[100];
for(n=1;n<1000;n++)
{
if(++n%2==0),m[n]=n;
if(++n%3==0),m[n]=n;
if(++n%5==0),m[n]=n;
}
for(i=1;i<100;i++)
{
printf("%d\n",m[i]);
}
}
追问
抱歉,你的程序我没有运行出来

非常感谢您的帮助!但是正确答案里选取最早回答,很抱歉!
luorenshou
2013-09-12 · TA获得超过112个赞
知道小有建树答主
回答量:182
采纳率:36%
帮助的人:48.8万
展开全部
void main()
{
int n;
for(n=1;n<1000;n++)
{
if(n%2==0)
if(n%3==0)
if(n%5==0)
printf("%d\n",n);
}
}
这样才是求2,3,5的公倍数,你原来那样是没有结果的。
你原来要求的是n%2==0,然后n+1,再要求%3==0,然后再n+1,再要求%5==0
,1到1000里没有这样的数。
更多追问追答
追问
当n=38时,n%2==0;
n=39时,n%3==0;
n=40时,n%5==0;
追答
你这样的话要在刚刚进去FOR循环的时候n=37才可以。你有可能是在for循环里面n的值等于37,如是在if(++n%3==0)这个语句里n等于38,那照样是没有值输出的
你要这样
#include
void main()
{
int n;
for(n=1;n<1000;n++)
{
if(n%2==0)
if((n+1)%3==0)
if((n+2)%5==0)
printf("%d\n",n);
}
}
如果想从头到尾循环的话,不要在for语句里面改变用来做循环判断的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jACKy劉
2013-09-12 · TA获得超过325个赞
知道小有建树答主
回答量:240
采纳率:100%
帮助的人:241万
展开全部
  • 第一次循环:

n=1

if(++n%2==0) // ++n, n=2, 满足
  if(++n%3==0) // ++n, n=3, 满足
    if(++n%5==0) // ++n, n=4, 不满足, 继续循环

  循环体内执行了3次++, 因此, n的内部增量是3, 加上for循环的增量1, n的增量是4.

 

  • 第2次循环: 此时 n=5;

if(++n%2==0) // ++n, n=6, 满足

 if(++n%3==0) // ++n, n=7, 不满足

 

  • 第三次循环, 此时 n=8

if(++n%2==0) // ++n, n=9, 不满足

 

  • 第四次循环, 此时 n=10

if(++n%2==0) // ++n, n=9, 不满足

....

 

以后的循环都这样了...

所以一直都进不去打印的.

  

更多追问追答
追问
非常感谢您的帮助!但是正确答案里选取最早回答,很抱歉!
追答
没事, 不过你选的答案不是最优的.
简单方法, 你上机直接debug一下, watch n的变化, 就很直观了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
早行x远客
2013-09-12 · TA获得超过798个赞
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:86.7万
展开全部
你每次循环n都加了4,你的程序这个意思
if(++n%2==0){
if(++n%3==0){
if(++n%5==0){
printf("%d\n",n);
}
}
}

if(++n%2==0)

if(++n%3==0)

if(++n%5==0)
printf("%d\n",n);
不知道你是不是这个意思
追问
这是书上的原题,我不明白答案的意思,so。。。
追答
i++  :先在i所在的表达式中使用i的当前值,后让i加1
++i :让i先加1,然后在i所在的表达式中使用i的新值

if语句和for语句缺省{},只执行下面的第一句
最后n=1000,结束循环
最后一次是这样的:n = 996 执行for循环(最后一次)
整个程序是这样的
for(n=1;n<1000;n++){
if(++n%2==0) { //n = 997(n做过++n之后的值)
if(++n%3==0){ // n = 998
if(++n%5==0){ // n = 999
printf("%d\n",n);
}
}
}

}

printf("%d\n",n);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-12
展开全部

因为没有数字符合你的要求,

当n增加到8时,就不可能产生一个可以通过

if(++n%2==0)

这句的数了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式