23_c++初识

C plus plus

  1. 兼容C语言
  2. 机器语言, 01加法,11减法
  3. 高级语言 移值性 {加法} A B C,面向过程编程 设计
  4. 面向对象 维护性(软件可读性:好扩展,好改)

对于C语言的改进

1.改进语法(核心就是类型判断)

1.1类型引导

int n = -1;

unsigned int I = n;

printf(“I = %ud\r\n”, i);

1.2类型识别

#include <iostream> //输入输出流, cin, cout

auto n = 1.5f; //初始化值是什么类型就是什么类型

std::Cout << ”size = ” << n; //两个冒号命名空间,连续输出

<< endl; //换行与刷新缓冲器

1.3推导类型

float num = 1.1f;

decltype(num) n2;

1.4命名空间

using namespace std; //标准的

1.5循环

int ary[] = {1,2,3};

for(auto I = 0; I < 3; i++)

{

cout << ary[i] << endl;

}

//迭代器

for(auto &n : ary) //引用,自动指针指向数组元素,如果不适用引用会生

//成临时变量

{

cout << n << endl;

}

//直接创建数组到循环遍历

for(auto n: {2,3,4,5} )

{

cout << n << endl;

}

1.6结构体对齐值标准化

struct alignas(对齐值) Point //设置对齐值

{

Int x;

}

cout << “alignas size = ” alignof(Point) << endl;

1.7初始化

int n3 = {3.5f}; //检测类型

int n4 {4.5f};

1.8空指针

char *pValue = nullptr; //只有指针才能赋值

int n5 = nullptr; //报错

1.9新类型

bool b = true; //非0

b = false;//0

n = b;

cout << “bool” << b << endl;

1.10Typedef 等价于using

typedef void (*pfn)(int, int)

using TYPE = void(*)(int, int)

1.11auto缺点

必须有初始值

2.面向对象编程

封装、继承、多态、抽象(最简单的)

C98 c99 c11 c14 c17 c20(https://isocpp.org里的编译器支持)

输入输出流

1.输出

int num = 1;

void *p = &num;

cout << num << flush; //单独刷新缓冲器

cout << p << end; //输出指针指向的地址

cout << hex << num << endl; //十六进制输出

cout << oct << num << endl; //十进制输出

cout << dec << num << endl; //八进制输出

cout << left << “Heelo” << “World” << endl; //左对齐

cout << scientific <<endl; //科学计数法

cout.precision(3); //设置精度

uppercase //设置大小写

cout.tellp() //通过对象成员函数使用,当前缓冲器位置

cout.fill(“填充”); //通过成员函数设置标志填充对齐

cout.setf(设置格式);

cout.unsetf(); //取消设置

两种方式来设置:成员函数设置与输出的时候设置

成员函数设置的时候可以设置多个,用|分隔

2.输入 cin

float num2 = 0.0f;

int num3 = 0;

char szBuf[20];

cin >> num2;

cin >> num3;

cin >> szBuf;

//清空缓冲器

cin.clear; //清空标志

int buff_size = cin.rdbuf()->in_avail(); //获取缓冲器剩下的大小

cin.ignore(buff_size); //忽略剩下的

cout.rdbuf(). //拿到缓冲器

cin.getline(buffer, sizeof(buffers)); //获取一行,能获取空格

cin.read(buffer, 20); //获取长度,读到才停止

if(cout.bad() == true)

{

cout << “bad” << endl;

}

Else

{

cout << “goole” << endl;

}

3.外部代码显示

调试->调用堆栈->双击加载

项目->选项->调试->符号

作业

1.输出以下菜单:
Menu
===================================
1. Input the students’ names and scores
2. Search scores of some students
3. Modify scores of some students
4. List all students’ scores
5. Quit the system
===================================
Please input your choise (1-5):
————————————————————————-
2. 以八进制输入输出整数
3. 以十进制输入输出整数
4. 以十六进制输入输出整数
5. 将2.45分别以整型,单(双)精度浮点,科学表示法输出
6. 实现浮点数的指数格式和定点格式的输入输出,并制定精度
7. 把是字符串读入字符型数组变量中并且显示,要求空格也要全部读入
8. 用cout 输出类似pintf(“%d”, 浮点数)格式化浮点为整形的方式
9. 将Ascii码表(分别以十进制,字符,十六进制,八进制)输出控制台上。
10.编程统计从键盘上输入每一行字符的个数,从中选出最长的行的字符个数,统计共输入多少行

  
#include 

using namespace std;

int main()
{
    /*1
    cout << "\tMenu\r\n"
        << "\t===================================\r\n"
        << "\t1. Input the students’ names and scores\r\n"
        << "\t2. Search scores of some students\r\n"
        << "\t3. Modify scores of some students\r\n"
        << "\t4. List all students’ scores \r\n"
        << "\t5. Quit the system\r\n"
        << "\t===================================\r\n"
        << "\tPlease input your choise (1-5): \r\n"
        << "\t-------------------------------------------------------------------------"
        << endl;
    */

    /*2-4
    cout << "oct :" << oct << 10 << endl;
    cout << "dec :" << dec << 10 << endl;
    cout << "hex :" << hex << 10 << endl;
    cout << "hex :" << hex << 10 << endl;
    */

    /*5
    auto aValue = 2.45;
    cout << (int)aValue << endl;    //整形
    cout << aValue << endl;     //单双精度浮点
    cout << scientific << aValue << endl;   //科学
    */

    /*6
    cout << "请输入要设置的精度:";
    size_t uValue = 0;
    cin >> uValue;

    cout << "请输入要显示的数:";
    double dblValue = 0.0;
    cin >> dblValue;

    cout.precision(uValue); //设置精度
    cout << dblValue << endl;   //输出用户自定义的精度
    */
    
    /*7
    char szBuf[20];
    cout << "请输入" << sizeof(szBuf) << "个字符" << endl;
    cin.getline(szBuf, sizeof(szBuf));
    cout << szBuf << endl;
    */

    /*8.用cout 输出类似pintf("%d", 浮点数)格式化浮点为整形的方式
    cout << (int)3.14 << endl;
    */

    /*9. 将Ascii码表(分别以十进制,字符,十六进制,八进制)输出控制台上
    int i = 0;
    cout.width(3);

    cout << "十进制Ascii码表" << endl;
    for (i = 0; i < 127; i++)
    {
        cout << i << " ";
    }
    cout << endl;

    cout << "字符" << endl;
    for (i = 0; i < 127; i++)
    {
        cout << (char)i << " ";
    }
    cout << endl;

    cout << "十六进制Ascii码表" << endl;
    for (i = 0; i < 127; i++)
    {
        cout << hex << i << " ";
    }
    cout << endl;

    cout << "八进制Ascii码表" << endl;
    for (i = 0; i < 127; i++)
    {
        cout << oct << i << " ";
    }
    cout << endl;
    */

    /*10.编程统计从键盘上输入每一行字符的个数,从中选出最长的行的字符个数,统计共输入多少行*/

    int uMax = 0;
    char uLines[80] = { 0 };
    int uLinesCout = 0;

    while (cin.getline(uLines, 80))
    {
        int count = cin.gcount();
        uLinesCout++;

        if (count >= uMax)
        {
            uMax = count;
        }
    }

    cout << "最长的行的字符个数: " << uMax << endl
        << "一共输入" << uLinesCout
        << "行"
        << endl;

    system("pause");
    return 0;
}
0 条评论
发表一条评论