搜索
查看: 13955|回复: 15
打印 上一主题 下一主题

啊哈C【第三章】来了! 第3节-【if对while说我对你很重要】

[复制链接]
跳转到指定楼层
楼主
发表于 2012-7-7 22:23:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在上一节,我们学习了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]
沙发
发表于 2012-7-7 23:17:03 | 只看该作者
很好  学习了  
板凳
发表于 2012-7-8 11:51:53 | 只看该作者
地板
发表于 2012-7-8 23:24:22 | 只看该作者
这一节太短了
5#
发表于 2012-7-9 14:19:37 | 只看该作者
不错不错啊,继续来学习
6#
发表于 2012-7-9 14:55:38 | 只看该作者
期待下一节
7#
发表于 2012-7-9 15:05:37 | 只看该作者
比较短啊,继续学习
8#
发表于 2012-7-10 01:34:22 | 只看该作者
刚接触C。就先找到这里。。看了1-2的书籍。。很容易就上手了。。但第三章等了很久,等待期间看了很多C的入门。。都看到啊哈C同进度后就看不进了。。太依赖这里的教学方法。。。容易懂。。努力快出教程。
9#
发表于 2012-7-13 17:37:12 | 只看该作者
楼主 能不能下载啊 。。。有下载地址吗
10#
发表于 2012-7-17 22:45:31 | 只看该作者
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]
11#
发表于 2012-7-17 22:59:37 | 只看该作者
学习了{:soso_e113:}
12#
发表于 2012-7-20 21:55:02 | 只看该作者
只有第一、二章是以PDF格式发布的吗?
想下载第三章哟
13#
发表于 2012-8-7 14:42:38 | 只看该作者
很好啊
14#
发表于 2012-8-31 11:09:39 | 只看该作者
楼主,最后的程序里你的int a;多了一个!
15#
发表于 2012-12-26 18:43:00 | 只看该作者
#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;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表