C语言的一道题目,看着都觉得不对,我觉得只要是7的倍数又不能被2、3整除的数都会输出啊,但是结果不是。

main()
{int x,i;
for(i=1;i<=100;i++)
}
if (++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d",x);
}
printf("/n");
}
输出结果是什么?答案是28 70 哪位高手能告诉我这个结果怎么算出来的,为什么7不行,为什么我的想法是错的。

第1个回答  2013-03-19
3个if语句,x先做自增操作再做取余操作的。

28的结果这样来的:
进第一个if前,x=25
if (++x%2==0):x=26,26%2=0判断成立,进入判断语句:
if(++x%3==0):x=27,27%3=0判断成立,进入判断语句:
if(++x%7==0):x=28,28%7=0判断成立,进入打印语句。
70的结果同上分析。
另外,在进入第一个if语句前,x-1的值一定是3的倍数,因为x初始为1,循环有3个++x,加了3次.
第2个回答  2013-03-19
这里有3个if条件,要先满足外层的if条件才能进入下一层if条件,并且每一个x在经过一判断条件都会自加1,这个是由于语句++x
所以我们应该知道,最后满足条件输出的x,要满足3个条件:
x能被7整除
x-1能被3整除
x-2能被2整除

28和70都符合这个条件,而在计算出下一个符合以上三个条件的数之前,i已经大于100了,所以只有28和70

再来看你说的7,能被7整除,7-1能被3整除,但是7-2=5不能被2整除,所以不满足条件了追问

谢谢您的耐心解答,那这个题要得出结果不是得从i=1开始依次试100次才能算出所有的符合条件的结果,好大的计算量。

追答

对呀,这正是计算机的优势,它的计算速度远胜人,像这样复杂度的计算,一秒也不要就能算好。
希望你采纳我哈

本回答被网友采纳
第3个回答  2013-03-19
这个... 首先不得不说,兄弟你敲得太粗糙了
1. 输出结果是28 70 112 154 196
2. 再有就是++x的意思就是在执行这条语句之前,先将x加1,所以从26开始,能被2整除,加1,能被3整除,再加1,能被7整除,所以输出28。后面的也是一个道理
第4个回答  2013-03-19
首先质疑一下,纯C语言,x变量在没有初始化的情况下使用是存在风险的!
你的答案显示了你使用的系统将局部变量初始化为0了。
将上面问题转换成数学问题就是,设x符合条件,x∈【3,300】因为i∈【1,100】,x每次循环增加3。
1) x%7 = 0;
2) (x-1)%3 = 0;即x%3 = 1;
3) (x-2)%2 = 0;即x%2 = 0;

7%2 = 1,所以直接就被排除了!
第5个回答  2013-03-19
for(i=1;i<100;i++)
if(i%7==0 && i%2!=0 && i%3!=0)
printf("%d ", i);

这个比你的简单

C语言的一道题目,看着都觉得不对,我觉得只要是7的倍数又不能被2...
if(++x%7==0):x=28,28%7=0判断成立,进入打印语句。70的结果同上分析。另外,在进入第一个if语句前,x-1的值一定是3的倍数,因为x初始为1,循环有3个++x,加了3次.

c语言输入一个数,如果是7的倍数,则输出这个数的立方,否则输出这个数的平...
接下来,使用 if 条件语句判断输入的数是否是 7 的倍数。如果是,则输出这个数的立方,即 x * x * x;如果不是,则输出这个数的平方,即 x * x。最后,程序使用 return 语句结束,并返回值 0。

...则输出该数为7的倍数否则输出该数不是7的倍数。
我的 c语言输入一位数若该数被7整除,则输出该数为7的倍数否则输出该数不是7的倍数。  我来答 1个回答 #热议# 你觉得同居会更容易让感情变淡吗?更快乐221 2016-04-25 · 超过40用户采纳过TA的回答 知道小有建树答主 回答量:92 采纳率:50% 帮助的人:34.6万 我也去答题访问个人页 关注 展开...

遇到7的倍数就不能运行了 心塞啊 C语言 程序
if(a%7==0) d=1;if(b==1&&c==1&&d==1)

能被7整除的数 (C语言)
这个数去掉个位上的数后,再减去这个个位数的两倍,所得的差(可以是正数,负数或零)若能被7整除,这个数就能被7整除,所得之差若看不出能否被7整除的话,就以此法,再来看看……如2366,236-6*2=224;224也看不出能否被7整除的话,就22-4*2=14……这下懂了吧?不懂……...

帮助编写一个程序,判断任意输入的整数是否是7的倍数?
void main() \/\/c语言程序 { int n;printf("请输入一个数\\n");scanf("%d",&n);if(n%7) \/\/取余运算.如果n被7整除结果为0,否则为正数 printf("不能");else printf("能");} include <iostream.h> void main(){ \/\/c++程序 int n;cout<<"请输入一个数"<<endl;cin>>n...

c语言 所有同时被3 ,5 ,7整除的三位数
在 C 语言中,可以通过以下代码实现输出所有同时被 3、5、7 整除的三位数:include <stdio.h> int main() { for(int i=100; i<=999; i++) { if(i%3== && i%5== && i%7==) { printf("%d\\n", i);} } return ;} 代码中,for 循环从 100 开始循环到 999,依次判断每个三...

c语言求1到200之间即是2的倍速又是7的倍数的数字
include <stdio.h> int main(){ int i;for(i=1;i<200;++i)if(i%2==0&&i%7==0)printf("%d\\n",i);return 0;}

c语言题 判断输入的整数是否是2或3或4的倍数
scanf("%a",&a);这个里面改成%d,你输入进去的数字是整形的,%a还没有这种类型的数据 想无限循环这样就可以了 while(true){ printf("输入一个整数:");scanf("%d",&a);if (0==a%2||0==a%3||0==a%4){ printf("是2或3或4的倍数\\n");} } ...

...找出1~n中含有数字7或7的倍数的所有的数字??? 求解
include <stdio.h> int main(){ int n,i,j;scanf("%d",&n);for(i=1;i<=n;i++){ if(i%7==0){ printf("%d ",i);} else { j=i;while(j!=0){ if(j%10==7){ printf("%d ",i);break;} j=j\/10;} } } printf("\\n");return 0;} ...

相似回答