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;

猜你喜欢

转载自www.cnblogs.com/puheng/p/9250356.html
今日推荐