C++语言基础_第一讲:头文件、输入输出、格式、基本运算

程序 = 数据结构 + 算法

什么是C++?

C++ 是在C语言基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。

不同于C语言,C++是一种面向对象的语言,在C语言的基础上,C++扩充了一些自己特有的知识,如bool类型、重载函数、模版、STL等。

第一个C++程序

#include<iostream>//输入输出头文件
//i=input 输入
//o=output 输出
//stream 流
using namespace std;//命名空间
//std=standard 标准的
int main()//主函数
{
    cout<<"hello world!"<<endl;//输出,换行
    return 0; //返回0   
}
  • 头文件

C++ 中的输入、输出头文件 iostream

i —— input 输入

o —— output 输出

strem —— 流

C语言中的头文件以.h后缀,C++中头文件不加后缀。C语言中的string.h,C++用cstring,C语言中math头文件,C++使用cmath头文件。这不只是形式上的改变,其实现也有所不同。

  • 命名空间

C++ 标准库中所有标识符并定义于一个名为std的命名空间中,std称为标准命名空间(standard,标准的)。

引入标准命名空间方法:

using namespace std;

注意:语句末尾的分号不能少

  • 主函数

主函数main()是程序的入口,每个程序都需要一个主函数(唯一的)。主函数返回值为int型。

int main()

{

        cout<<"hello world!<<endl;

        return 0;

}

注意:程序末尾返回0 

输入输出、格式

标准输入输出流的对象和操作方法都是由istreamostream两个类提供的,这两个类继承自ios基类,它们预定义了标准输入输出流对象,并且提供了多种形式的输入输出功能。

C++在进行输入时需要从流中提取数据,在输出时需要向流中插入数据,提取和插入是通过在流类库中重载">>"和"<<"运算符来实现的。

四个预定义的标准流对象

  • cin

cin是istream类的对象,用于处理标准输入(即键盘输入);有缓冲,输入完数据按下回车键后,该数据才被送入键盘缓冲区,形成输入流,提取运算符">> "才能从中提取数据。

除了单个变量读取,cin对象也可以一次读入多个变量的值,因为">>"运算符返回的是istream的引用,可连续提取数据。

char c1,c2;
cin>>c1>>c2;

采用cin对象也可以对不同类型的变量读入数据。

int n;
string s;
float f;
cin>>n>>s>>f;
cout<<n<<" "<<s<<" "<<f<<endl;

当从键盘正确输入字符串和float类型的值时,cin将它们分别存储到对应变量中。字符串的读入也可以采用字符串组存储,例如:

char str[10];
cin>>str;

如果用一个字符数组存储字符串,要确保输入的字符串不超过字符数组的大小,否则会发生溢出,破坏内存中的其他数据。

  • cout

cout是ostream类的对象,用于处理标准输出(即屏幕输出),但也可以重定向输出到磁盘文件。用户可以通过cout对象调用ostream类的插入运算符和成员函数来输出信息;有缓冲。

利用cout对象可以直接输出常量值,代码如下所示:

cout<<10<<endl;
cout<<'a'<<endl;
cout<<"C++"<<endl;

利用cout对象输出变量的值,代码如下所示:

int a=10;
string s="C++";
float f=1.2;
cout<<a<<end;//输出int类型的变量
cout<<s<<endl;//输出string类型的变量
cout<<f<<endl;//输出float类型的变量

在用cout输出变量值时,不必设置以什么格式输出,"<<"运算符会根据变量的数据类型自动调用相匹配的重载函数,而正确输出。这比C语言中的printf()函数用法更简单。

利用cout对象输出指针、引用类型的数据,代码如下所示:

int a=10,*p;
int &b=a;
p=&a;
string s="C++";
string *ps=&s;
cout<<p<<endl;//输出结果是指针p的值,a变量的地址
cout<<b<<endl;//输出结果是b的值10
cout<<*p<<endl;//输出结果是指针p指向的变量的值,即a的值10
cout<<ps<<endl;//输出结果是指针ps的值,s变量的地址
cout<<*ps<<endl;//输出结果是指针ps指向的变量的值,即s的值“C++”

