C++基础知识.docx

上传人:b****2 文档编号:2243468 上传时间:2022-10-28 格式:DOCX 页数:26 大小:32.48KB
下载 相关 举报
C++基础知识.docx_第1页
第1页 / 共26页
C++基础知识.docx_第2页
第2页 / 共26页
C++基础知识.docx_第3页
第3页 / 共26页
C++基础知识.docx_第4页
第4页 / 共26页
C++基础知识.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C++基础知识.docx

《C++基础知识.docx》由会员分享,可在线阅读,更多相关《C++基础知识.docx(26页珍藏版)》请在冰豆网上搜索。

C++基础知识.docx

C++基础知识

 

ACM入门进阶

程序设计语言是学习数据结构的一个重要组成部分,任何算法只有通过程序设计语言实现之后才能真正解决问题。

C++语言凭借其高度的灵活性和强大的功能在大学生竞赛中被非常广泛地使用,在中学生竞赛中的使用也越来越广泛。

本文旨在给初学者一个窗口,通过例题了解什么是ACM,希望能够对刚入门的读者有所帮助(题目是英文的,不用担心,很简单得英文,不懂可以查金山词霸~~)

ACM一般要求在一定的时间内,理解并分析题意,设计符合给定时间和空间复杂度要求的算法,并在计算机上使用一定的程序设计语言正确地实现算法。

由于整个竞赛存在时间限制(特别是ACM/ICPC类竞赛,在解决问题数目相等的情况下以做题累计时间的多少来决定名次),因此所使用的程序设计语言能否正确、快速地实现算法对竞赛的成绩影响颇大。

一般信息学竞赛比较常用的程序设计语言有以下几种:

BASIC、Pascal、C/C++、Java,它们的特点如下表所示:

BASIC

Pascal

C++

Java

学习难度

容易

一般

较难

较难

语言特点

简单

严谨

灵活

高度面向对象

程序运行速度

较快

库函数功能

一般

很强

在目前的ACM竞赛中,C++和C语言使用较为广泛。

但是C++语言凭借其本身所具有的高度的灵活性,以及它所带的库的强大功能,被越来越多的选手所使用。

本文几乎所有内容都是例子,详细的见一些相关的参考书。

 

一C++基础知识

1.1 "Hello, world!

C++对于大小写是敏感的。

首先,让我们通过一个非常简单的C++程序,来初步地了解C++语言。

#include 

using namespace std;//注意如果不使用.h将要增加本行

int main() 

{

    cout << "Hello, world!

" << endl;return0;

} ///:

~

这个程序的作用就是在屏幕上输出“Hello,world!

”的字样。

以“#”开始的内容被称为预处理指令,这一行的作用是把一个叫做iostream的头文件包含到我们的程序中来。

C++默认是不包含任何头文件的。

另外,C语言中的头文件都是以.h结尾的,而标准的C++提倡使用没有扩展名的头文件。

第四行让我们可以在程序中直接使用std名字空间内的标识符。

std名字空间包含了所有标准C++提供的类和函数,为了简便起见,一般总在包含头文件的预处理命令后写上这一行。

如果是C语言的话,程序将变成:

#include 

int main() 

