C++基础知识

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ACM入门进阶

程序设计语言是学习数据结构的一个重要组成部分,任何算法只有通过程序设计语言实现之后才能真正解决问题。C++语言凭借其高度的灵活性和强大的功能在大学生竞赛中被非常广泛地使用,在中学生竞赛中的使用也越来越广泛。本文旨在给初学者一个窗口,通过例题了解什么是ACM,希望能够对刚入门的读者有所帮助(题目是英文的,不用担心,很简单得英文,不懂可以查金山词霸~~)

ACM一般要求在一定的时间内,理解并分析题意,设计符合给定时间和空间复杂度要求的算法,并在计算机上使用一定的程序设计语言正确地实现算法。由于整个竞赛存在时间限制(特别是ACM/ICPC类竞赛,在解决问题数目相等的情况下以做题累计时间的多少来决定名次),因此所使用的程序设计语言能否正确、快速地实现算法对竞赛的成绩影响颇大。一般信息学竞赛比较常用的程序设计语言有以下几种:BASIC、Pascal、C/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; return 0;

} ///:~

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

以“#”开始的内容被称为预处理指令,这一行的作用是把一个叫做iostream的头文件包含到我们的程序中来。C++默认是不包含任何头文件的。另外,C语言中的头文件都是以.h 结尾的,而标准的C++提倡使用没有扩展名的头文件。

第四行让我们可以在程序中直接使用std名字空间内的标识符。std名字空间包含了所有标准C++提供的类和函数,为了简便起见,一般总在包含头文件的预处理命令后写上这一行。如果是C语言的话,程序将变成:

#include

int main()

{

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

return 0;

} ///:~

1.2 类型

true,而零被转化成false。

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

单个字符的常数要用单引号括起来,一些不能显示的字符可以通过转义符来表示(参见下表)。另外,从上表中可以看出,在C++中,字符型和单字节的整型实际上是等价的。举

1.3 操作符

首先,我们来看下表:

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

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

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

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

标准C++提供了十分强大的库。在这一节,我们只介绍一些和Pascal所提供的标准过

const double pi = acos(0.) * 2;

格式化输出

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

C++的流可以完成控制格式的操作。指定场宽由成员函数width()来完成,而指定小数部分的位数则稍微麻烦一些,要先把浮点数的输出方式设置为定点输出方式,然后再设置小数部分的位数。例如:

cout.setf(ios::fixed, ios::floatfield);

cout.precision(2);

cout << 1.2345 << endl;

以上程序段中第一个语句的作用就是把浮点数的输出方式设置为定点输出方式,第二个语句的作用是把小数部分的位数设置为2。和Pascal一样,小数部分的最后一位也会进行四舍五入的处理。

需要注意的是,width()只对接下来的一个格式化输出有效,如果有多个输出需要指定场宽,那么就要写多个width()函数。而precision()则对之后所有的浮点数输出都有效。例如:cout.width(3);

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

cout.width(4);

cout << 2;

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

cout << setw(3) << 1 << 2 << setw(4) << 2;

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

这样,我们就可以完成一般的格式化输出了。C++中流的格式化输出还有很多内容,如果有兴趣可以参考有关资料。

1.5 例子

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

例1:http://acm.timus.ru/problem.aspx?space=1&num=1000A+B Problem

Calculate a + b

输入: a and b

输出:a+b

Sample Input

1 5

Sample Output

6

程序:

C++:

#include

using namespace std;

int main()

{

int a,b;

while(cin >> a >> b)

cout << a+b << endl;

}

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

C:

#include

int main()

{

int a,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求和

Sample Input

100

Sample Output

5050

程序:

C:

#include

int n,sum;

int main()

{

while (scanf("%d",&n)!=EOF)

{

sum=n*(n+1)/2;

printf("%d",sum);

}

return 0;

相关文档
最新文档