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--)

C/C++入门的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  3. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  4. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  5. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  6. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  7. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  8. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  9. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  10. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. 支持向量机(SVM)之硬阈值

    支持向量机 ( support vector machine, SVM ) 是使用超平面来对给定的 p 维向量进行分类的非概率二元线性分类器. 一.超平面 ( hyperplane ) 在一个p维的输 ...

  2. 可编程网络DataPath 及XDP

    目录 可编程网络DataPath XDP 的基本架构 XDP 的软件要求 XDP 的硬件要求 XDP 的工作流程及使用 XDP 的工作模式 XDP 的工作流程 Hello World XDP 的应用 ...

  3. 精通LED驱动芯片HT1632C指令与编程应用

    HT1632C是一款很常用的LED(数码管或点阵)驱动芯片,虽然官方已经宣布该芯片明年(2021年)即将寿终正寝(停产),但是相同厂家生产的同系列芯片的控制方式通常是相同的(事实上,大多数LED驱动芯 ...

  4. sql循环说明

    while循环:主要是判断,不能使用表中的ID,临时表是ID自增的,通过自增ID可以查出表ID(语法简单,需要配合其他代码操作表ID)游标循环:可以使用表中的ID ,进行修改等操作(语法难一点,核心代 ...

  5. 深入浅出,新一代跨平台抓包&调式利器Fiddler Everywhere

    什么是Fiddler Everywhere? Fiddler Everywhere is a web debugging proxy for macOS, Windows, and Linux. Ca ...

  6. 13、linux中用户和用户组

    linux是多用户多进程的系统: 每个文件和进程都需要应对一个用户和用户组: linux系统通过uid和gid来识别用户和组的: 一个用户必须要有唯一的uid和一个主组来识别身份,不同的用户可以使用同 ...

  7. 9.4、安装zabbix(1)

    1.什么是zabbix: zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案: zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以 ...

  8. CRM系统对企业管理的作用有多大?

    随着市场经济的发展,对任何行业的企业来说,客户都是非常重要的一个部分.CRM系统帮助企业做到以客户为中心,它可以根据客户的具体要求进行跟进和反馈,在很大程度上提高公司的客户服务水平和客户满意度,进而提 ...

  9. Python基础4--数据类型

    一.数据类型是什么鬼? 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...

  10. python 01篇

    一.Pycharm 使用小tips 1.1 pycharm创建项目时,选择Python环境,不使用默认的虚拟环境 1.2 如何在pycharm中查看python版本 路径:File-Settings- ...