{

    printf(“%s\n”,"Hello, world!

");

return0;

} ///:

~

1.2类型

C++提供了基本类型以及程序员可以自定义的类型:

名称

C++类型

范围

大小

布尔型

bool

true/false

1

字符型

char

所有单字节字符

1

8位有符号整型

char

-128..127

1

8位无符号整型

unsignedchar

0..255

1

16位有符号整型

short

-32768..32767

2

16位无符号整型

unsignedshort

0..65535

2

32位有符号整型

int

-2147483648..2147483647

4

32位无符号整型

unsignedint

0..4294967295

4

64位有符号整型

longlong

-263..263-1

8

64位无符号整型

unsignedlonglong

0..264-1

8

单精度浮点型

float

1.17e-38..3.40e38

4

双精度浮点型

double

2.22e-308..1.79e308

8

扩展浮点型

longdouble

3.36e-4932..1.18e4932

10/12

在C++中,很多其他类型的量都可以隐式地转化为布尔型,这时,非零的值都被转化成true,而零被转化成false。

其中VC中没有longlong类型,可用_int64代替,sizeof的作用就是返回括号里的类型的大小(也可以是变量或者常量)。

单个字符的常数要用单引号括起来,一些不能显示的字符可以通过转义符来表示(参见下表)。

另外,从上表中可以看出,在C++中,字符型和单字节的整型实际上是等价的。

举例来说,'A'的数值就是65。

名称

ASCII名称

C++名称

换行

NL(LF)

\n

水平制表符

HT

\t

竖直制表符

VT

\v

退格

BS

\b

回车

CR

\r

复位

FF

\f

铃声

BEL

\a

反斜杠

\

\\

问号

?

\?

1.3操作符

首先,我们来看下表:

操作符名称

C++操作符

加法

+

减法

-

乘法

*

整数除法

/

实数除法

/

取余数

%

小于

<

小于等于

<=

大于

>

大于等于

>=

相等

==

不等

!

=

位非

~

逻辑非

!

位与

&

逻辑与

&&

位或

|

逻辑或

||

位异或

^

位左移

<<

位右移

>>

从中可以看出,C++语言最大的特点就是几乎所有的操作符都是由符号字符构成的。

注意:

1、C++中,整数除法和实数除法都是由“/”来完成的,当两个操作数都是整数时进行整数除法,当至少有一个是实数时进行实数除法;

2、C++中,位运算与逻辑运算的操作符是不同的。

1.4常用的库函数和格式输出

标准C++提供了十分强大的库。

在这一节,我们只介绍一些和Pascal所提供的标准过程和函数功能相似的库函数。

函数定义

头文件

作用

备注

void*memset(void*p,intb,size_tn);

cstring

把p所指向的连续n个字节的值都设置成b

与FillChar类似,但要注意参数的顺序

void*memmove(void*p,const*q,size_tn);

cstring

把q所指向的连续n个字节的值复制到p所指向的位置

与Move类似,p、q所指向的内存区域可以部分重叠

doubleatof(constchar*p);

intatoi(constchar*p);

longatol(constchar*p);

cstdlib

把字符串p转化成所表示的数

与Val类似

doublefabs(double);

cmath

绝对值函数

与Abs类似

doubleceil(double);

doublefloor(double);

cmath

取整函数,前者为上取整,后者为下取整

doublesqrt(double);

cmath

平方根函数

与Sqrt类似

doublepow(doubled,doublee);

cmath

幂函数,返回d的e次方

doublesin(double);

doublecos(double);

doubletan(double);

cmath

三角函数

doubleasin(double);

doubleacos(double);

doubleatan(double);

cmath

反三角函数

doubleatan2(doubley,doublex);

cmath

增强型反正切函数,返回点(x,y)的辐角

很有用,会根据点所在的象限调整弧度值

doublesinh(double);

doublecosh(double);

doubletanh(double);

cmath

双曲函数

doubleexp(double);

cmath

指数函数,以e为底

与Exp类似

doublelog(double);

doublelog10(double);

cmath

对数函数,前者以e为底,后者以10为底

与Ln类似

另外,标准C++中并没有提供函数Pi,要获得Pi的值一般这样做:

constdoublepi=acos(0.)*2;

格式化输出

具体参考C++语言等相关书籍

C++的流可以完成控制格式的操作。

指定场宽由成员函数width()来完成,而指定小数部分的位数则稍微麻烦一些,要先把浮点数的输出方式设置为定点输出方式,然后再设置小数部分的位数。

例如:

cout.setf(ios:

:

fixed,ios:

:

floatfield);

cout.precision

(2);

cout<<1.2345<

以上程序段中第一个语句的作用就是把浮点数的输出方式设置为定点输出方式,第二个语句的作用是把小数部分的位数设置为2。

和Pascal一样,小数部分的最后一位也会进行四舍五入的处理。

需要注意的是,width()只对接下来的一个格式化输出有效,如果有多个输出需要指定场宽,那么就要写多个width()函数。

而precision()则对之后所有的浮点数输出都有效。

例如:

cout.width(3);

cout<<1<<2;//1的场宽为3,而2采用实际宽度

cout.width(4);

cout<<2;

如果你觉得这样写太麻烦,你也可以把它写成:

cout<

不过这时不要忘了在程序的最前面加上#include,因为setw是在iomanip中被定义的。

这样,我们就可以完成一般的格式化输出了。

C++中流的格式化输出还有很多内容,如果有兴趣可以参考有关资料。

1.5例子

要求:

每个程序在全部弄懂的前提下,自己编写一次(可以上网AC的都要尽量通过)

例1:

http:

//acm.timus.ru/problem.aspx?

space=1&num=1000A+BProblem

Calculatea+b

输入:

aandb

输出:

a+b

SampleInput

15

SampleOutput

6

程序:

C++:

#include

usingnamespacestd;

intmain()

{

inta,b;

while(cin>>a>>b)

cout<

}

//cin和cout是iostream里面的东西

C:

#include

intmain()

{

inta,b;

while(scanf("%d%d",&a,&b)!

=EOF)

printf("%d\n",a+b);

}

注意一般程序要求你多次输入的!

printf和scanf是stdio.h里面的东西,注意C语言里面没有类的存在,只有函数。

这两个函数要熟练使用的,慢慢来也行,具体见《C和C++帮助》

例2:

1到n求和

输入:

n代表一个非负整数1=

输出:

1到n求和

SampleInput

100

SampleOutput

5050

程序:

C:

#include

intn,sum;

intmain()

{

while

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1