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);
}
答案是:不输出任何结果。为什么?? 展开
#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);
}
答案是:不输出任何结果。为什么?? 展开
展开全部
你的程序从头到尾都没有给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]);
}
}
#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]);
}
}
追问
抱歉,你的程序我没有运行出来
非常感谢您的帮助!但是正确答案里选取最早回答,很抱歉!
展开全部
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里没有这样的数。
{
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语句里面改变用来做循环判断的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一次循环:
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的变化, 就很直观了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你每次循环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);
不知道你是不是这个意思
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)
这句的数了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询