【C#学习笔记】【6】找出0-100以内的所有的能被3整除或者被5整除余2的数(二)(流程控制)

在上节中,我们画的那个流程图还记得么?判断部分我们会了,就差循环了,下面我会介绍三种常用的循环。

循环结构

while循环(当循环,至少我的C语言老师这么叫)

先来介绍一下语法吧,如下

while(条件表达式)
{
    //这里是循环体,当上面的条件表达式为真时,执行循环体,否则退出
}

while后面跟一个条件表达式,如果是真的话才会执行循环。执行完循环体再判断条件表达式,直到为假的时候推出循环。

例如我们输出1到100的数,例程如下:

int i=1;
while (i <= 100)
{
    Console.WriteLine(i);
    i++;
}

输出的结过如下:

//结果如下
1
2
3
...
99
100

这个例子看懂了么?我来解释一下,首先i=1执行到while时,判断i<=100,是真的,所以进入循环中,输出了i,然后i自增了1,也就是i现在等于2,然后又回到了循环的头部,判断i<=100,是真的,又进入循环体,一直到i=101的时候,条件i<=100发现是假的,结果循环就不执行了,也就结束了。

好的,相信你已经明白了,那么我们把文章题目中的问题解决了吧:

int i=0;
while (i <= 100)
{
    if (i % 3 == 0 || i % 5 == 2)
    {
        Console.WriteLine(i);
    }
    i++;
}

发现好简单的,对吧。这里我没有用else,因为只需要找出符合题意的数就行,题中没有说要处理不符合的数。顺便说一下,这里的 i 其实是一个计数器,他控制了循环的次数。下面我们介绍while的变体。

do…while(直到循环,当然我老师告我这么读)

当然,先上语法:

do
{
    //这里是循环体
}while(条件表达式);

和while差不多,就是多了个do,循环体跑到while前面了。我来解释一下执行顺序:

第一步先执行循环体,然后才去判断条件是否为真,如果为真,进行第二次循环体执行,,,直到条件为假,退出。

可以看出,这个直到循环和当循环区别,直到循环至少会执行一次循环体,而当循环不一定。当然,实际工作中,我们用的当循环更多。

这里就不举例子了。下面介绍个最常用的,可以叫做计次循环。

for循环(计次循环)

看标题,说明这个本身可以计次。来,上语法

for (int i = 0; i < length; i++)
{
    //循环体
}

解释一下过程。

for后面跟着三个语句,第一句其实是声明了一个计数器(刚才介绍了什么是计数器),第二个是计数器的长度,也就是一个条件表达式,第三句,计数器自增。

执行的流程是,首先执行第一句,初始化计数器,然后判断第二句是否为真,接着进入循环体执行,循环体执行完第一次后,执行for后面的第三句,也就是计数器的自增,然后判断条件,为真就又一次进入循环体,直到退出循环。说的有点抽象,我们用for循环来做一次1+2+3+4+…+100,代码如下:

int sum = 0;//其实这个叫累加器
for (int i = 1; i <= 100; i++)
{
    sum += i;
}
Console.WriteLine(sum);

//运行结果5050

是不是比用while简单一些呢?

这是一个最常用的循环。当然,如果你将外面的调节都写成真的,那就是死循环了,再也出不来了,下面我介绍两个关键字,可以在适当的时候跳出循环。代码如下:

int i = 0;
while (true)
{
    if (i < 10)
    {
        Console.WriteLine(i);
        i++;
    }
    else
    {
        break;
    }
}

//运行结果
0,
1
2
3
...
9

我写了个死循环,但是真正的却循环了10次,因为i>10的时候,我用了break,这个词可以跳出整个循环。

再看下面的一个例子:

int i = 0;
while (true)
{
    if (i < 10)
    {
        i++;
        continue;
    }
    if (i < 20)
    {
        Console.WriteLine(i);
        i++;
    }
    else
    {
        break;
    }

}

//结果
10
11
...
19

发现点什么没有,continue把循环后面的屏蔽掉了。

虽然前10次循环,第二个if是真的,但是并没有执行。也就是说,一旦循环中遇到了continue语句时,循环体就不再执行了,但是会进入下一圈的循环,不会像break那样把所有的循环都停掉。

总结

  1. 三种循环语句,重点掌握while循环和for循环。
  2. break和continue的区别。

练习

  1. 求级数和1/(1*3)+2/(3*5)+3/(5*7)+…+n/((2*n-1)*(2*n+1)),要求前N-1项和于前N项和的差的绝对值小于0.00001时结束。并且输出此时的n。

上篇中的练习答案

1.

