zoukankan      html  css  js  c++  java
  • c++基础(三)

    选择结构

    if语句:

    if语句的语法形式

    if (表达式语句

    例:if (x > y) cout << x;

    if (表达式语句1 else 语句2

    例:if (x > y) cout << x;

    else cout << y;

    if (表达式1) 语句1
    else if (
    表达式2) 语句2
    else if (
    表达式3) 语句3
               …
    else 
    语句 n

    2-2输入一个年份,判断是否闰年

    #include <iostream>
    using namespace std;
    int main() { int year; bool isLeapYear; cout << "Enter the year: "; cin >> year; isLeapYear = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)); if (isLeapYear) cout << year << " is a leap year" << endl; else cout << year << " is not a leap year" << endl; return 0; }

    嵌套的if结构

    语法形式:

    if(   )

    if(   ) 语句 1

    else 语句 2

    else

    if(   ) 语句 3

    else  语句 4

    注意:语句 1、2、3、4 可以是复合语句;每层的 if 与 else 配对,或用 { } 来确定层次关系。

    2-3:输入两个整数,比较两个数的大小

    #include<iostream>
    using namespace std;
    
    int main() {
              int x, y;
              cout << "Enter x and y:";
              cin >> x >> y;
              if (x != y)
                {
                       if (x > y)
                                 cout << "x > y" << endl;
                       else
                }
                                 cout << "x < y" << endl;
              else{
                       cout << "x = y" << endl;
                    }
              return 0;
    }                    

    switch语句

    语法形式

    switch  (表达式)

         {  case    常量表达式 1:语句1

            case   常量表达式 2:语句2

            case   常量表达式 n:语句n

            default :             语句n+1

         }

    执行顺序: 以case中的常量表达式值为入口标号,由此开始顺序执行。因此,每个case分支最后应该加break语句。

    注意: case分支可包含多个语句,且不用{ }。

    表达式、判断值都是int型或char型。

    如果若干分支执行内容相同可共用一组语句。

    2-4:输入一个06的整数,转换成星期输出

    #include<iostream>
    #include<bitset>
    using namespace std;
    int main()
    {
        int day;
        cin >> day;
        switch (day)
        {
        case 0: cout << "Sunday" << endl; break;
        case 1: cout << "Monday" << endl; break;
        case 2: cout << "Tuesday" << endl; break;
        case 3: cout << "Wednesday" << endl; break;
        case 4: cout << "Thursday" << endl; break;
        case 5: cout << "Friday" << endl; break;
        case 6: cout << "Saturday" << endl; break;
        default:
            cout << "Day out of range Sunday .. Saturday" << endl;   break;
        }
        return 0;
    }

    2-4:编写一个共用执行语句的分支

    #include<iostream>
    using namespace std;
    
    int main()
    
    {
           int i;
           cin >> i;
           switch (i)
           {
           case 0:
           case 1:
           case 2:
                  cout << "Hello world!" << endl; break;
           default:
                  cout << "Hello c++!!!" << endl; break;
           }
           //当i=0,1,2时,都有相同的输出。
           return 0;
    }

    while语句

    语法形式:while  (表达式)  语句

              

    执行顺序:先判断表达式的值,若为 true 时,执行语句。

    例2-5 求自然数1~10之和

    #include <iostream>
    using namespace std;
    
    int main() {
      int i = 1, sum = 0;
      while (i <= 10) {
          sum += i;  //相当于sum = sum + i;
          i++;
      }
      cout << "sum = " << sum << endl;
              return 0;
    }

    do-while语句

    do-while 语句的语法形式

    do   语句     // 可以是复合语句,其中必须含有改变条件表达式值的语句。

    while (表达式)

    执行顺序:先执行循环体语句,后判断条件。表达式为 true 时,继续执行循环体。

    2-6:输入一个数,将各位数字翻转后输出

    #include <iostream>
    using namespace std;
    
    int main() 
    {
        int n, right_digit, newnum = 0;
        cout << "Enter the number: ";
        cin >> n;
        cout << "The number in reverse order is  ";
        do {
            right_digit = n % 10;
            cout << right_digit;
            n /= 10;  /*相当于n=n/10*/
        } while (n != 0);
        cout << endl;
        return 0;
    }

    2-7do-while语句编程,求自然数1~10之和

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int i = 1, sum = 0;
        do 
        {
            sum += i;
            i++;
        }
        while (i <= 10);
        cout << "sum = " << sum << endl;
        return 0;
    }

    对比下面的程序

    程序1

    #include <iostream>
    using namespace std;
    int main()
    {
        int i, sum = 0;
        cin >> i;
        while (i <= 10)
        {
            sum += i;
            i++;
        }
        cout << "sum= " << sum
            << endl;
        return 0;
    }

    程序2:

    #include<iostream>
    using namespace std;
    
    int main()
    {
        int i, sum = 0;
        cin >> i;
        do 
        {
            sum += i;
            i++;
        } 
        while (i <= 10);
        {    
            cout << "sum=" << sum << endl; 
        }
        return 0;
    }

    for语句

    for语句语法形式:

     

    for语句的另一种形式:范围for语句:

        for  (声明:表达式)

            语句

    自定义类型

    类型别名:为已有类型另外命名

    typedef  已有类型名  新类型名表

    例:

    typedef double Area, Volume;

    typedef int Natural;

    Natural i1,i2;

    Area a;

    Volume v;

    using  新类型名 = 已有类型名;

    例:using Area = double;using Volume = double;

    枚举类型

    定义方式:将全部可取值一一列举出来。

    语法形式:enum  枚举类型名  {变量值列表};

    例:enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT};

    默认情况下SUN=0,MON=1,TUE=2,......,SAT=6

    C++包含两种枚举类型:

    不限定作用域枚举类型:enum  枚举类型名  {变量值列表};

    限定作用域的enum类将在第4章介绍。

    不限定作用域枚举类型说明:

    枚举元素是常量,不能对它们赋值

    例如有如下定义:enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT};不能写赋值表达式:SUN = 0,枚举元素具有默认值,它们依次为: 0,1,2,......。

    也可以在声明时另行指定枚举元素的值,如:enum Weekday{SUN=7,MON=1,TUE,WED, THU,FRI,SAT};枚举值可以进行关系运算。

    整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。

    枚举值可以赋给整型变量。

    2-11

    设某次体育比赛的结果有四种可能:胜(WIN)、负(LOSE)、平局(TIE)、比赛取消(CANCEL),编写程序顺序输出这四种情况。

    分析:

    比赛结果只有四种可能,可以声明一个枚举类型。

     1 #include <iostream>
     2 using namespace std;
     3 
     4 enum GameResult { WIN, LOSE, TIE, CANCEL };
     5 int main() {
     6     GameResult result;
     7     enum GameResult omit = CANCEL;
     8     for (int count = WIN; count <= CANCEL; count++)
     9     {
    10         result = GameResult(count);
    11         if (result == omit)
    12         { 
    13             cout << "The game was cancelled" << endl;
    14         }
    15         else
    16         {
    17             cout << "The game was played ";
    18             if (result == WIN)
    19             {
    20                 cout << "and we won!";
    21             }
    22             if (result == LOSE)   
    23             {
    24                 cout << "and we lost.";
    25             }
    26             cout << endl;
    27         }
    28     }
    29     return 0;
    30 }

    auto类型与decltype类型

    auto:编译器通过初始值自动推断变量的类型

    例如:auto val = val1 + val2;

    如果val1+val2是int类型,则val是int类型;

    如果val1+val2是double类型,则val是double类型。

    decltype:定义一个变量与某一表达式的类型相同,但并不用该表达式初始化变量

    例如:decltype(i) j = 2;

  • 相关阅读:
    POJ1486 Sorting Slides 二分图or贪心
    POJ2060 Taxi Cab Scheme 最小路径覆盖
    POJ3083 Children of the Candy Corn 解题报告
    以前的文章
    POJ2449 Remmarguts' Date K短路经典题
    这一年的acm路
    POJ3014 Asteroids 最小点覆盖
    POJ2594 Treasure Exploration 最小路径覆盖
    POJ3009 Curling 2.0 解题报告
    POJ2226 Muddy Fields 最小点集覆盖
  • 原文地址:https://www.cnblogs.com/puheng/p/9250356.html
Copyright © 2011-2022 走看看