- 变量类型:
1)int:绝对值在10^9范围内的整数都可以定义为int型。
2)long long:如果long long型赋大于 2^31-1 的值,则需要在初值后面添加 LL 否则会编译错误。
3)对于浮点型来说,碰到浮点型数据都应该用double来存储。
4)在C语言中,必须添加stdbool.h头文件。
- 位运算符:
一般的,无穷大的数 INF 可以设置成如下语句:
const int INF = (1 << 30)- 1;
const int INF = 0x3fffffff;
数据类型 格式符 举例
int %d scanf("%d", &n);
long long %lld scanf("%lld", &n);
float %f scanf("%f", &n);
double %lf scanf("%lf", &n);
char %c scanf("%c", &n);
(char数组)字符串 %s scanf("%s", str);
数据类型 格式符 举例
int %d printf("%d", &n);
long long %lld printf("%lld", &n);
float %f printf("%f", &n);
double %f printf("%f", &n);
char %c printf("%c", &n);
(char数组)字符串 %s printf("%s", str);
- 三种实用的格式输出
(1)%md 不足m位,右对齐输出m,前导空格,超过m位保持原样输出。
(2)%0md 不足m位,右对齐输出m,前导0,超过m位保持原样输出。PAT中出现00001这样的ID则可以在输出上做处理 ^_^
(3)%.mf ,样例如下:
int main(){
double d1 = 12.3456789;
printf("%.0f\n", d1);
printf("%.1f\n", d1);
printf("%.2f\n", d1);
printf("%.3f\n", d1);
printf("%.4f\n", d1);
printf("%.5f\n", d1);
}
output :
12
12.3
12.34
12.345
12.3456
12.34567
int main(){
// fabs(double x),对double型变量取绝对值
double db = -12.34;
printf("%.2f\n", fabs(db));
// 输出12.34
// floor(double x)和ceil(double x),分别为向下取整,向上取整,返回类型为double
double db1 = -5.2, db2 = 5.2;
printf("%.0f %.0f\n", floor(db1), ceil(db1));
printf("%.0f %.0f\n", floor(db2), ceil(db2));
/* 输出:
-6 -5
5 6
*/
// round(double x),对double型变量四舍五入
double db3 = round(3.40);
double db4 = round(3.50);
double db5 = round(3.55);
printf("%d, %d, %d\n", (int)db3, (int)db4, (int)db5);
// 输出:3 4 4
return0;
}
- Note:如果数组较大,大约10^6级别,则需要把数组定义在主函数的外部,否则会使得程序异常退出。
- memset( 数组名, 值, sizeof(数组名) ); 需要string.h头文件, 一般赋 0 或 -1 ,且执行速度快,赋其他值用fill()函数