当输出数据类型为指针或引用时,与printf()函数的用法一致,不加"*"符号时输出指针的值,即变量的地址,带有"*"符号输出的是指针指向的变量的值,它比printf()的简便指出在于不必设置数据的输出格式。

cout对象也可以连续输出数据,代码如下所示:

int a=10;
char c='a';
cout<<a<<","<<c<<endl;
#include<iostream>

using namespace std;
int main()
{
    const double pi=3.14159;
    double r,c,s;
    cout<<"输入圆的半径:";//竞赛时不要输出提示语
    cin>>r;
    c=2.0*pi*r;
    s=pi*r*r;
    cout<<"圆的周长为:"<<c<<endl;
    cout<<"圆的面积为:"<<s<<endl;
    return 0;
    
}
  • cerr

cerr是ostream类的输出,用于处理标准出错信息,并将信息显示到屏幕上;无缓冲

  • clog

clog是ostream类的输出,用于处理标准出错信息,并将信息显示到屏幕上;有缓冲

cin与提取运算符">>"结合使用,cout、cerr、clog与插入运算符"<<"使用,完成了C++中所有的输入输出操作。

精度、域宽、填充字符的设置

  • 浮点数精度设置
  • 域宽设置
  • 填充字符设置

#include<iomanip>

操作符功能
setfill(char c)设置以c表示的填充字符
setprecision(int n)设置以c表示的填充字符
setw(n)设置以n表示的域宽
#include<iostream>
#include<iomanip>
#include<cmath>

using namespace std;
int main()
{
    double d=sqrt(2.0);
    cout<<"设置精度:"<<endl;
    for (int i=0;i<5;i++)
    {
        cout<<fixed;//定点输出
        cout<<setprecision(i)<<d<<endl;//设置不同的精度
    }
    cout<<"当前精度为:"<<cout.precision()<<endl;
    cout<<"当前域宽为:"<<cout.width()<<endl;
    cout<<left;//左对齐
    cout<<setw(6)<<d<<endl;//默认是右对齐
    cout<<setw(16)<<dsetw(16)<<d<<setw(16)<<d<<endl;
    cout<<"当前填充字符:"<<endl;
    cout<<setfill('*')<<setw(10)<<d<<endl;//setfill()函数可以直接插入流
    return 0;
}
操作符

功能

oct以八进制格式输出数据
dec以十进制格式输出数据
hex以十六进制格式输出数据
Endl插入换行符并刷新输出缓冲流
unpercase十六进制输出时字母大写
skipws输出时跳过空白
flush刷新流
left左对齐
right右对齐
scientific科学记数法输出
fixed定点数方式输出
showbase输出前缀(八进制0,十六进制0x)
showpoint输出浮点数时带小数点
showpos输出正整数时加“+”

基本运算

  • +加法
  • -减法
  • *乘法
  • /除法
  • %取余  
#include<iostream>
#include<iomanip>

using namespace std;
int main()
{
    int n;
    int ge,shi,bai;
    cin>>n
    ge=n%10;
    shi=(n/10)%10;
    bai=(n/100)%10;
    cout<<ge<<setw(2)<<shi<<setw(2)<<bai<<endl;
    return 0;
}

算数运算符

运算符运算范例结果
+正号+33
-负号b=4;-b;-4
+5+510
-6-42
*3*412
/5/51
%取模(余)7%52
++自增(前)a=2;b=++aa=3,b=3
++自增(后)a=2;b=a++a=3;b=2
--自减(前)a=2,b=--aa=1;b=1
--自减(后)a=2;b=a--a=1;b=2
=赋值a=3;b=2a=3;b=2
+=加等于a=3;b=2;a+=ba=5;b=2
-=减等于a=3;b=2;a-=ba=1;b=2
*=乘等于a=3;b=2;a*=ba=6;b=2
/=

除等于

a=3;b=2;a/=ba=1;b=2
%=模等于a=3;b=2;a%=ba=1;b=2
#include<iostream>
#include<iomanip>

using namespace std;
int main()
{
    int n,a,b,c;
    cin>>n>>b>>c;
    a=n++;
    b*=10;
    c/=10;
    cout<<a<<setw(5)<<b<<setw(5)<<c<<endl;
    return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BelongToMe@Hui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值