1、本文几乎所有内容都是例子,详细的见一些相关的参考书。一 C+基础知识1.1 Hello,world!C+对于大小写是敏感的。首先,让我们通过一个非常简单的C+程序,来初步地了解C+语言。#includeusingnamespacestd;/ 注意如果不使用.h将要增加本行intmain()coutendl; return 0;/:这个程序的作用就是在屏幕上输出“Hello, world!”的字样。以“#”开始的内容被称为预处理指令,这一行的作用是把一个叫做iostream的头文件包含到我们的程序中来。C+默认是不包含任何头文件的。另外,C语言中的头文件都是以.h结尾的,而标准的C+提倡使用没有
2、扩展名的头文件。第四行让我们可以在程序中直接使用std名字空间内的标识符。std名字空间包含了所有标准C+提供的类和函数,为了简便起见,一般总在包含头文件的预处理命令后写上这一行。如果是C语言的话,程序将变成:iostream.hprintf(“%sn”,);1.2 类型C+提供了基本类型以及程序员可以自定义的类型:名称C+类型范围大小布尔型booltrue / false1字符型char所有单字节字符8位有符号整型-128 . 1278位无符号整型unsigned char0 . 25516位有符号整型short-32768 . 32767216位无符号整型unsigned short0 .
3、 6553532位有符号整型int-2147483648 . 2147483647432位无符号整型unsigned int0 . 429496729564位有符号整型long long-263 . 263-1864位无符号整型unsigned long long0 . 264-1单精度浮点型float1.17e-38 . 3.40e38双精度浮点型double2.22e-308 . 1.79e308扩展浮点型long double3.36e-4932 . 1.18e493210/12在C+中,很多其他类型的量都可以隐式地转化为布尔型,这时,非零的值都被转化成true,而零被转化成false。
4、其中VC中没有long long类型,可用_int64代替,sizeof的作用就是返回括号里的类型的大小(也可以是变量或者常量)。单个字符的常数要用单引号括起来,一些不能显示的字符可以通过转义符来表示(参见下表)。另外,从上表中可以看出,在C+中,字符型和单字节的整型实际上是等价的。举例来说,A的数值就是65。ASCII名称C+名称换行NL(LF)n水平制表符HTt竖直制表符VTv退格BSb回车CRr复位FFf铃声BELa反斜杠问号?1.3 操作符首先,我们来看下表:操作符名称C+操作符加法+减法-乘法*整数除法/实数除法取余数%小于小于等于=大于大于等于相等=不等!位非逻辑非位与&逻辑与位或
5、|逻辑或|位异或位左移位右移从中可以看出,C+语言最大的特点就是几乎所有的操作符都是由符号字符构成的。注意:1、C+中,整数除法和实数除法都是由“/”来完成的,当两个操作数都是整数时进行整数除法,当至少有一个是实数时进行实数除法;2、C+中,位运算与逻辑运算的操作符是不同的。1.4 常用的库函数和格式输出标准C+提供了十分强大的库。在这一节,我们只介绍一些和Pascal所提供的标准过程和函数功能相似的库函数。函数定义头文件作用备注void* memset(void* p, int b, size_t n);cstring把p所指向的连续n个字节的值都设置成b与FillChar类似,但要注意参数
6、的顺序void* memmove(void* p, const* q, size_t n);把q所指向的连续n个字节的值复制到p所指向的位置与Move类似,p、q所指向的内存区域可以部分重叠double atof(const char* p);int atoi(const char* p);long atol(const char* p);cstdlib把字符串p转化成所表示的数与Val类似double fabs(double);cmath绝对值函数与Abs类似double ceil(double);double floor(double);取整函数,前者为上取整,后者为下取整double s
7、qrt(double);平方根函数与Sqrt类似double pow(double d, double e);幂函数,返回d的e次方double sin(double);double cos(double);double tan(double);三角函数double asin(double);double acos(double);double atan(double);反三角函数double atan2(double y, double x);增强型反正切函数,返回点(x, y)的辐角很有用,会根据点所在的象限调整弧度值double sinh(double);double cosh(doub
8、le);double tanh(double);双曲函数double exp(double);指数函数,以e为底与Exp类似double log(double);double log10(double);对数函数,前者以e为底,后者以10为底与Ln类似另外,标准C+中并没有提供函数Pi,要获得Pi的值一般这样做:const double pi = acos(0.) * 2;格式化输出具体参考C语言等相关书籍C+的流可以完成控制格式的操作。指定场宽由成员函数width()来完成,而指定小数部分的位数则稍微麻烦一些,要先把浮点数的输出方式设置为定点输出方式,然后再设置小数部分的位数。例如:cout
9、.setf(ios:fixed, ios:floatfield);cout.precision(2);cout 1.2345 endl;以上程序段中第一个语句的作用就是把浮点数的输出方式设置为定点输出方式,第二个语句的作用是把小数部分的位数设置为2。和Pascal一样,小数部分的最后一位也会进行四舍五入的处理。需要注意的是,width()只对接下来的一个格式化输出有效,如果有多个输出需要指定场宽,那么就要写多个width()函数。而precision()则对之后所有的浮点数输出都有效。cout.width(3); 1 2; / 1的场宽为3,而2采用实际宽度cout.width(4);如果你觉
10、得这样写太麻烦,你也可以把它写成: setw(3) 2 setw(4) 不过这时不要忘了在程序的最前面加上#include ,因为setw是在iomanip中被定义的。这样,我们就可以完成一般的格式化输出了。C+中流的格式化输出还有很多内容,如果有兴趣可以参考有关资料。1.5 例子要求:每个程序在全部弄懂的前提下,自己编写一次(可以上网AC的都要尽量通过)例1:http:/acm.timus.ru/problem.aspx?space=1&num=1000 A+B ProblemCalculate a + b 输入: a and b输出: a+bSample Input1 5Sample Output6程序:C+:#include a b) cout a+b while(scanf(%d %d,&a, &b) != EOF) printf(%dn,a+b); 注意一般程序要求你多次输入的! printf和scanf是stdio.h里面的东西,注意C语言里面没有类的存在,只有函数。这两个函数要熟练使用的,慢慢来也行,具体见C和C帮助例2:1到n求和n 代表一个非负整数 1=n=100001005050#includeint n,sum; while
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1