文章目录

  • 1 输入输出
    • 1.1 注意事项
    • 1.2 输入
      • 1.2.1 C
      • 1.2.2 C ++
      • 1.2.3 C/C++ 字符串输入小结
    • 1.3 scanf / printf
  • 2 条件、数组
    • 2.1 if
    • 2.2 switch
    • 2.3 数组
  • 3 指针
    • 3.1 指针变量
    • 3.2 指针数组
  • 4 函数
    • 4.1 传递参数:变量
    • 4.2 传递参数:数组
  • 5 其他
    • 5.1 int / long long(空间大小)、OJ最大运算次数(时间大小)
    • 5.2 ASCII码
    • 5.3 数据类型的转换
    • 5.4 逻辑运算符
    • 5. 5 条件运算符
    • 5.6 typedef
    • 5.7 浮点数的比较

1 输入输出

1.1 注意事项

  • 一个.cpp文件,最好不要 printf 和 cout 交杂,要么全用C,要么全用C++
  • 除了string的输入用cin外,其余任何都用scanf、printf
  • 涉及浮点数,都用double

1.2 输入

1.2.1 C

#include<cstdio>

输入 停止符(不能读) 可读 输出 举例
scanf 空格、/n 当读入%c,可读空白(空格、/n、/t) printf
getchar 读一个字符【任何】 putchar char ch;
ch = getchar();
putchar(ch);
gets \n 读一行char数组【可读 空格,不读 \n】 puts char chs[10];
gets(chs);
puts(chs);
// 用getchar 输入字符串数组
char str[20];
for(int i=0;i<5;i++){str[i] = getchar();
}
str[5] = '\0';       // 关键

1.2.2 C ++

#include<iostream>

输入 停止符(不能读) 可读 输出 举例
cin>>xxx>>… 空格、/n cout<<xxx<<…
getline /n 读一行char数组 或 string【可读 空格,不读 \n】 char chs[10]; string str;
cin.getline(chs,10);
getline(cin, str);
 int a;char b[20];double db;string str;cin>>a>>b>>db>>str;cout<<a<<endl<<b<<endl<<setiosflags(ios::fixed)<<setprecision(2)<<db<<endl<<str<<endl;//cin.getline(b,5); //只能读4个+\0cout<<b<<endl;getline(cin,str);cout<<str<<endl;

1.2.3 C/C++ 字符串输入小结

字符串类型 是否含有空格 输入
char* 没有 scanf
gets(char*);
string 没有 cin
getline(cin, string);

1.3 scanf / printf

#include<cstdio>
#include<iostream>
#include<cmath>using namespace std;const double PI = acos(-1.0);
const int INF = 0x3fffffff;     //无穷大, 7个fint main(){int a;scanf("%d",&a);printf("%d",a);printf("%6d",a);        // 右对齐,不足6位的补空格printf("%06d",a);       // 右对齐,不足6位的补0long long b;scanf("%lld",&b);printf("%lld",b);       // 保留小数char c;scanf("%c",&c);        // 可读空白(空格、/n、/t)printf("%c",c);double d;scanf("%lf",&d);     // %lfprintf("%f",d);printf("%.2f",d);char s[20];scanf("%s",s);          // 没有 &printf("%s",s);string str;cin>>str;printf("%s",str.c_str());return 0;
}

2 条件、数组

