C++学习小结之语句

一、顺序语句

二、条件,分支语句

1、if语句

关键是能够熟练运用 if的嵌套。要考虑好所有的情况。

如果说 条件是两种情况相互对应的,那么就可以只用 if 与else 。但必须要想好 每个else 跟哪个if是一对。

如果情况是相互独立的三种情况以上,那么可以选择运用if ... else if ...else。

1.if语句

if(条件)
{
满足条件的时候执行;
}

2. if(条件)

{
满足条件执行;
}
else
{
不满足条件时执行;
}

3 if(条件1)
{
满足条件1的时候执行;
}
else if(条件2)
{
不满足条件1的情况下满足条件2;
}

4.

if(条件1)
{
if(条件2)
{
既满足条件1又满足条件2的时候执行;
}
}

2、switch 语句

如果说可选的条件比较多时,选择switch语句,要比if语句效率要高。特别注意的是 case 后跟的break。

eg:

//eg.6 swtich语句   作用域
        static void Maine(string[] args)
        {
            //Console.WriteLine("你本次选择出场的英雄是:");
            Random r = new Random();
            int n = r.Next(10);

string a;

switch (n)
            {
                case 1:
                    a = "赵信";    break;
                case 2:
                    a = "寒冰射手";break;
                case 3:
                    a = "无极剑圣";break;
                case 4:
                    a = "机器人";  break;
                default:
                    a = "齐天大圣";break;
            }
            Console.WriteLine("本次选择的英雄是:"+a);
        }

三、循环语句

for循环

四要素:

初始条件,循环条件,状态改变,循环体。 执行过程:

初始条件--循环条件--循环体--状态改变--循环条件....

注意:for的小括号里面分号隔开,for的小括号后不要加分号。

利用 加断点的方式,可以更好的明白for的工作原理。

1.for循环空操作完成的实例, 输出100以内的数字

 static void Main(string[] args)
     {
       int i = 1;
       for (; ; )
       {
         if (i > 100)
         {
           break;
         }
         Console.Write(i + "\t");
         i++;
       }
       Console.ReadKey();
     }

当然你也可以用 while,if() break;的嵌套完成上述操作。

.正序和逆序的推断问题。 (折纸问题)

//eg.5 折纸问题

     static void Maine(string[] args)
     {
       //Console.WriteLine("请输入次数");
       //int n = Convert.ToInt32(Console.ReadLine());

       //int i = 0;
       //for (double sum = 0.0001; sum <= 8848.0; sum = sum * 2)
       //{
       //  i++;

       //}
       //Console.WriteLine(i);

       double sum = 0.0001;
       int z = 0;

       for (int i = 0; ; i++)
       {
         z++;
         sum = sum * 2;

         if (sum >= 8848.0)
         {
           Console.WriteLine(z);
           break;
         }
       }
     }

.应用:a.穷举法: 用循环把各种可能的情况都给走一遍,然后用if条件把满足要求的结果给筛选出来。

//eg.6 百马百石 大马驮2石,中马驮1石 小马驮0.5石

    static void Main6a(string[] args)
     {
       for (int i = 0; i <= 50; i++)
       {
         for (int j = 0; j <= 100; j++)
         {
           for (int k = 0; k <= 200; k++)
           {
             if ( (i * 2 + j * 1 + k * 0.5 == 100) && (i + j + k == 100) )
             {
               Thread.Sleep(50);
               Console.WriteLine("大马需要" + i + "头,中马需要" + j + "头,小马需要" + k + "头。");
             }
           }
         }
       }
     }

//eg.7

     static void Maing(string[] args)
     {
       for (int i = 1; i < 10; i++)
       {
         for (int j = 1; j < 5; j++)
         {
           for (int k = 1; k < 25; k++)
           {
             if (i * 5 + j * 10 + k * 25 == 50)
             {
               Console.WriteLine("50元用来买" + i.ToString() + "个牙刷," + j.ToString() + "个牙膏," + k.ToString() + "块肥皂,正好能用完。");
             }
           }
         }
       }

     }

//eg.8 有1块,2块,5块的钱若干,凑出20块钱,有几种凑法

     static void Mainh(string[] args)
     {
       int m = 0;
       for (int i = 0; i <= 20; i++)
       {
         for (int j = 0; j <= 10; j++)
         {
           for (int k = 0; k < 4; k++)
           {
             if (i * 1 + 2 * j + 5 * k == 20)
             {
               m++;
               Console.WriteLine("一共有" + m + "中方法。");
               Console.WriteLine("需要1元的" + i + "张,2元的" + j + "张,5元的" + k + "张。");
             }
           }
         }
       }
     }

