算法竞赛入门经典第二版的学习
来源:互联网 发布:html网页制作软件 编辑:程序博客网 时间:2024/05/22 04:37
语言篇
scanf问题(P28)
当结束输入时,scanf无法再次读取,x将返回0。
scanf在无法读入的时候返回EOF,至少ubuntu下GCC clang是这样的。
浮点数问题(P32)
i = 1.700000000000000004
#include <stdio.h>int main(){ double i; for (i = 0; i != 10; i += 0.5) printf("%.1f", i); return 0;}
因为浮点数在机器内的实际储存方式,所以是有误差的。
大部分十进制小数不能准确换成二进制小数
大的数组(P38)
比较大的数组应尽量声明在main函数外,否则程序可能无法运行.
在main主函数内数组, 在内存栈区申请,容易爆栈,而在main函数外的数组,实在内存的数据区申请,空间较大.
书中使用的是从数据区申请空间,是比赛中的用法,这里演示一下大的数组正式的用法(在工程中):
从堆内存中申请空间
#include <stdio.h>#include <stdlib.h>int main(void){ //从堆内存中申请空间,(*a)[2],是一个指向数组的指针,即行指针 int (*a)[2] = malloc(sizeof(int) * 2 * 2); a[0][0] = 1; a[0][1] = 2; a[1][0] = 3; a[1][1] = 4; printf("%d", **a); //a[0][0] printf("%d", *(*a + 1)); //a[0][1] printf("%d", **(a + 1)); //a[1][0] printf("%d", *(*(a +1) + 1));//a[1][1] return 0;}
补充:内存四区:
代码区,数据区(包含静态区和常量区),栈区,堆区.
数组清零(P39)
memset(a, 0, sizeof(a));作用把a数组清零
main函数及子函数内的数组(即栈内存中的数组)可以直接在申请的时候清零,
int a[100] = { 0 };
在main函数外的数组(静态区的数组)自动初始化为0,无需手工清零.
未定义行为(P44)
int count = 0;
printf(“%d %d %d”, count++, count++, count++);
GCC,CL(vc++):
2 1 0
clang/LLVM(xcode):
0 1 2
拼写错误(P50)
类似的还有idigit…
应该为 isdigit
0 0
- 算法竞赛入门经典第二版的学习
- 【算法竞赛入门经典第二版学习】第三章习题
- 《算法竞赛入门经典》(第二版)学习报告
- 《算法竞赛入门经典(第二版)》学习之路!
- 算法竞赛入门经典第二版 第二章
- 算法竞赛入门经典(第二版)第2章部分学习实现
- 算法竞赛入门经典(第二版)第3章部分学习实现(上)
- 算法竞赛入门经典(第二版)第3章部分学习实现(下)
- 求第1500个丑数的精炼算法(转自 算法竞赛入门经典 第二版)
- 算法竞赛入门经典(第二版) 习题训练
- 《算法竞赛入门经典 第二版》 Chapter 3
- 算法竞赛入门经典第二版--第7章总结
- 算法竞赛入门经典第二版第三章习题
- 算法竞赛入门经典第二版第一章语言篇
- 算法竞赛入门经典第二版第一章语言篇
- 算法竞赛入门经典第二版第一章语言篇
- 算法竞赛入门经典第二版第一章语言篇
- 算法竞赛入门经典第二版第一章语言篇
- PHPer都应该关注的服务端性能问题–听云Server试用笔记
- 各种开源资源大全
- UML笔记8--构件图
- C++ 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 浅谈操作系统对内存的管理
- 算法竞赛入门经典第二版的学习
- android图片处理方法(不断收集中)
- Android游戏开发设计步骤
- 自绘控件
- swift语言的学习笔记一(基本数据类型)
- android如何适配不同分辨率的设备
- 研究机器学习
- 动态设置对话框大小
- PHP面向对象学习笔记