2.1 if

 if(n){      // n != 0... } if(!n){     // n == 0... }

2.2 switch

 int a = 1 , b=1;int c = 5;switch(c){case 2:case 3:case 4:printf("%d",a+b);       //c=2 || c=3 || c=4break;case 5:printf("%d",a-b);break;default:printf("end");}

2.3 数组

二维初始化:

 int arr[3][6] = {{1,2,3},{},{4,5}};

当数组较大(10610^6106)时, 设置全局变量


3 指针

unsigned类型的整数

3.1 指针变量

 int *a;int b;a = &b;       //a指向b

a的内容:b的地址

  • a 等价于 &b
  • *a 等价于 b

扩展:
搞懂以下代码

    int *a;int b;a = &b;        //a指向b//b = 100;printf("*a = %d  b = %d  a = %d  &b = %d\n",*a,b,a,&b);*a = 200;   //改变bprintf("*a = %d  b = %d  a = %d  &b = %d\n",*a,b,a,&b);//a ++;                       // 跨越了一个int存储单元(4B)printf("a = %d\n",a);

3.2 指针数组

 int a[5];for(int i=0; i<5; i++){scanf("%d",a+i);            // 相当于 scanf("%d", &a[i]);}for(int i=0;i<5;i++){printf("%d ",*(a+i));       // 相当于 printf("%d ",a[i]);}//int *p;p = a;                           //相当于 p = &a[0];for(; p<a+5; p++){scanf("%d", p);}for(p=a; p<a+5; p++){printf("%d ",*p);}

4 函数

4.1 传递参数:变量

一共有5种情形,对应如下5个swap函数

// 不改变main中变量(函数中的变量是main中的副本)
void swap1(int a, int b){int temp;temp = a;a = b;b = temp;
}//引用:改变main中的变量(函数中的变量是main中的别名)
void swap2(int &a, int &b){int temp;temp = a;a = b;b = temp;
}// 地址传值/指针传值:改变main中的变量
void swap3(int * a, int * b){int temp;          // int *temp;temp = *a;            // *temp = *a;  运行错误,理由:temp未初始化,存放随机*a = *b;*b = temp;
}// 不改变main中变量
void swap4(int * a, int * b){   int *temp;temp = p;p = q;q = temp;
}// 指针引用:不改变main中变量
void swap5(int * &p, int * &q){ int *temp;temp = p;p = q;q = temp;
}int main(){int a=1, b=2;swap1(a, b);swap2(a, b);     // 交换swap3(&a, &b);     // 交换swap4(&a, &b); int *p = &a, *q = &b;swap5(p, q);return 0;
}

4.2 传递参数:数组

void fun(int a[], int b[][3]){...
}int main(){int a[10];int b[5][3];fun(a, b);return 0;
}

5 其他

5.1 int / long long(空间大小)、OJ最大运算次数(时间大小)

一般比赛平台,最大运算次数:10710^7107

类型 位数 可表示范围
int 32 −231-2^{31}−231(−2∗109-2*10^9−2∗109) ~~~ 231−12^{31}-1231−1(2∗1092*10^92∗109)
long long 64 −263-2^{63}−263(−9∗1018-9*10^{18}−9∗1018) ~~~ 263−12^{63}-1263−1(9∗10189*10^{18}9∗1018)

总结:

  • x <= 10910^9109 或 32位,用int
  • x <= 101810^{18}1018 或 64位,用long long

5.2 ASCII码

小写 = 大写 + 32

字符 ASCII码
‘0’ 48
‘A’ 65
‘a’ 97
 char c = 117;printf("%c",c);char c = '9';printf("%d",c);

5.3 数据类型的转换

  1. char*(字符串数组)<——> int、double、 char*(字符串数组)
    sscanf()和sprintf()
    详情见:此文章:3 cstring

  2. char*(字符串数组) <——> string
    详情见:此文章:2 string

  3. int <——> double
    int a; double db; a = (int)db; db = (double)a;

5.4 逻辑运算符

类型 代码
&&
||
!
位与 a & b
位或 a | b
位异或 a ^ b
取反 ~ a

1左移8位:
1<<8 = 282^{8}28

5. 5 条件运算符

int max(int a, int b){return a>b?a:b ;
}

5.6 typedef

当复杂数据类型出现太多,起别名

typedef 数据类型 别名
如:typedef long long LL;

#include<cstdio>
using namespace std;typedef long long LL;  int main(){LL a = 23LL;printf("%lld",a);return 0;
}

5.7 浮点数的比较

#include<cstdio>
#include<cmath>using namespace std;const double eps = 1e-8;                            // 1*10^(-8)// define中定义的函数:变量带(),返回bool
#define Equ(a,b) ( (fabs((a)-(b))) < (eps))         // a==b:  b-eps< a <b+eps
#define More(a,b) ( ((a)-(b)) > (eps))              // a>b:   a > b+eps
#define Less(a,b) ( ((a)-(b)) < (-eps))             // a<b:   a < b-eps
#define MoreEqu(a,b) ( ((a)-(b)) > (-eps))          // a>=b:  a > b-eps
#define LessEqu(a,b) ( ((a)-(b)) > (eps))           // a<=b:  a < b+epsint main(){double db1 = 4 * asin(sqrt(2.0)/2);      // 4 * pi/4double db2 = 3 * asin(sqrt(3.0)/2);       // 3 * pi/3// 浮点数的比较printf("%d\n",db1==db2);                // 不精确printf("%d\n",Equ(db1,db2));            // 精确// 修正double res = -0.00;                     //某个结果printf("%f\n",res+eps);                 // 修正return 0;
}

C++ 语法概括总结相关推荐

  1. php核心语法,PHP核心语法总结

    这些天学习了PHP的核心编程语法,PHP核心语法概括起来不多,大致分为php标签,语法规范.数据类型.变量.常量.当然还有预定义的,还有操作符.循坏等等,最后几天学习了函数,其中数组的常用函数非常多. ...

  2. python基础语法手册-Python学习手册(第4版)pdf

    Python学习手册(第4版) 内容简介 <Python学习手册(第4版)>学习Python的主要内建对象类型:数字.列表和字典.使用Python语句创建和处理对象,并且学习Python的 ...

  3. Vue模板语法(理解前端渲染)

    目录 如何理解前端渲染: 前端渲染方式: 1.原生js拼接字符串: 2.使用前端模板引擎 ​ 模板语法概括: 指令? ​ v-cloak解决闪动问题.​ 数据绑定指令 数据响应式: 双向数据绑定: 事 ...

  4. java while语句打印三角形_Ruby 和 Java 基础语法比较

    前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...

  5. 动静结合?Ruby 和 Java 的基础语法比较(入门篇)

    前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...

  6. python学习手册条件-Python学习手册(第4版)pdf

    Python学习手册(第4版) 内容简介 <Python学习手册(第4版)>学习Python的主要内建对象类型:数字.列表和字典.使用Python语句创建和处理对象,并且学习Python的 ...

  7. python学习手册中文版免费下载-Python学习手册

    Python学习手册第4 版将帮助你使用Python快速实现这一点,不管你是编程新手还是Python初学者.本书是易于掌握和自学的教程,根据作者Python专家Mark Lutz的著名培训课程编写而成 ...

  8. Web安全学习 Week1

    这周主要学HTML 写个静态百度页面 看懂DOM 写好文件想运行 option+b <h1>这不是一个标题<h1> <p>这不是一个段落<p> 1.网页 ...

  9. 加入收藏代码_100个原生JavaScript代码片段知识点详细汇总【实践】

    作者:小棋子js 转发链接:https://www.jianshu.com/p/b5171efa340f JavaScript 是目前最流行的编程语言之一,正如大多数人所说:"如果你想学一门 ...

  10. python零基础学习书-Python零基础到进阶必读的书藉:Python学习手册pdf免费下载

    提取码:0oor Google和YouTube由于Python的高可适应性.易于维护以及适合于快速开发而采用它.如果你想要编写高质量.高效的并且易于与其他语言和工具集成的代码,<Python学习 ...

最新文章

  1. 一切都是问题,一切都着落在自身
  2. @angular/core里的 NgZone -使得Angular不跟踪变化
  3. VueConf China 2021 《Vue3生态进展-尤雨溪》 Reaction
  4. linux宝塔类似工具,有没有比宝塔面板更好的linux运维工具?
  5. OPNFV发布首个版本Arno
  6. excel报表汇总工具
  7. keil编译后MCU需要的flash和RAM容量
  8. c语言分解质因数法求最大公约数,最大公约数求法大全
  9. 聊一个自己写的MVC框架
  10. angular 易犯错误
  11. Python与Anaconda、Jupyter Notebook与Pycharm
  12. 【每日新闻】华米科技收购Zepp与PEI核心资产;西藏宁算科技与阿里云签署框架合作协议...
  13. 斜杠‘/‘ 和反斜杠‘\‘
  14. 【Unet系列】(三)Unet++网络
  15. React 基础----1
  16. 运行elevation_mapping流程记录
  17. 线性代数:裁剪变换(投影变换)(一)
  18. CodeForces - 764B Timofey and cubes
  19. bios sgx需要开启吗_win10不重装系统如何开启ahci驱动 快速开启ahci驱动的图文步骤_windows10_Windows系列_操作系统...
  20. 学生端android版二1班,一起作业学生端安卓版

热门文章

  1. 《机电传动控制》第三次作业
  2. 关于PV,流量和带宽
  3. 【Linux】04 实验笔记
  4. DOTween Sequence的使用
  5. python裁剪图片并保存_Python PIL:如何保存裁剪后的图像?
  6. php 上标,PHP数组上标类型陷阱
  7. hbase的学习逻辑_HBase-1.0.1学习笔记(二)HBase数据模型
  8. c语言不能调用strcat连接两个字符串_C语言中常用的6个字符串处理函数
  9. 网页端实时音视频服务架构与实践
  10. UIView你知道多少