C++初学

C++ 初学(一)

在一次解决排序问题时,初步接触C++中的sort()函数,在问题解决上非常好用,不用自己再写排序的代码,就像python中 import 函数库一样,因为懒嘛,所以更懒,嘿嘿!!所以想接触一下C++,简单学习一下子。

C++

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。

C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。

C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的C,后来在 1983 年更名为 C++。

C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。

好了废话不多说,开始!

Hello world

#include <iostream>
using namespace std;//

// main() 是程序开始执行的地方

int main()
{
   cout << "Hello World"; // 输出 Hello World
   return 0;
}

接下来我们讲解一下上面这段程序:

  • C++ 语言定义了一些头文件,这些头文件包含了程序中必需的或有用的信息。上面这段程序中,包含了头文件 。
  • 下一行 using namespace std; 告诉编译器使用 std 命名空间。命名空间是 C++ 中一个相对新的概念。
  • 下一行 // main() 是程序开始执行的地方 是一个单行注释。单行注释以 // 开头,在行末结束。
  • 下一行 int main() 是主函数,程序从这里开始执行。
  • 下一行 cout << “Hello World”; 会在屏幕上显示消息 “Hello World”。
  • 下一行 return 0; 终止 main( )函数,并向调用进程返回值 0。

输入、输出

C++的输出和输入是用“流”(stream)的方式实现的。有关流对象cin、cout和流运算符的定义等信息是存放在C++的输入输出流库中的,因此如果在程序中使用cin、cout和流运算符,就必须使用预处理命令把头文件stream包含到本文件中:
#include <iostream>
尽管cin和cout不是C++本身提供的语句,但是在不致混淆的情况下,为了叙述方便,常常把由cin和流提取运算符“>>”实现输入的语句称为输入语句或cin语句,把由cout和流插入运算符“<<”实现输出的语句称为输出语句或cout语句。根据C++的语法,凡是能实现某种操作而且最后以分号结束的都是语句。

#include<cstdio>
#include<iostream>
#include <iomanip> 
//格式化输出的头文件,注意这里不要加.h
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    cout<<a<<setw(2)<<b<<setw(2)<<c<<endl;



    float num1 = 123.456f,num2 = 563.1f,num3 = 1.30f;
    float num4 = 123456.4444f;
     cout << setprecision(4);
     cout << "第一个数:" << num1 << endl;
     cout << "第二个数:" << num2 << endl;
     cout << "第三个数:" << num3 << endl;
     cout << "第四个数:" << num4 << endl;//endl 英语意思是end of line,即一行输出结束,然后输出下一行。

    return 0; 
 }

头文件#include<iomanip>是格式化输出的头文件,注意后面不加 .h

使用setw()来控制占位宽度。

注意事项

  1. setw() 虽然带有括号,但是其实是一个操作符,并不是函数。
  2. setw() 主要引用头文件 iomanip 才能使用。
  3. 如果setw() 所约束的输出超过了限制,不会被截断。是多少位就输出多少位。
  4. 如果输出是浮点数,小数点也会占一个位。
  5. 如果输出是字符串,空格有段有效字符,占一个位。从上面的输出结果也可以看出来。
  6. setw() 只能约束住跟自己相邻的一个输出。也就是说
使用setprecision()控制浮点数有效位

注意事项:

  1. setprecision() 同样是一个操作符,需要包含头文件 iomanip。
  2. 如果输出浮点数不足位,不会在其后面补0。
  3. 如果末尾有0,默认是不输出的。后面我们有其他方法可以输出末尾的0。
  4. setprecision() 不同于setw(),setprecision() 设置之后,在下次设置之前都是有效的。从程序结果中可以看出来。
  5. 如果要输出的位数过多,则用科学计数法表示,10为基数。
setfioflags() 控制定点输出
#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
     float num1 = 13.000f,num2 = 14.568f,num3 = 1.2f;
     cout << setiosflags(ios::fixed|ios::showpoint);
     cout << setprecision(4);
     cout << "第一个数:" << num1 << endl;
     cout << "第三个数:" << num2 << endl;
     cout << "第二个数:" << num3 << endl;

     return 0;
 }

setiosflags() 是通过状态标志来实现对输出的控制的。状态标志功能如下表

状态标志 功能
ios::left 左对齐,右边填空格
ios::dec 所有整数以十进制输出
ios::right 右对齐,左边填空格
ios::scientific 以科学计数法形式输出浮点数
ios::hex 所有整数以十六进制输出
ios::fixed 以定点形式输出浮点数
ios::oct 所有整数以八进制输出
ios::showpoint 显示小数点和尾部的零
ios::showpos 在正数前面输出+
ios::uppercase 对于十六进制输出,使用大写字母表示

setiosflags() 需要与 setprecision() 一起使用。如果状态标志设为 ios::fixed,那么setprecision()设置的数字,就表示小数位的个数,不足补零。