//eg.9  1 () 2 () 3 ()4 = 4;问括号里我要填 (- 或 +)

     static void Maini(string[] args)
     {
       for (int i = 1; i <= 1; i += 2)
       {
         for (int j = -1; j <= 1; j += 2)
         {
           for (int k = -1; k <= 1; k += 2)
           {
             for (int l = -1; l <= 1; l += 2)
             {
               if (1 * i + 2 * j + 3 * k + l * 4 == 4)
               {
                 Console.WriteLine("i=" + i + ",j=" + j + ",k=" + k + ",l=" + l + "。");
               }
             }

           }
         }
       }
     }

//eg.10  123()45()67()8()9=100;要求在()里面填写+或-使等式成立。

     static void Maini2(string[] args)
     {
       for (int a = -1; a <= 2; a += 2)
       {
         for (int b = -1; b <= 2; b += 2)
         {
           for (int c = -1; c <= 2; c += 2)
           {
             for (int d = -1; d <= 2; d += 2)
             {
               if (123 + a * 45 + b * 67 + c * 8 + d * 9 == 100)
                 Console.WriteLine("a=" + a + ",b=" + b + ",c=" + c + ",d=" + d);
             }
           }
         }
       }
       Console.ReadKey();
     }

//eg.11 某侦查队接到一项紧急任务,要求在A.B.C,D,E,F六名队员中尽可能多的挑选若干人。A和B两人必须去一人。A和D不能同时去。A,E,F三人必须两人去。B和C都
         //去或都不去。C和D两人中去一人。若D不去,E也不去。问应叫哪几个人去?(灵活运用1与0)

     static void Mainj(string[] args)
     {
       for (int a = 0; a <= 1; a++)
       {
         for (int b = 0; b <= 1; b++)
         {
           for (int c = 0; c <= 1; c++)
           {
             for (int d = 0; d <= 1; d++)
             {
               for (int e = 0; e <= 1; e++)
               {
                 for (int f = 0; f <= 1; f++)
                 {
                   if ((a + b >= 1) && (a + d <= 1) && (a + e + f == 2) && (b + c != 1) && (c + d == 1) && (d - e >= 0))
                   {
                     Console.WriteLine("A=" + a + "B=" + b + "C=" + c + "D=" + d + "E=" + e + "F=" + f);
                   }

                 }
               }
             }
           }
         }
       }
     }
     //老师版
     static void Mainj1(string[] args)
     {
       int a, b, c, d, e, f;
       for (a = 0; a < 2; a++)
       {
         for (b = 0; b < 2; b++)
         {
           for (c = 0; c < 2; c++)
           {
             for (d = 0; d < 2; d++)
             {
               for (e = 0; e < 2; e++)
               {
                 for (f = 0; f < 2; f++)
                 {
                   if ((a + b >= 1) && (a + d <= 1) && (a + e + f == 2) && (b + c != 1) && (c + d == 1) && ((d + e == 0) || d == 1))
                   {
                     Console.WriteLine("A=" + a + "B=" + b + "C=" + c + "D=" + d + "E=" + e + "F=" + f);
                   }
                 }
               }
             }
           }
         }
       }
       Console.ReadKey();
     }

b.迭代法:有一定规律。 每次循环都是从上次运算结果中获得数据,本次运算的结果都是要为下次运算做准备。

eg1 兔生兔问题

有一对幼兔,幼兔一个月后成长为小兔,小兔一个月后成长为成兔并生下一对幼兔,问几年后有多少对兔子,其中幼兔,小兔,成兔分别是多少?

//eg.2 兔生兔问题

    //方法一
    static void Maink3(string[] args)
    {
      int syt = 1, byt = 0;
      int sxt = 0, bxt = 0;
      int sct = 0, bct = 0;

      Console.WriteLine("请输入月数:");
      int month = Convert.ToInt32(Console.ReadLine());
      int sum;

      for (int i = 1; i <= month; i++)
      {
        //赋值顺序不能变,必须按照兔子生长规律来,先有的bct才会有byt
        bct = sxt + sct;
        bxt = syt;
        byt = sxt + sct;

        //bct = sxt + sct; 这样写,必须注意他的顺序
        //bxt = syt;
        //byt = bct;

        //byt = bct;//错误的
        //bxt = syt;
        //bct = sxt + sct; 

        syt = byt;
        sxt = bxt;
        sct = bct;

        //sum = byt + bxt + bct;
      }

      sum = byt + bxt + bct;

      Console.WriteLine("过了{0}个月后,幼兔个数为{1}对,小兔个数为{2}对,成兔个数为{3}对,总共有{4}对。", month.ToString(), byt, bxt, bct,sum);

    }
    //方法二
    static void Maink4(string[] args)
    {
      int n = Convert.ToInt32(Console.ReadLine());
      int tu = 0;//要求那个月的总数
      int tu1=1, tu2=1;//倒数第一个为 tu1,倒数第二个为 tu2

      for (int i = 3; i < n;i++ )
      {
        tu = tu1 + tu2;
        tu2 = tu1;
        tu1 = tu;
      }
      Console.WriteLine(tu);

    }
    //方法三
    static void Maink5(string[] args)
    {
      Console.Write("请输入月数:");
      int m = int.Parse(Console.ReadLine());
      int ct = 0;//成兔的对数
      int xt = 0;//小兔的对数
      int yt = 1;//
      int zt = 1;//

      for (int i = 1; i <= m; i++)
      {
        if (i == 1)
        {
          ct = 0;
          xt = 0;
          yt = 1;
        }
        else
        {
          ct = xt + ct;
          xt = yt;
          yt = ct;
        }
        zt = yt + xt + ct;

        Console.WriteLine(i.ToString() + "个月后成兔的对数是:" + ct.ToString());
        Console.WriteLine(i.ToString() + "个月后小兔的对数是:" + xt.ToString());
        Console.WriteLine(i.ToString() + "个月后幼兔的对数是:" + yt.ToString());
        Console.WriteLine(i.ToString() + "个月后兔子的总对数是:" + zt.ToString());
      }
      Console.ReadLine();
    }

