C++入门知识

一、Hello world样例:

#include <iostream> 
using namespace std; 
int main() 
{ 
   cout << "Hello world!" << endl;   
   return 0; 
} 

二、输入输出:

cin >> a;               //读入变量a 
cout << a;              //输出a 
cout << a << endl;      //输出a 并换行 

//小数位数保留2位。需要#include<iomanip>。 例:cout<<fixed<<setprecision(2)<<12.3456789; //输出结果为12.35
//设置字符所占宽度的函数:setw()。需要#include<iomanip>。 例:cout<<setw(5)<<123; //则输出的123占5个字符宽度

三、常用的数据类型及定义


整数类型 
short	-32768 ~ 32767 
int	-2147483648 ~ 2147483647 
long long	-9223372036854775808 ~ 9223372036854775807 

实数类型	 
float	2.9E-39 ~ 1.7E38 double	5.0E-324 ~ 1.7E308
double	-3.4E+4932 ~ 1.1E+4932 

布尔类型  bool	真true或假false 

字符型	 char

定义变量示例: int b, c = 50; double d, e, f; char g = ‘A’; 定义常量示例: const double PI=3.1415926; const int MAX=100;

四、运算符号

算术运算:加+ 	减- 	乘* 	实数除法	/(double) 	整数除法(int) / (int) 	取余% 	自增运算符++ 	自减运算符-- 
关系运算:等于== 	不等于!= 	大于> 	大于等于>= 	小于< 	小于等于<=
逻辑运算:与&& 	或|| 	非!  

五、 赋值语句

C++语言中,“=”作为赋值运算符,而不表示“等于”判断。
格式如下: 变量=表达式; 
由于赋值运算符“=”右边的表达式也可以是赋值表达式,因此,下述形式 :
变量=(变量=表达式); 
是成立的,从而形成嵌套的情形。其展开之后的一般形式为:
变量=变量=…=表达式; 例如,“a=b=c=d=e=5;”,它实际上等价于:e=5;d=e;c=d;b=c;a=b;

复合赋值(+=,-=,*=,/=,%=)
简 写	含 义
a+=b	a=a+b
a-=b	a=a-b
a*=b	a=a*b
a/=b	a=a/b
a%=b	a=a%b

六、 选择语句


格式1:
if (条件1) 
{
语句1;
语句2;
}
else if (条件2) 
{
语句1;
语句2;
}
else if (条件3) 
{
语句1;
语句2;
}
……
else
{
语句1;
语句2;
}

格式2: switch(表达式) { case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; …… case 常量表达式n: 语句n; break; default: 语句n+1; }

七、 循环语句


格式1:
for (变量名=初始值;条件;改变方式)
{
   语句1;
   语句2;
   ……
}

格式2: while (条件) { 语句1; 语句2; …… }
格式3: do { 语句1; 语句2; …… }while(条件);

八、 数组

1、一维数组的定义
  当数组中每个元素只带有一个下标时,我们称这样的数组为一维数组。
  数组的定义格式如下:
   类型标识符  数组名[常量表达式]
  说明:
  ①数组名的命名规则与变量名的命名规则一致。
  ②常量表达式表示数组元素的个数。可以是常量和符号常量,但不能是变量。
  例如:
  int a[10];           //数组a定义是合法的
    int b[n];            //数组b定义是非法的

2、一组数组的引用
  通过给出的数组名称和这个元素在数组中的位置编号(即下标),程序可以引用这个数组中的任何一个元素。
  一维数组元素的引用格式:
    数组名[下标]
  例如:
  int a[10];
    其中,a是一维数组的数组名,该数组有10个元素,依次表示为:
    a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。
    需要注意的是:a[10]不属于该数组的空间范围。

3、一维数组的初始化
    数组的初始化可以在定义时一并完成。格式:
     类型标识符  数组名[常量表达式]={值1,值2,…}
  例如:
   int a[5]={1,2,3,4,5}
  说明:
  (1)在初值列表中可以写出全部数组元素的值,也可以写出部分。例如,以下方式可以对数组进行初始化:
  int x[10]={0,1,2,3,4};
  该方法一次仅对数组的前5个元素依次进行初始化。
  (2)对数组元素全部初始化为0,可以简写为:{0}。
  例如:
       int a[5]={0}; 将数组a的5个元素都初始化为0。

4、二维数组的定义   当一维数组元素的类型也是一维数组时,便构成了“数组的数组”,即二维数组。二维数组定义的一般格式:   数据类型 数组名[常量表达式1] [常量表达式2] ;   例如:int a[4][10];   a数组实质上是一个有4行、10列的表格,表格中可储存40个元素。第1行第1列对应a数组的a[0][0],第n行第m列对应数组元素a[n-1][m-1]。   说明:当定义的数组下标有多个时,我们称为多维数组,下标的个数并不局限在一个或二个,可以任意多个,如定义一个三维数组a和四维数组b: int a[100][3][5]; int b[100][100][3][5]; 多维的数组引用赋值等操作与二维数组类似。 5、二维数组元素的引用   二维数组的数组元素引用与一维数组元素引用类似,区别在于二维数组元素的引用必须给出两个下标。   引用的格式为:    <数组名>[下标1][下标2]   说明:显然,每个下标表达式取值不应超出下标所指定的范围,否则会导致致命的越界错误。   例如,设有定义:int a[3][5];   则表示a是二维数组(相当于一个3*5的表格),共有3*5=15个元素,它们是:   a[0][0] a[0][1] a[0][2] a[0][3] a[0][4]   a[1][0] a[1][1] a[1][2] a[1][3] a[1][4]   a[2][0] a[2][1] a[2][2] a[2][3] a[2][4]   因此可以看成一个矩阵(表格),a[2][3]即表示第3行第4列的元素。 6、二维数组的初始化   二维数组的初始化和一维数组类似。可以将每一行分开来写在各自的括号里,也可以把所有数据写在一个括号里。   例如:   int direct[4][2] = {{1,0},{0,1},{-1,0},{0,-1}} int direct[4][2] = {1,0,0,1,-1,0,0,-1} //尽量不要用

九、 自定义函数


1.函数定义的语法形式:
	数据类型  函数名(形式参数表)
	{
		函数体    
	}

2.函数定义的例子 定义一个函数,返回两个数中的较大数。 int max(int x,int y) { return x>y?x:y; }
3.函数的形式 函数的形式从结构上说可以分为三种:无参函数、有参函数和空函数。它们的定义形式都相同。 (1)无参函数 无参函数顾名思义即为没有参数传递的函数,无参函数一般不需要带回函数值,所以函数类型说明为void。 (2)有参函数 有参函数即有参数传递的函数,一般需要带回函数值。例如 int max(int x,int y)函数。 (3)空函数 空函数即函数体只有一对花括号,花括号内没有任何语句的函数。 例如, 函数名() { } 空函数不完成什么工作,只占据一个位置。在大型程序设计中,空函数用于扩充函数功能。

十、 文件读写


方法1:
freopen("data.in","r",stdin);//读取data.in里的数据
freopen("data.out","w",stdout);//将数据输出到data.out

方法2: #include < fstream > ifstream cin("data.in"); ofstream cout("data.out");