啊哈磊_编程从这里起步
标题:
有个问题,不解啊,求救
[打印本页]
作者:
谁谓尔能舞
时间:
2014-1-13 16:39
标题:
有个问题,不解啊,求救
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
a=1;
while (a<=100)
{
if(a%3!=0)
printf("%d ",a);
a=a+1;
}
system("pause");
return 0;
}
注意看这句:if(a%3!=0)
这句是判断a是不是3的倍数,如果成立才执行printf("%d ",a);
但是书上说这段代码的意思是 如果每次遇到3的倍数就不输出,但是if成立输出的不就是3的倍数吗?
还有,判断一个数是否为3的倍数或者末尾含3的树为什么是 if (i%3==0 || i%10==3) 呢?比如 13%3 这两个都不成立啊?为什么呢?
作者:
981013
时间:
2014-1-13 16:39
本帖最后由 981013 于 2014-1-14 13:50 编辑
%运算符:用法:设有两个int型
(只能是int型)
数据a和b
则表达式
a%b
复制代码
的值为
a/b的余数
。
在理解了%的用法后,易知:
if(a%3!=0)
复制代码
这句意为:
若 a除3的余数 不等于 0 则执行if后语句
由于3的倍数除3的余数都为0(如6/3=2……0,即6%3=0、9/3=3……0,即9%3=0),因此在a为3的倍数时if后的代码不执行,即不执行
printf("%d ",a);
复制代码
一句。
同理,13%10的值为3(13/10=1……3)所以i%10==3成立
if (i%3==0 || i%10==3)
复制代码
一句可理解为:
若 i除3的余数 等于 0(即i为3的倍数) 或者 i除10的余数 等于 0(即i末位是3) 则执行if后语句
因此可以通过。
作者:
4399APPLE
时间:
2014-1-13 19:41
if语句成立时输出的不是3的倍数,你弄反了
!=是不等于的意思
13%10==3啊?
你看走眼了吧?
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/)
Powered by Discuz! X3.2