Part2 数据类型与流程控制

Posted LeoSirius

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Part2 数据类型与流程控制相关的知识,希望对你有一定的参考价值。

2.1第二章导论


 

2.2C++的特点和程序实例
C++的发展和起源:
  从C语言发展演变而来,最初被称为“带类的C”
  83年正式取名C++
  98年成ISO批准为国际标准
  03年第二版
  11年第三版C++11
  14年C++14,作为C++11的小扩展,主要提供漏洞修复和小改进

C++的特点:
  兼容C,支持面向过程
  支持面向对象
  支持泛型程序设计

//2-1.cpp
#include<iostream>
using namespace std;
int main(){
    cout<<"Hello!"<<endl;
    cout << "Welcome to c++!" << endl;
    return 0;
}

 


 

2.3基本数据类型、常量、变量
字符串类型:
  有字符串常量,基本类型中没有字符串变量。
字符串变量的表示:
  采用字符数组存储字符串(C风格的字符串)
  标准C++类库中的string类(C++风格的字符串)

2.4算数运算与复制运算
2.5实验二:简单的程序设计(上)

 

 


2.6数据的输入和输出

I/O流:
  在C++中,将数据从一个对象到另一个对象的流动抽象为“流”。流在使用前要建立,使用后要被删除。
  数据的输入与输出是通过I/O流来实现的,cin和cout是预定义的流类对象。

预定义的插入和提取运算符:
  <<是预定义的插入符,作用在流类对象cout上变可以实现向标准输出设备输出。
  >>是预定义的提取符,从键盘提取数据放到相应的变量中。

常用I/O流类库的操纵符:
  endl 插入换行符,并刷新流
  ends 插入空字符
  setprecision(int) 设置浮点数的小数位数(包括小数点)
  setw(int) 设置域宽
  例:cout << setw(5) << setprecision(3) << 3.1415; (setw和setprecision要引入头文件iomanip)

 

2.7if语句
2.8switch语句

 


2.9循环结构

//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;
    }while(n != 0);
    cout << endl;
    return 0;
}

//2-8输入一个整数,求出他的所有因子
#include<iostream>
using namespace std;
int main(){
    int n;
    cout << "Enter a positive integer:";
    cin >> n;
    cout << "Number " << n << " Factors ";
    for(int k = 1; k <= n; k++)
        if(n%k == 0)
            cout << k << " ";
    cout << endl;
    return 0;
}

//2-10输入一系列整数,统计出正整数的个数i和负整数的个数j,读入0则结束
#include<iostream>
using namespace std;
int main(){
    int i = 0, j = 0, n;
    cout << "Enter some integers please(enter 0 to quit):" << endl;
    cin >> n;
    while(n != 0){
        if(n > 0) i += 1;
        if(n < 0) j += 1;
        cin >> n;
    }
    cout << "Count of positive integers: " << i << endl;
    cout << "Count of negative integers: " << j << endl;
    return 0;
}

 


2.10自定义类型
类型别名:
1 typedef 已有类型名 新类型名表 (从C继承而来)
  typedef double Area, Volume;
  typedef int Natural;
  Natural i1,i2;
  Area a;
  Volume v;

2 using 新类型名 = 已有类型名
  using Area = double;
  using Volume = double;

枚举类型:
  定义方式:将全部可取值一一列出来
  (这种是不限定作用域的枚举类型,从C中继承来)

不限定作用域枚举类型说明:
  枚举元素是常量,不能对它们赋值
  枚举元素具有默认值,它们依次为: 0,1,2,......。
  枚举值可以进行关系运算。
  整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。
  枚举值可以赋给整型变量。(因为枚举是整型的子集)

//2-11
#include<iostream>
using namespace std;
enum GameResult {WIN, LOSE, TIE, CANCEL};
int main(){
    GameResult result;
    enum GameResult omit = CANCEL;  //声明枚举可以不带enum关键字
    for(int count = WIN; count <= CANCEL; count++){//枚举值可以赋给整型变量.枚举值可以进行关系运算。
        result = GameResult(count); //整数类型赋值给枚举类型要进行强制转换
        if(result == omit)
            cout << "The game was cancelled" << endl;
        else{
            cout << "The game was played ";
            if(result == WIN) cout << "and we won!";
            if(result == LOSE) cout << "and we lost.";
            cout << endl;
        }
    }
    return 0;
}

auto类型与decltype类型
auto:编译器通过初始值自动推断变量的类型
  例如:auto val = val1 + val2;
  如果val1+val2是int类型,则val是int类型;
  如果val1+val2是double类型,则val是double类型。

decltype:定义一个变量与某一表达式的类型相同,但并不用该表达式初始化变量
  例如:decltype(i) j = 2;//表示j以2为初始值,但是j的类型和i一样。

以上是关于Part2 数据类型与流程控制的主要内容,如果未能解决你的问题,请参考以下文章

七日阅书2 Java的数据类型和流程控制《Java程序设计与计算思维》

七日阅书2 Java的数据类型和流程控制《Java程序设计与计算思维》

流程控制之for循环基本数据类型及其内置方法

Part2 Linux Bash Shell变量和重定向

Java流程控制语句

第四章.流程控制与数组