C/C++入门
C:面向过程-函数
C++:面向对象-类;向下兼容C
程序包含头文件+主函数
简单数据类型
long long型赋超过int型范围的初值,需要在初值后面加上LL,否则可能会编译错误
不要使用float,碰到浮点型的数据直接使用double
常量可以赋值给变量
小写字母比大写字母的ASCII码值大32
(新类型名)变量名 //强制类型转换
#define 标识符 常量 //符号常量-宏定义
const 数据类型 变量名 = 常量; //const常量
两个整形做除法运算会向下取整
宏定义实现两数取较大值:
#define MAX(a,b) ((a)>(b)?(a):(b))
常用左移运算符来表示无穷大数INF:
const int INF =(1<<30)-1; //0x3fffffff
C语句
%c把空白符按字符读入;其他格式符的输入以空白符(空格、Tab、换行)为结束判断标志
double型的输入输出格式符不同
要输出'%''\',需要在前面再加一个符号:
printf("%%");
实用的输出格式:
printf("%5d\n",a); //右对齐输出,高位用空格补齐
printf("%05d\n",a); //右对齐输出,高位用0补齐
Printf("%.3f\n",a); //保留m位小数输出
输入输出字符:getchar();putchar();
常用math函数:
fabs(double x); //取绝对值
floor(double x);ceil(double x); //向上取整和向下取整
pow(double r,double p); //r的p次方
sqrt(double x); //算术平方根
log(double x); //以自然对数为底的对数,其他为底的对数要用换底公式
sin(double x);cos(double x);tan(double x); //弧度制
asin(double x);acos(double x);atan(double x); //返回变量的反正弦值、反余弦值、反正切值
round(double x); //四舍五入
pi可以定义为精确值:const double pi = acos(-1.0);
if语句、while条件判断如果表达式是“!=0”,则可以忽略“!=0”;如果表达式是“==0”,则忽略并在表达式前添加“!”
数组
数组大小较大时(10的6次方级别),需要将其定义在主函数外面
memset(数组名,值,sizeof(数组名)); //对数组每个元素赋值,按字节赋值,建议只赋0或-1
gets识别换行符作为输入结束,因此scanf完其他类型后,如果要使用gets,需要先用getchar接收空白符
如果不是使用scanf的%s格式或gets函数输入字符串,一定要再输入字符串的最后加入’\0‘,不然输出字符串会出现乱码
strlen(字符数组); | 得到字符数组第一个\0前字符的个数 |
---|---|
strcmp(字符数组1,字符数组2); | 比较两个字符串大小,字典序 |
strcpy(字符数组1,字符数组2); | 把2复制给1 |
strcat(字符数组1,字符数组2); | 把2拼接到1后面 |
函数
函数传递参数的方式是值传递,函数定义内的参数为形参,实际调用的参数为实参
数组作为参数时,函数定义第一维不需要写长度,实际调用只需要写数组名
在函数中对数组元素的修改就等于对原数组元素的修改
数组不允许作为返回类型出现
函数的嵌套调用
:在一个函数中调用另一个函数
函数的递归调用
:一个函数调用该函数自身
指针
一个指针指向一个变量
指针是一个unsigned类型的整数
int* a; //*放在数据类型后和变量名前都可以,放在数据类型后且有多个变量时,*只作用于第一个变量名
指针变量定义时*是变量类型说明的一部分,指针变量使用时*是取出指针指向数据的钥匙
两个int型的指针相减,等价于在求两个指针之间相差了几个int;其他类型的指针同样适用
函数参数为指针变量时,传递方式为地址传递
定义指针变量时如果没有初始化,它存放的地址是随机的,如果该随机地址指向的是系统工作区间,那么接下来变量改变时容易出错;所以要初始化
引用
:给原变量起了一个别名,对引用变量的操作就是对原变量的操作;在函数定义时把&加在变量名前面
结构体
结构体内不能定义本身类型,可以定义自身类型的指针变量
struct stu{
int id;
char name[20];
stu* next;
}stu,*p;
//访问元素
stu.id
stu.name
(*p).id
(*p).name
p->id
p->name
//两种写法完全等价
//构造函数
struct stu{
int id;
char gender;
stu(){}
stu(int _id,char _gender){
id=_id;
gender=_gender;
}
};
//实例
stuInfo = stu(100,'M');
技巧
const double eps=1e-8;
const double Pi=acos(-1.0);
#define Equ(a,b) ((fabs((a)-(b)))<(eps))
#define More(a,b) (((a)-(b))>(eps))
#define Less(a,b) (((a)-(b))<(-eps))
#define MoreEqu(a,b) (((a)-(b))>(-eps))
#define LessEqu(a,b) (((a)-(b))<(eps))
黑盒测试
:系统后台会准备若干组输入数据,然后让提交的程序去运行这些数据,如果输出的结果与正确答案完全相同(字符串意义上的比较),那么就称通过了这道题的黑盒测试,否则会根据错误类型而返回不同的结果。
单点测试
:按正常逻辑执行一遍程序
多点测试
1.默认读取到文件末尾
while(scanf("%d",&n)!=EOF){} while(gets(str)!=null){}
2.输入数据满足条件时停止输入
在while...EOF内部进行判断;直接把推出条件的判断放到while语句中
3.while(t--)
原文地址:https://www.cnblogs.com/-TheMilkyWay/p/15102124.html
- 自相关和偏自相关的简单介绍
- 机器学习中分类与回归的差异
- 自然语言处理指南(第1部分)
- GreenDao 兼容升级,保留旧数据的---全方面解决方案
- 基于 xorm 的服务端框架 XGoServer
- 全面总结: Golang 调用 C/C++,例子式教程
- 架构之路(六):把框架拉出来
- 第二届游戏运营技术论坛——云时代的游戏运营之道
- 如何才能准确测量 APP 的功耗?
- 可用性更高:设计优秀的MySQL和Percona XtraDB集群
- 如何使用scikit-learn在Python中生成测试数据集
- OpenStack Neutron之持续测试
- 干货丨 用 Python 进行股票分析
- 小故事:架构师需要做什么?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Vue.js点击按钮弹出隐藏菜单的几种方式
- 【Vue.js】Vue.js组件库Element中的单选框、多选框、输入框和计数器
- 【Vue.js】Vue.js组件库Element的基础用法
- 常见的图像处理技术
- docker浅入深出续
- 【21期】你能说说Java中Comparable和Comparator的区别吗
- 昨天晚上熬夜整理的Java注解相关学习笔记
- 对图标的坐标轴进行调整
- Vue 开发技巧总结
- 35.opengl PBR-光照
- 聊聊claudb的list command
- nginx add_header 仅部分或一次生效的原因与解决办法
- 聊聊claudb的keys command
- 聊聊claudb的server command
- 聊聊claudb的Database