啊哈磊_编程从这里起步

标题: 啊哈C【第三章】来了! 第3节-【if对while说我对你很重要】 [打印本页]

作者: admin    时间: 2012-7-7 22:23
标题: 啊哈C【第三章】来了! 第3节-【if对while说我对你很重要】
在上一节,我们学习了while循环的基本使用方法,但是我们遗留了一个问题:如何让计算机输出1~100以内除去所有3的倍数的数。

通过第二节的内容我们可以很容易的写出让计算机一次打印1,2,3……一直到100,只需要让变量a从1开始每次增加1就可以了。如果想每次遇到3的倍数就不打印的话,我们只需要每次打印之前对变量a进行一个判断就OK了,当变量a的值是3的倍数时就不打印,否则就打印。那么怎么来判断变量a的值是否是为3的倍数呢?这就需要我们在第二章学习的if语句。我们只需要通过if语句来判断变量a的值除以3的余数是否为0就可以了。如果余数为不为0,说明变量a中的值不是3的倍数,就将变量a中的值打印出来;否则就说明变量a中的值是3的倍数,不能打印。

那么怎么解决变量a的值除以3的余数是否为0呢,我需要使用“%”这个运算符,在第二章中我们介绍过,读作mod,也可以叫做取模,作用就是获取余数。这里另外说一下%这个运算法的左右两边必须为整数。而/这个符号表示除号,作用是获取商,/这个运算符的左右两边既可以是整数也可以是小数。好了废话少说,代码如下
[mw_shl_code=c,true]#include <stdio.h>
int main()
{
    int a;
    a=1;
    while(a<=100)
    {
          if(a%3!=0)
                printf("%d",a);
  a=a+1;
}
sleep(5000);
return 0;
}
[/mw_shl_code]
赶快去尝试一下吧。

如果要输出1~100之间是能被3整除但是不能被5整除的所有数,又该怎么办?

那说明这个数是3的倍数但不是5的倍数,也就是需要变量a除以3的余数为0但除以5的余数不为0。这里逻辑关系“并且”在C语言中的表示方法我们在第二章已经学习过,用“&&”表示,代码如下
[mw_shl_code=c,true]#include <stdio.h>
int main()
{
    int a;
    a=1;
    while(a<=100)
    {
          if(a%3==0 && a%5!=0)
                printf("%d",a);
  a=a+1;
}
sleep(5000);
return 0;
}

[/mw_shl_code]
更复杂的来啦!

你有没有和同学玩过一个游戏:大家围成一圈从1开始报数,但是每逢遇到7的倍数或者末尾含7的数例如7,14,17,21,27,28等等,就要拍手并不能报出,谁出错了,谁就要受到惩罚,哈哈。
现在我想知道1~100以内有多少想这样的数,请你写这样一个程序,输出1~100之间所有是7的倍数或者末尾含7的数。

同样很简单,我们同样参照以往的程序,利用while循环,让变量a从1到100,不过我们每次在输出变量a的值的之前需要对变量a进行判断。根据题目的要求,如果变量a的值是7的倍数或者变量a的值末尾含有7就打印出来。判断一个变量是否为7的倍数我们已经很熟悉了,只需要判断变量a除以7的余数是否为0就可以,即如果a%7==0这个关系表达式成立就输出。那怎么解决变量a的值末尾是否含7呢?我们仔细想一想就会发现末尾含7的数其实就是这个数的个位为7,也就是这个数除以10的余数为7。哈哈,有了这个性质就好办了,即a%10==7这个关系表达式成立的时候也输出就OK啦。

好了现在有两个关系表达式a%7==0和a%10==7,分别表示这个数是否为7的倍数和末尾是否含7。这两个式子是或者的关系,只有一个成立,就将这个数输出。这里逻辑关系“或者”在C语言中的表示方法我们在第二章也学习过,用“||”表示,代码如下
[mw_shl_code=c,true]#include <stdio.h>
int main()
{
int a;
int a;
a=1;
while(a<=100)
{
if(a%7==0 || a%10==7)
                printf("%d",a);
   a=a+1;
}
sleep(5000);
return 0;
}

[/mw_shl_code]

作者: ahac_wuleicity    时间: 2012-7-7 23:17
很好  学习了  
作者: jun2851151    时间: 2012-7-8 11:51

作者: williamdocs    时间: 2012-7-8 23:24
这一节太短了
作者: nmjkl    时间: 2012-7-9 14:19
不错不错啊,继续来学习
作者: 570832226    时间: 2012-7-9 14:55
期待下一节
作者: LDZ2012    时间: 2012-7-9 15:05
比较短啊,继续学习
作者: felipecheung    时间: 2012-7-10 01:34
刚接触C。就先找到这里。。看了1-2的书籍。。很容易就上手了。。但第三章等了很久,等待期间看了很多C的入门。。都看到啊哈C同进度后就看不进了。。太依赖这里的教学方法。。。容易懂。。努力快出教程。
作者: azuo    时间: 2012-7-13 17:37
楼主 能不能下载啊 。。。有下载地址吗
作者: gonggu8181    时间: 2012-7-17 22:45
if对for说我对你很重要[mw_shl_code=c,true]#include <stdio.h>
int main( )
{
    system("color 0a");
    int a,i;
    a = 1;
    for(;a <= 100;a++)
    if(a%3 == 0&&a%5 != 0) printf("%d\n",a);
    sleep(5000);
    return 0;
}[/mw_shl_code]
作者: 飞龙在天    时间: 2012-7-17 22:59
学习了{:soso_e113:}
作者: fuhz2009    时间: 2012-7-20 21:55
只有第一、二章是以PDF格式发布的吗?
想下载第三章哟
作者: 1440802022    时间: 2012-8-7 14:42
很好啊
作者: headfang    时间: 2012-8-31 11:09
楼主,最后的程序里你的int a;多了一个!
作者: wywybp2    时间: 2012-12-26 18:43
#include <stdio.h>
int main()
{
int a;
int a;       ---------------是不是多写了一个,提示悲剧了
a=1;
while(a<=100)
{
if(a%7==0 || a%10==7)               
printf("%d",a);   
a=a+1;
}
sleep(5000);
return 0;
}
作者: dreamingdreams    时间: 2013-7-7 21:39
学习了…感谢分享




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2