int a = 5;
int b = 4;
int c = 7;
if (a + b > c && Math.Abs(a - b) < c) //取绝对值是为了防止小边减去大边
{
    Console.WriteLine("这三边能组成三角形");
}
else
{
    Console.WriteLine("这三边不能组成三角形");
}

2.3.4略(若有疑问,请发邮件给我,[email protected])

时间: 2024-10-14 05:42:12

【C#学习笔记】【6】找出0-100以内的所有的能被3整除或者被5整除余2的数(二)(流程控制)的相关文章

汇编语言-判断素数:找出前100以内的素数

1. 题目:找出前100以内素数. 2. 要求:将前100以内素数找出并显示值,要求每行显示5个素数. 先列出求100以内素数的C++代码 然后根据C++代码写汇编代码,相对来说比较容易. 1 //The program is to find the primes from 1 to 100 with C++ 2 //By Karllen 3 //time: 05/19/2014 4 5 #include <iostream> 6 int main(void) 7 { 8 9 int numb

编程实例--for循环,找出0~100之间与8有关的正整数

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><style type="text/css"&g

素数打表——找出1~100以内的素数

素数筛选法: #include <iostream> using namespace std; //素数打表模板 bool is_prime[100]; int main() { for(int i = 2;i<100;i++) { is_prime[i] = 1; } for(int i=2;i*i<100;i++){ if(is_prime[i]){ for(int j=i*i;j<100;j+=i){ is_prime[j] = 0; } } } //枚举1~100以内

【Cocos2D-X 学习笔记】Cocos2D-x 3.0+VS开发环境搭建[使用Python]

上一节讲了如何用VS自带的项目管理器创建项目,该方法只适用于cocos2d-x 2.0版本,而cocos2d-x 3.0较之前版本在命名等方面有了较大更新,而cocos2d-x3.0不再支持用VS项目管理器自建项目,而是用Python脚本创建项目. 为什么做这种改变?经过上一节讨论可以发现,使用VS创建项目有一个缺陷:新建的项目必须在cocos2d-x的解决方案中,这样会导致自己的项目和Template项目混淆:如果想单独创建一个项目的话,又需要把cocos2d-x包中的cocos2d文件整个拷

c语言:找出1到4000中,数字的各位数之和能被4整除的数有多少个?

找出1到4000中,数字的各位数之和能被4整除的数,如:745:7+4+5=16,16可以被4整除:28:2+8=10,10不能被4整除:745就是这样的特殊数字,而28不是,求:这样的数字共有多少个? 解: (1)对于4000,4+0+0+0=4,显然4000是满足条件的数字: (2)对于1到3999,我们把每个数字看成4位[][][][]的形式,第一位[]取0到3,后3位取[0][0][0]到[9][9][9],用sum表示4位数字的和: 2.1:若后3位为一个奇数,则第1位取1或3,必定可

编程之美学习之快速找出故障机器

这种问题以及方法很常见.主要是思路要开阔,讲已知的问题抽象成数学模型或者函数表达式,这正是数学建模的真谛,problem solving(解决实际问题的能力). 法一:利用计数排序,用数组记下每个ID出现的次数,然后找出出现一次的那个ID,时空复杂度都是O(N).现在如果数据量很大,那么这样的空间复杂度是无法被容忍的 法二:利用两个相同的数异或结果为0,将所有的ID都异或一遍,显然最后剩下的值,即为出现次数为1次的那个数. 法三:如果存在两个数据出现一次的情况,还是利用异或,只是得将这两个出现一

《第一行代码 android》 读书笔记:找出当前界面对应的Activity

在android开发中找出当前界面对应的Activity,步骤如下: 新建一个BaseActivity继承自Activity,然后在BaseActivity中重写onCreate()方法,通过getClass().getSimpleName()获取当前实例的类名,并通过Log打印出来.代码如下: public class BaseActivity extends Activity { protected void onCreate(Bundle savedInstanceState){ supe

算法-找出其他出现偶数次的数组中出现1次,2次,3次的数

#include <cstdio> #include <cstring> #include <algorithm> #include <map> #include <iostream> #include<vector> #include<string> #include<set> #include<unordered_set> #include<queue> #include<ma

NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

转自:http://blog.csdn.net/enjoyyl/article/details/47397505?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd01fdde4900130bc5a2751b6d1 NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0环境配置 引言 DIGITS简介 DIGITS特性 资源信息 说明 DIGI

在聚会中常玩数七的游戏,七的倍数和带有七的数字都不能说,比如14,27,28。请找出1~100的不能说的数字。

利用ES5的filter高阶函数来实现 var arr =[1,2,3,4,5,6,7,17,27,21,22,28......100], r = arr.filter(function(x){ return (x % 10 == 7|| x % 7 == 0); }); alert(r);//[7,14,17,21,27,28..........97]