- cin和cout消耗的时间比scanf和printf多得多。不要再同一个程序中同时使用cout和printf。
- 109 以内或者说32位整数,用int型存放; 1018 以内或者说64位整数,用long long。
- 对于浮点型来说,不要用float,碰到浮点型的数据都应该用double存放。
- 对于字符 , 小写字母比大写字母的ASCΙΙ码大32.
- 符号常量定义时候不要使用末尾分号
#define 标识符 常量 #define pi 3.14
- define还可以定义任何语句与片段(尽量不用,使用一定要多个括号)
-
#define ADD(a,b) ((a)+(b)) int main(){ int num1 = 3, num2 =5; printf("%d", ADD(num1, num2)); return 0; }
- 另一种定义常量的方法const(优先考虑)
const 数据类型 变量名 = 常量 ; const double pi = 3.14 ;
- 在scanf中,除了char数组整个输入的情况不加&之外,其他变量类型都要加&。
- %md可以使不足m位的int型变量以m位进行右对齐输出,其中高位用空格补齐;如果变量本身超过m位,则保持原样。
- %0md可以使不足m位的int型变量以m位进行右对齐输出,其中高位用0补齐;如果变量本身超过m位,则保持原样。
- getchar(), purchar() 用于输入/输出字符
- gets(), puts()用于对一整行数组进行输入/输出
- math函数
fabs(double x) 用于对double型变量取绝对值 floor(double x) 用于对double型变量向下取整 ceil(double x) 用于对double型变量向上取整 pow(double r, double p) 返回rp,要求r和p都是double型 sqrt(double x) 返回double型变量的算术平方根 log(double x) 返回double型变量的以自然对数为底对数 sin,cos,tan 参数要求是弧度制sin(pi*45 / 180) asin,acos,atan 反正弦,反余弦,反正切 round(double x) 四舍五入
- 如果数组大小较大(大概106级别),则需要将其定义在主函数外面,否则会使程序异常退出,原因是函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的局部变量来自静态存储区,允许申请的空间较大。
- memset对数组中的每一个元素赋予相同的值,使用赋值0或者-1,其他用fill函数
memset(数组名,值,sizeof(数组名)); e.g. memset(a,0,sizeof(a));
- 数组以 结尾(不同于空格),在开通字符数组时,要至少比实际存储字符串的长度多1。在利用scanf() 和 gets() 输入字符串时,会自动添加 ,其他要手动输入(如getchar函数),否则会出现乱码。
- sscanf和sprintf,用于转换输出或输入
sscanf(str,"%d", &n); sprintf(str,"%d", &n);
#include<stdio.h> #include<string.h> using namespace std; int main(){ char a[100]="2020:5.20,Hello"; int int2020; double double520; char charHello[100]; sscanf(a, "%d:%lf,%s", &int2020, &double520, &charHello); printf("%d %.2f %s ", int2020, double520, charHello); char b[100]; sprintf(b, "%d:%.2lf,%s", int2020, double520, charHello); printf(" %s", b); return 0; }
输出结果:
2020 5.20 Hello
2020:5.20,Hello
- 在利用数组做参数时,在函数中对数组元素的修改等于对原数组修改。数组做参数时,一维不需要写长度,二维数组要填写长度,调用时只需要填写数组名。
#include<stdio.h> #include<string.h> using namespace std; void change(int a[], int b[][5]){ a[0] = 1; a[1] = 3; a[2] = 5; b[0][0] = 5; } int main(){ int a[3] = {0}; int b[5][5] = {0}; change(a,b); for(int i=0; i < 3; i++){ printf("%d ", a[i]); } return 0; }
- 定义单/多枚指针时
int* p; int *p, *q, *x;