C笔记精华 啊文档格式.docx
《C笔记精华 啊文档格式.docx》由会员分享,可在线阅读,更多相关《C笔记精华 啊文档格式.docx(196页珍藏版)》请在冰豆网上搜索。
/*该程序的功能是:
输出:
Iamastudent.*/
#include<
iostream.h>
voidmain()
{cout<
<
"
Iamastudent.\n"
;
}
说明:
1.大小写区分(即:
abc与Abc不同)
2.C++系统是函数驱动的,一个可执行程序必须有、且只能有一个主函数:
main(),作为程序的入口
3.C++语句以分号(;
)结束,一行可以写多条语句,一条语句可以分多行写
4.所有的对象(变量)必须先定义,或先声明、后使用
5.以双引号括起的为字符串常量,里边的"
\"
为转义字符
#include<
intx=5,X=10;
{inty=x*x;
cout<
y=x*x="
y<
y=X*X="
X*X<
"
\n:
:
\n"
}/*执行结果:
y=x*x=25y=X*X=100
:
*/
1.12函数
函数的组成:
函数格式:
函数属性标识符函数返回类型标识符函数名(形参说明列表)
{
·
}
其中形参说明列表:
如果有多个形参,各形参之间用逗号(,)分隔
1.一个函数如果没有返回值,则函数的返回类型标识符用“void”代替,函数体中不必有return语句(如果有return语句,仅仅起提前返回的作用);
否则用返回值的类型标识符,函数体中必须有return语句。
2.函数与函数之间的关系是调用与被调用的关系,main()函数只能是调用函数,不可以被调用。
3.一个函数内部不可以定义另一个函数,只可以调用另一个函数。
4.函数只有定义或被声明后,才可以被调用。
函数声明:
由函数原型加分号组成。
intmax(int,int);
函数原型:
返回类型函数名(形参类型,…,形参类型)
//函数声明语句:
函数原型加分号
{intx=109,y=110;
max(x,y)<
endl;
//函数调用
intmax(intx,inty)//被调用函数定义
{if(x<
y)returny;
elsereturnx;
函数:
标准库函数
用户自定义函数
2基本数据类型与输入输出
2.6字符集与保留字
C++中容许出现的字符:
26个大写字母
26个小写字母
10个数字
其他符号:
空格+-*/=,._:
;
?
\"
'
~|!
#%&
()[]{}^<
C++保留字:
2.7基本数据类型
数据(对象):
常量、变量
每个数据都具有类型,即:
每个数据必属于某个类型。
变量:
存储信息的单元,每个变量对应一段连续的内存空间
内存空间的最小单位:
字节
数据类型的作用:
编译器预算对象分配的内存空间大小
注意:
数据无“void”类型,指针有“void”类型
不同的计算机,各类型的变量所占内存空间有所不同
bool型:
在ANSIC++中具有
ANSI:
美国国家标准协会(AmericanNationalStandardsInstitute)
求某个类型的变量所占内存长度:
利用运算符sizeof
{shortintx1;
intx2;
chary;
//longdoublez;
sizeof(x1)<
sizeof(x2)<
sizeof(y)<
sizeof(float)
<
sizeof(double)<
sizeof(longdouble)<
}//执行结果:
241488
2.8变量定义
在程序的运行期间,值会变、或值可变的数据量。
变量名:
每个变量必须有名,即:
变量标识符。
1.命名变量名
规定:
1不能与C++的保留字、库函数名、类名、对象名同名
2只能由26个大小写字母、数字和下划线组成
3只能以字母或下划线开头
命名规则和程序书写风格:
变量定义
变量定义:
每个变量必须被确定类型、变量名。
例如:
intx,y;
一条语句中只能定义同一类型的一个或多个变量
变量必须“先定义、后使用”。
程序编译时将分配存储单元,及进行语法检查。
唯一性:
一个变量一个名,不同的名表示不同的变量。
2.变量赋值与初始化
变量初始化:
在定义变量的同时进行赋值
intx=5,y,z=9;
变量赋值:
利用赋值运算符进行值的更新
intx=5;
//x初始化为5
x=100;
//把100赋给x
x=x/2+7;
//把x/2+7的计算结果赋给x,即:
x=57
3.给类型起“别名”:
typedef
typedefshortintI;
//把I作为shortint的别名
{Ix1;
sizeof(float)<
}//执行结果:
24148
注意:
typedef并不产生新的类型
2.9常量
常量:
常数、或在程序运行过程中值始终不变的数据量。
例如:
x=5+19.7;
其中5和19.7就是常量
常量有类型:
5---整型19.7---实型‘a’---字符型
1.整型常量
C++提供3种表示整型常量的形式:
十进制:
123,-123,0;
八进制:
以0(零)开头的整数常量
0123,即:
-0123:
表示八进制的负数123,为十进制的-83。
十六进制:
以0x(零和x)开头的整数常量
0x123,即:
-0x123:
表示八进制的负数123,为十进制的-291。
123<
0123<
-0123<
0x15<
-0x15
0x123<
-0x123<
12383-8321-21291-291
整型常量的类型:
整型常量有类型,系统自动识别
在整型常量的后面加字母“L”或“l”(小写),表示该常量是长整型的。
常量无unsigned型
2.实型常量
C++提供2种实型常量的表示形式:
由数字和小数点组成。
必须带小数点
12.123、0.0、.0、0.、9453.13124
指数形式:
数字E(或e)整数。
E前必须有数字,E后必须是整数
123E3(或:
123e3)即:
1.234e5即:
有效位:
单精度(float)―――7位
双精度(double)―――15位
实型常量在内存中所占字节数:
以double型进行存储,占8字节。
但是,在后面加f,则以float型存储,占4字节
sizeof(1.23)<
sizeof(1.23f)<
84
3.字符常量
用单引号括起的单个字符
特殊字符以“\”开头
'
1'
,'
0'
/'
='
a'
b'
?
%'
\n'
\t'
\\'
a='
A'
\101'
8进制的101等于10进制的65,ASCⅡ值为65的字符是:
A
所以,实际上:
a='
在内存中,字符以ASCⅡ码存储,是以整数表示的
所以,字符和整数之间可以互相赋值
{intx1='
x2='
x3=0;
charc=97;
x1<
x2<
x3<
c<
65480a
4.字符串常量
用双引号括起的字符序列
abc.|*88住宅ok"
:
空字符串
只有一个空字符的字符串
a"
只有一个字符a的字符串
字符串结束标志:
\0'
(由系统自动添加)
①"
与'
不同!
(输出结果相同)
②C++语言中无字符串变量!
③不能把字符串常量赋值给字符变量!
charc;
c="
╳
④统计字符串长度时,不计字符串结束标志。
abcd"
的长度为4,而在内存中实际存放是:
abcd\0
枚举常量
把变量的值一一列举,变量的值只能取其中之一
枚举类型的定义:
形式1:
enum枚举类型名{元素1,元素2,…,元素n};
enum枚举类型名枚举变量名1,枚举变量名2,…;
enumcity{上海,北京,南京,广州,天津};
//city为枚举类型名
enumcitycity1,city2;
//city1,city2为city枚举类型的变量名
形式2:
enum枚举类型名{元素1,元素2,…,元素n}枚举变量名1,枚举变量名2,…;
enumcity{上海,北京,南京,广州,天津}city1,cyty2,city3;
形式3:
可以直接定义枚举变量,而不定义枚举类型名
enum{上海,北京,南京,广州,天津}city1;
枚举类型的使用:
#include"
iostream.h"
enumcity{Shanghai,Beijing,Nanjing,Tianjin=5,Guangzhou};
voidff(enumcityx)
{switch(x)
{case0:
Shanghai\n"
break;
case1:
Beijing\n"
case2:
Nanjing\n"
case5:
Tianjin\n"
case6:
Guangzhou\n"
default:
非法城市!
{enumcityc1,c2,c3,c4;
inti=7;
c1=(enumcity)i;
//不能:
c1=i;
c2=Nanjing;
c3=(enumcity)5;
c4=Shanghai;
/*枚举变量的赋值:
只能为列举元素之一*/
ff(c1);
ff(c2);
ff(c3);
ff(c4);
c1<
c2<
c3<
c4<
}/*执行结果:
Nanjing
Tianjing
Shanghai
7250*/
枚举变量的使用说明:
1.先定义枚举类型,再定义枚举变量,然后使用变量
2.枚举元素是常量,不是变量,故也称枚举常量;
所以不能对枚举元素进行赋值
上例中,不能:
Shanghai=Beijing;
3.枚举元素是常量,其常量值不是列举的“内容”,而是定义时的次序号:
0,1,…,n
4.枚举元素值在定义时可以“人为”指定,上例中:
Tianjin=5,此后的元素均为6,7,…
上例中:
枚举元素Shanghai的值为0,Beijing为1,Nanjing为2,Tianjin为5,Guangzhou为6
5.枚举变量的值只能取定义枚举类型时所列举的元素之一:
例:
c2=Nanjing;
6.尽管枚举元素有值,但此值并不是整型值,所以不能把整型数赋值给枚举变量:
不能:
c1=5;
只能:
c1=(enumcity)5;
/*强制类型转换*/
7.枚举值(枚举元素)不是字符串
8.枚举值可进行逻辑判断比较运算:
上例中,if(city1==Shanghai)
if(city2>
Nanjing):
以序号值进行判断比较
2.10常量定义(const常量)
符号常量:
用一个标识符代表的常量,即:
在程序中用#define命令定义某个符号所代表的常量。
#defineW“女”
#defineM“男”
#definePRICE123.789
①一旦定义了某个符号代表一个常量,则该符号在其作用域内就表示这个常量。
x=PRICE*0.8;
②符号常量不是变量,所以,在其作用域内不能被赋值!
PRICE=123.012;
③为提高程序的可读性,符号常量一般用大写表示。
const常量:
冻结变量
constdoublepi=3.14159265;
变量一旦被const限定,就变成不能改变值的常量了;
因此,const常量必须在定义时赋初值,
并且const常量不能作左值!
符号常量和const常量的区别:
符号常量并不是变量,仅仅通过预编译命令进行“替换”,而const常量是占有内存的被“冻结”了的变量,C++中使用const常量而不提倡用符号常量。
2.11I/O流控制
头文件:
#include"
1.I/O控制流的书写格式
I/O控制流:
输入或输出的字节序列(字符序列)
操作符:
向输出流"
cout"
中插入字符
>
向输入流"
cin"
中抽取字符
实际上,<
、>
是重载操作符
cout:
C++预定义的标准输出设备
cin:
C++预定义的标准输入设备
作用:
用从标准输入设备上所接收到的数据去更新操作符"
右边的对象
用操作符"
右边的内容输出到标准输出设备上
以默认的格式进行输入输出:
Howareyou!
cout<
a[0]<
a[1]<
//或者:
cin>
x;
a>
b>
c;
2.使用控制符进行输入输出
控制符
使用控制符:
iomanip.h>
//格式控制符
voidmain()//以指数形式输出:
setiosflags(ios:
scientific)<
9999.999<
3.控制浮点数值的显示
控制符:
setprecision(n:
n控制显示的数字位数(系统默认:
有效位6位)
在用浮点表示的输出时:
n表示有效位数(系统默认:
在用定点表示的输出时:
n表示小数位数
在用指数形式输出时:
n表示小数位数
4.设置值的输出宽度
setw(n)
仅仅对下一个数值的输出有效
如果实际位数>
n,按实际宽度输出
5.输出8进制和16进制数
dec:
10进制
oct:
8进制
hex:
16进制
6.设置填充字符
setfill('
填充字符'
)
7.左右对齐输出
left)和setiosflags(ios:
right)
8.强制显示小数点和符号
I/O输出流对2.0以2显示,如果要输出小数,则用setioflags(ios:
showpoint)控制符
如果要输出正号,则用setioflags(ios:
showpos)控制符
2.7函数printf()和scanf()
11.5.2格式输出函数:
printf()
形式:
printf(“格式控制串”[,输出实参列表])
功能:
按指定的格式输出数据
printf(“上海交通大学:
男生%d人,女生%d人”,n,w)
输出实参列表中如果有多个参数,则用逗号分隔
实际上,printf()函数的格式为:
printf(实参1,实参2,…,实参n)
格式说明:
由字符‘%’和格式字符组成
格式字符:
d、o、x、u、c、s、f、e、g和附加格式说明符
格式控制串中,除格式说明外,有什么输出什么
①数据类型应与格式说明匹配,否则出错(但编译通过)
②格式说明个数应与参数列表中的个数相同,且次序对应:
.如果输出参数列表中的参数个数大于格式说明数,则参数列表中后面的参数值不被输出
.如果格式说明数大于输出参数的个数,则多出的格式说明会导致输出随机数
③格式说明串中可以用转义字符,例如:
\n
④如果要输出字符’%’,则在格式串中的对应位置处写:
%%
⑤不同的系统在执行格式输出时,可能会小有差别
⑥l用于长整型输出,如果应该长整型数用%d格式输出而不用%ld格式,则编译通过,执行时输出的数出错,且在其后面的参数值均错
⑦缺省情况下,输出是右对齐、前补空格,但用‘-’附加格式说明符,将左对齐、后补空格
但是:
字符串格式s,则相反
11.5.3格式输入函数:
scanf()
一般形式:
scanf(格式控制串,地址列表)
从标准输入设备接受输入的任何类型的多个数据
其中格式控制串与printf()函数的格式控制串类似
格式符:
P/31
①变量的地址列表,而不是变量名
②数组变量的名就是该数组的地址,不必加’&
’
③格式控制串中,除格式说明外的所有字符,在输入时必须对应地输入
④%lf:
double型输入
⑤用格式%c时,空格、转义字符均有效;
用格式%s时,接受的字符以输入的非空字符开始至空字符或回车符止;
以回车符开始执行接受输入的操作
⑥输入数值时不能规定精度
⑦输入数值时,遇非数值字符自动认为输入结束,遇宽度结束
⑧如果定义输入的宽度,则输入时必须小于等于宽度;
否则,如果后面有其他输出数据,这些数据值将全部出错:
stdio.h"
{intx1,x2,x3;
chara[10];
scanf("
%2d,%3d,%d"
&
x1,&
x2,&
x3);
printf("
x1=%dx2=%dx3=%d\n"
x1,x2,x3);
%s"
a);
a[10]=%s"
}/*文件名:
scanf函数.exe
如果输入:
111,2,34567则输出:
x1=11x2和x3的值出错
而a[10]=1,2,34567*/
#include"
{inta[10],i;
请输入10个整数:
);
for(i=0;
i<
10;
i++)
%d"
a[i]);
\na[%d]=%d"
i,a[i]);
/*执行1:
输入:
1234567890执行正确
执行2:
1,2,3,4,5,6,7,8,9,0执行不正确*/
对于用循环进行输入,之间用空格分隔
{doublea;
请输入1个数:
%lf"
a);
\na=%f\n"
对于double型,输入时应用%lf;
如果用%f则出错
对于double型,输出时用%f即可,系统会自动判断
3表达式和语句
3.6表达式
1.表达式概述
表达式:
操作符、操作对象组成的符号序列
2.左值和右值
左值:
左值表达式简称左值,能出现在赋值运算符左边的表达式
即,表示一个对象标识(有确定地址的对象)的表达式称为左值表达式
右值:
只能出现在赋值表达式右边的表达式(例,常量只能作右值)
左值既可以出现在赋值运算符的右边,又可以出现在左边。
3.操作符的优先级和结合性
4.语句与块
C++语言中,除了控制语句、函数调用语句外,几乎所有的操作都是通过表达式进行的。
语句以分号(;
)结束
C++语句分成6大类:
合法语句:
非法语句:
如果a=1
4;
3=a+2;
a;
5(7+a);
a+1-7;
a+6=7;
a=1;
a-a=0;
C++程序书写规定:
一行可写多条语句,一条语句可写多行(行尾加转移字符:
’\’,表示连行)
输入源程序时中、英文要及时切换,例如,中文的分号与英文的分号不是同一个字符
C++程序中的注释部分不是语句,两种注释方法:
①用/**/括起的内容,不管是否换行,均是注释
②用//开头,至本行尾的内容是注释
3.7算术运算和赋值
1.基本运算符:
+-*/%
+:
加法或正号
-:
减法或负号
*:
乘法
/:
除法
%:
模(整除取余,操作符两边的操作数必须为整型数)