啊哈磊_编程从这里起步

标题: 有个问题,不解啊,求救 [打印本页]

作者: 谁谓尔能舞    时间: 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
则表达式
  1. a%b
复制代码
的值为a/b的余数

在理解了%的用法后,易知:
  1. 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后的代码不执行,即不执行
  1. printf("%d ",a);
复制代码
一句。
同理,13%10的值为3(13/10=1……3)所以i%10==3成立

  1. 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