eg 2  100以内的所有数的和。

eg3. 求阶乘。
eg4.求年龄。
eg5.折纸。
eg6.棋盘放粮食。
eg7.猴子吃桃子。

 static void Maink(string[] args)
    {
      int sum = 1;
      for (int i = 0; i < 6; i++)
      {
        int t = (sum + 1) * 2;
        sum = t;
      }
      Console.WriteLine("桃子一共有:" + sum + "个。");
    }

eg8.落球问题。一个球从10米高度落下,每次弹起2/3的高度,问第五次弹起后的高度?

四、while 循环。一般用在一些死循环当中。

五、try catch。保护程序,避免程序出错时无法运行。

格式:

 try//快捷方式:双击 tab键
      {

      }
      catch (Exception)
      {

        throw;
      }
      finally
      {

      }

以上所述就是本文的全部内容了,希望大家能够喜欢。

(0)

相关推荐

  • 详解C++编程中标记语句与复合语句的写法

    标记语句 标签用于将程序控制权直接转交给特定语句. identifier : statement case constant-expression : statement default : statement 标签的范围为整个函数,已在其中声明该标签. 备注 有三种标记语句.它们全都使用冒号将某种标签与语句隔开.case 和 default 标签特定于 case 语句. #include <iostream> using namespace std; void test_label(int

  • 详解C++中赋值和输入输出语句的用法

    C++赋值语句讲解 C++的赋值语句具有其他高级语言的赋值语句的功能.但不同的是,C++中的赋值号"="是一个运算符,可以写成 a=b=c=d; 而在其他大多数语言中赋值号不是运算符,上面的写法是不合法的. 关于赋值表达式与赋值语句的概念.在C++中,赋值表达式可以包括在其他表达式之中,例如: if((a=b)>0) cout<<"a>0"<<endl; 按语法规定if后面的( )内是一个条件.现在在x的位置上换上一个赋值表达式&

  • C++中的while循环和for循环语句学习教程

    C++ while循环 while语句的一般形式如下: while (表达式) 语句 其作用是: 当指定的条件为真(表达式为非0)时,执行while语句中的内嵌语句.其流程图见下图. 其特点是:先判断表达式,后执行语句.while循环称为当型循环. 例:求1+2+3+-+100. #include <iostream> using namespace std; int main( ) { int i=1,sum=0; while (i<=100) { sum=sum+i; i++; }

  • 浅谈C++的语句语法与强制数据类型转换

    一个程序包含一个或多个程序单位(每个程序单位构成一个程序文件).每一个程序单位由以下几个部分组成: 预处理命令.如#include命令和#define命令. 声明部分.例如对数据类型和函数的声明,以及对变量的定义. 函数.包括函数首部和函数体,在函数体中可以包含若干声明语句和执行语句. 如下面是一个完整的C++程序: #include <iostream>//预处理命令 using namespace std; //在函数之外的声明部分 int a=3; //在函数之外的声明部分 int ma

  • C++条件语句和条件运算符的使用方法讲解

    if语句的3种形式 1) if(表达式) 语句. 例如: if(x>y) cout<<x<<endl; 这种if语句的执行过程见下图. 2) if(表达式) 语句1 else 语句2 例如: if (x>y) cout<<x; else cout<<y; 见图. 3) if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 - else if(表达式m) 语句m else 语句n 例如: if (numb

  • C++条件及循环语句的综合运用实例

    用下面公式求π的近似值.π/4≈1-1/3+1/5-1/7+-直到最后一项的绝对值小于10-7为止.根据给定的算法很容易编写程序如下: #include <iostream> #include <iomanip> #include <cmath> using namespace std; int main( ) { int s=1; double n=1,t=1,pi=0; while((fabs(t))>1e-7) { pi=pi+t; n=n+2; s=-s;

  • C++学习小结之语句

    一.顺序语句 二.条件,分支语句 1.if语句 关键是能够熟练运用 if的嵌套.要考虑好所有的情况. 如果说 条件是两种情况相互对应的,那么就可以只用 if 与else .但必须要想好 每个else 跟哪个if是一对. 如果情况是相互独立的三种情况以上,那么可以选择运用if ... else if ...else. 1.if语句 if(条件) { 满足条件的时候执行: } 2. if(条件) { 满足条件执行: } else { 不满足条件时执行: } 3 if(条件1) { 满足条件1的时候执

  • JavaScript学习小结之被嫌弃的eval函数和with语句实例详解

    前面的话 eval和with经常被嫌弃,好像它们的存在就是错误.在CSS中,表格被嫌弃,在网页中只是用表格来展示数据,而不是做布局,都可能被斥为不规范,矫枉过正.那关于eval和with到底是什么情况呢?本文将详细介绍eval()函数和with语句 eval 定义 eval()是一个全局函数,javascript通过eval()来解释运行由javascript源代码组成的字符串 var result = eval('3+2'); console.log(result,typeof result)

  • 每天一篇javascript学习小结(基础知识)

    1.字符转换 var s1 = "01"; var s2 = "1.1"; var s3 = "z";//字母'z'无法转换为数字,所以或返回NaN var b = false; var f = 1.1; var o = { valueOf: function() { return -1; } }; s1 = -s1; //value becomes numeric -1 s2 = -s2; //value becomes numeric -1.

  • hibernate一对多关联映射学习小结

    一对多关联映射  映射原理  一对多关联映射和多对一关联映射的映射原理是一致的,都是在多的一端加入一个外键,指向一的一端.关联关系都是由多端维护,只是在写映射时发生了变化. 多对一和一对多的区别 多对一和一对多的区别在于维护的关系不同: (1)多对一:多端维护一端的关系,在加载多端时,可以将一端加载上来. (2)一对多:一端维护多端的关系,在加载一端时,可以将多端加载上来. 分类 一对多单向关联映射 对象模型 从对象模型中,我们可以看出,Group持有User的一个引用.由于是单向关联,所以数据

  • Python中字典和集合学习小结

    映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表.字典和元组不能用作键 引用不存在的键会引发KeyError异常 1)字典 dict { } 空字典 { key1:value1,key2:value2,... } 字典在其它编程语言中又称作关联数组或散列表: 通过键实现元素存取:无序集合:可变类型容器,长度可变,异构,嵌套 支持的操作: len(D

  • Go语言学习之条件语句使用详解

    目录 1.if...else判断语法 2.if嵌套语法 3.switch语句 4.类型switch语句 5.fallthrough关键字使用 小结 1.if...else判断语法 语法的使用和其他语言没啥区别. 样例代码如下: // 判断语句 func panduan(a int) { if a > 50 { fmt.Println("a > 50") } else if a < 30 { fmt.Println("a < 30") } el

  • 每天一篇javascript学习小结(Array数组)

    1.数组常用方法 var colors = ["red", "blue", "green"]; //creates an array with three strings alert(colors.toString()); //red,blue,green alert(colors.valueOf()); //red,blue,green alert(colors); //red,blue,green 2.数组map()方法 var number

  • 每天一篇javascript学习小结(Boolean对象)

    创建 Boolean 对象的语法:     new Boolean(value);    //构造函数     Boolean(value);        //转换函数     参数 value 由布尔对象存放的值或者要转换成布尔值的值. 返回值     当作为一个构造函数(带有运算符 new)调用时,Boolean() 将把它的参数转换成一个布尔值,并且返回一个包含该值的 Boolean 对象.     如果作为一个函数(不带有运算符 new)调用时,Boolean() 只将把它的参数转换成

  • 每天一篇javascript学习小结(Date对象)

    1.Date.now() //Date.now() is in ECMAScript 5 //Prior to that, use +new Date() //获取当前时间 var now = (typeof Date.now == "function" ? Date.now() : +new Date()); alert("Right now: " + now); 2.Date.parse()方法 var now = new Date(); alert(now);

  • 每天一篇javascript学习小结(Function对象)

    小编两天都没有更新文章了,小伙伴们是不是等着急了,今天开始再继续我们的<每天一篇javascript学习小结>系列文章,希望大家继续关注. 1.Function  函数调用(类似call方法) function callSomeFunction(someFunction, someArgument){ return someFunction(someArgument); } function add10(num){ return num + 10; } var result1 = callSo

随机推荐