1.整数范围选择:10^9以内或者32位整数,用int。10^18以内或者64位整数用long long
2浮点型用double即可。
3字符常量用ASCII统一编码。标准ASCII范围0~127。0~9,A~Z,a~z对应的ASCII码分别为48~57,65~90,97~122.
4.字符串可以直接赋值给字符数组,用%s格式输出。
5.c++中bool类型可直接使用。但c语言中需要包含stdbool.h才可使用。正型常量赋值给bool型变量会自动转换为true(非0)或者false(0)
6(int)a 可以将a变量类型强制转换为整型。
7条件运算符格式:a?b:c;
8.int上限为2^31-1,可以用(1<<31)-1表示。即1左移31位减1,但,为避免相加超过int,多用2^30-1,即ox3fffffffl.
9.scanf(“%lld”,&a) 输入long long型a;scanf(“%lf”,&b) 输入double型b;
10除了%c外,scanf对其他格式符(如%d)的输入是以空白符(空格,tab)为结束判断标志的。因此除了%c会
把空格(以及换行符)按字符读入,其他情况都会自动跳过空格。另外%s以空格和换行符做为读入结束标志。
11.scanf的&一定要注意检查!!!
12printf(“%lld”,a) 输出long long型a;scanf(“%f”,b) 输出double型b;
13printf("%%") 输出 % ; printf("\\") 输出 \
14%md可以使不足m位的int类型以m位进行右对齐输出,其中高位用空格补齐;如果变量本身超过m位,则保持原样。
%0md 与上面唯一不同在于补齐时用0;%.mf可以让浮点数保留m位小数输出,使用的是四舍五入。
15.c=getchar();putchar(c) 分别是接收一个字符,和输出一个字符。注意getchar()可以识别换行符。
16typedef 原名 别名 可以简化代码。
17.math.h下的数学函数:fabs(double x) 直接对double类型取绝对值;floor(double x),ceil(double x) 分别向上,下取整。返 double类型;pow(double r,double p) 求r的p次方。sqrt(double x);log(double x) ==ln x,其他对数用换底公式。sin(double x) cos(double x),cos(double x),tan(double x),x均为弧度。对应反三角函数前面加a,如asin。round(double x) 返回double类型,四舍五入取整。
18.if(condition 1)...else(condition 2) 是错误的格式。
19.switch(表达式)
{
case 常量表达式:....
break;
case 常量表达式:....
break;
......
default:.........
} 注意:两个case之间的语句默认属于上一个case;break用适当使用。
20.for(int i=0;......) c++允许,c不允许。
21break可以退出循环和switch,continue可以跳过本次循环。
22.从键盘输入的数是不能做数组的长度的。数组的不完全赋值使得未赋值的元素可能为0,也可能是随机数。
23 int a[10]={0}; int a[10]={ };对数组的每个元素都置0。 inta[5][6]={{3,2,1},{2,4},{},{1,2,3,4,5,6}} 二维数组初始化
时按第一维的顺序初始化。{}表示a[2]全为0,其他没有赋值的默认为0.另外,大数组(10^6左右)要定义在主函数外,
原因:函数内部的局部变量申请的空间来自系统栈,空间较小;函数外的来自静态存储区,空间较大。
24对数组全赋值为0,或者1:memset(数组名,值,sizeof(数组名)) 要包含<string.h>头文件。
25.字符数组初始化:char str[3]={'a','b'.'c'}; char str[3]="abc"; 后者仅仅在初始化是可用。
26. gets(str) str是字符数组名。在scanf后有注意用getchar吸收掉一个换行符。以\n作为读取结束标志。puts(str) 输出
字符串,并紧跟一个换行符。str也是字符数组名。
27一维字符数组(或者二维字符数组的第二维)的末尾都有一个空字符\0,来表示字符串的结尾。用gets或scanf输入字符串时
会自动添加到字符串后面,并占用一个字符位。而相应的puts和printf都是通过识别\0作为字符串的结尾来输出的。
注意:\0的ASCII码是0,开字符数组时长度要比实际字符串长度至少多1.若不用scanf的%s格式或者gets函数输入字符串。(如
用getchar,scanf的%c格式),记得在串末尾家\0.否则会出现乱码。
28.字符串函数:头文件<string.h> strlen(str) 获取字符数组str第一个\0前的字符的个数。strcmp(字符数组1,字符数组2),比较原则是依次从前往后按字符在英文字母中的顺序(a,b,c...)比较。数组1>2,返回正整数。相等返回0,否则返回负整数。
strcpy(字符数组1,字符数组2),把字符数组2连同\0一起复制到字符数组1。strcat(字符数组1,字符数组2),把字符数组2接到字符数组1后面。
29.数组作为函数参数,对数组的修改等同于对原数组的修改。二维数组形参格式 void fun(int b[][5])
30指针是一个unsigned格式的整数。多个指针变量的定义时每个前面都要加一个*。没有初始化的指针不能引用它指向的
单元的内容,因为他的指向是随机的,若指向系统工作区,极有可能出错。实参传递地址,形参接收的仍然是地址的副本。
因此无法实现在被调函数中交换地址实现主函数变量地址的交换。指针引用格式(函数原型)为:void fun(int *&a) 。
31.结构体的初始化:对每一个变量进行初始化;或者用构造函数。
32.cin.getline(str,100) 读取一行到字符数组str中。
33.圆周率pi的求法:cos(pi)=-1,则acos(-1)=pi.
34.单点测试:几组测试数据,过了几组得几组的分。要过所有的数据。
35.读到文件末尾:while(scanf("%d",&n)!=EOF) //scanf返回读取数据的个数。读到文件末尾返回-1而EOF=-1.输入EO式:ctrl+z
while(scanf("%s",str)!=EOF) 和while(gets(str)!=NULL) 读字符到文件末尾。
满足某个条件结束读取。可结合break使用。n组测试数据的读取用一个变量控制。