当前位置: 首页 > news >正文

AcWing语法基础班 1.1 变量、输入输出、表达式和顺序语句

预备知识

首先先来了解一下最简单的C++代码。
本文的所有代码操作均在AcWing的AC Editor中

#include <iostream>using namespace std;int main(){cout << "Hello World" << endl;return 0;
}

然后使用编译(点击调试,再点击运行代码,最后点击运行按钮)

代码主要分成几个部分

  1. 头文件区(#include<**********>)例如:
#include<cstdio>
#include<iostream>
  1. 声明一个命名空间
using namespace std;

命名空间是为了解决大型项目中变量名冲突的问题,不同命名空间内的变量名可以相同。

  1. 程序的执行入口
int main(){return 0;
}

以上的三部分是C++通用的基本结构,必须具备的结构

语法基础知识

1. 变量的定义

变量类似于数学中方程的未知数。
在定义变量的时候,要赋予变量类型。
C++中,变量有以下几种类型:

同时还要考虑字节的问题:
bit(位,又名“比特”):bit的缩写是b,是计算机中的最小数据单位(属于二进制的范畴,其实就是0或者1)
Byte(字节):Byte的缩写是B,是计算机文件大小的基本计算单位。比如一个字符就是1Byte,如果是汉字,则是2 Byte。
在计算机存储中,B 和 b 是具有不同含义的。

B:Byte(字节)
b:bit(比特)
1 Byte = 8 bit(一字节就是八位)
1 KB(Kilobyte) = 1024 B
1 MB (Megabyte)= 1024 KB
1 GB (Gigabyte)= 1024 MB
1TB (Terabyte)= 1024GB

不同变量所占的内存大小是不一样的,根据不同的变量类型,会占用不同的内存空间。
分为整型、浮点型、字符型、字符串型、布尔型和转义字符

整型(整型变量表示整数类型的数据。)

数据类型占用空间取值范围
short(短整型)2字节(-2^15 ~ 2^15)
int(整形)4字节(-2^31 ~ 2^31)
long(长整型)4字节(Windows系统)(-2^31 ~ 2^31)
long long8字节(-2^63~ 2^63)

浮点型(浮点型变量表示小数类型的数据)

数据类型占用空间
float4字节
double8字节

C++输出多位小数时默认会显示6位有效数字。
.2f表示输出两位小数,.5f表示输出五位小数。

字符型(字符型变量可表示单个字符)

数据类型占用空间
char1字节

字符型变量是将对应的ASCII编码存放至内存,而不是字符本身。
ASCII码表

字符串型

(1)C语言: char 变量名[] = “字符串值”;
(2)C++语言: string 变量名 = “字符串值”;

#include <iostream>
#include <string>
using namespace std;int main() {//Cchar c[] = "hello c!";cout << c << endl;//C++string cpp = "hello cpp!";cout << cpp << endl;return 0;
}

布尔类型 (布尔数据类型表示真或假的值)

数据类型占用空间
bool1字节

(1)true: 真(本质是1)
(2)false:假(本质是0)
注:C++的bool类型中,true 或 任意非0值 均代表false 或 0值 代表

转义字符(表示一些特殊的无法直接显示的ASCII字符)

用反斜杠开头(\n,\t,\r 等)
C语言中使用转义字符 \n 换行,C++中使用 endl 换行。

声明变量

那么如何定义变量呢?
变量定义的方式:
声明变量类型+变量名

int a;
char b='a';
float c = 1.5, s=1.235e2;
double d;
int q, w = 2;
bool i = true;

变量必须先定义,才可以使用。不能重名。
一段完整的定义变量程序如下:

#include <iostream>using namespace std;int main()
{int a = 5;int b, c = a, d = 10 / 2;return 0;
}

2. 变量的输入输出

在程序中,输入输出是非常重要的,针对不同的变量类型,往往会有不同的输入输出方式。
下面,我们通过一些简单的程序来学习。

整数的输入输出:

#include <iostream>using namespace std;int main()
{int a, b;cin >> a >> b;cout << a + b << endl;//endl表示回车cout << a * b << endl;return 0;
}

字符串的输入输出:

#include <iostream>
#include <string>using namespace std;int main()
{string str;cin >> str;cout << str;return 0;
}

输入输出多个不同类型的变量:

#include <iostream>
#include <string>using namespace std;int main()
{int a, b;string str;cin >> a;cin >> b >> str;cout << str << " !!! " << a + b << endl;return 0;
}

箭头的方向可以这样理解:
键盘向cin函数传值,cin再向变量传值,故输入的箭头方向从cin指向变量,即>>
从变量向cout函数传值,cout再输出到显示器,故输出的箭头放行从变量指向cout,即<<
cin和cout会过滤空格(a______b和a_b从cin输入,结果是一样的)
%c会读取空格,需要注意。

同时,在C++语言中同样可以使用C语言中的 scanfprintf
这两个函数的使用方法如下:

scanf("%d%d",&a,&b);
printf("%d%d",a,b);

%d为类型控制符。
在这里插入图片描述
给两个整型变量赋值就写两个 %d,然后“输入参数”中对应写上两个 “取地址变量” ;给三个整型变量赋值就写三个 %d,然后“输入参数”中对应写上三个 “取地址变量”,要在数量上保持对应。

scanf在输入时,从键盘输入数据时,给 多个变量赋的值之间一定要用空格、回车或者 Tab 键隔开,用以区分给不同变量赋的值。而且空格、回车或 Tab 键的数量不限,只要有就行。 一般都使用一个空格。
完整的简单程序参考如下:

#include<cstdio>
#include<iostream>using namespace std;int main(){int a;int b;scanf("%d%d",&a,&b);printf("%d%d", a, b);return 0;}

3. 常见的运算表达式

加减乘除

在这里插入图片描述

#include <iostream>
#include <string>using namespace std;int main()
{int a = 6 + 3 * 4 / 2 - 2;cout << a << endl;int b = a * 10 + 5 / 2;cout << b << endl;cout << 23 * 56 - 78 / 3 << endl;return 0;
}

C++的取余运算中,结果的正负取决于第一个数,即:
5 % 2 = 1
5 %(-2)= 1
-5 % (-2)= -1
-5 % 2 = -1
注意,取余操作只针对整数运算。

整数的自增自减运算

#include <iostream>using namespace std;int main()
{int a = 1;int b = a ++ ;cout << a << ' ' << b << endl;int c = ++ a;cout << a << ' ' << c << endl;return 0;
}

a++:先赋值,再自增
++a:先自增,再赋值
加号在前就先自增,加号再后,就后自增
a–和–a道理相同

变量的类型转换:

#include <iostream>
#include <string>using namespace std;int main()
{float x = 123.12;int y = (int)x;cout << x << ' ' << y << endl;return 0;
}
http://www.lryc.cn/news/60584.html

相关文章:

  • DC:5靶机通关详解
  • 【测试开发篇9】Junit框架
  • 《Spring MVC》 第五章 实现RESTful
  • Last Week in Milvus
  • Cursor IDE一个GPT4人工智能自动程序编辑器
  • PPO算法-理论篇
  • 【现货】AP6317 同步3A锂电充电芯片 带短温度保护
  • MyBatis详解(2)
  • 2023-04-14 使用纯JS实现一个2048小游戏
  • C++入门(3)
  • 【亲测有效】更新了WIN11之后 右键无 新建WORD,PPT,EXCEL 选项 问题 解决方案
  • 2023年4月北京/西安/郑州/深圳CDGA/CDGP数据治理认证考试报名
  • Win10桌面我的电脑怎么调出来?最简单方法教学
  • 开启单细胞及空间组学行业发展黄金时代!首届国际单细胞及空间组学大会在穗闭幕
  • YOLOv8 更换主干网络之 GhostNetV2
  • 高级服务框架(黑马)
  • Go语言面试题--基础语法(29)
  • 毕业生招聘信息的发布与管理系统(论文+设计)
  • mysql安全加固配置文档(完结)
  • CAPL函数在实现AES加密算法时遇到的各种问题(c++中符号的含义,AES算法中padding的问题等)
  • 二叉排序树(二叉查找树)基本操作_20230417
  • 实现服务器版本的表白墙
  • TensorFlow 2 和 Keras 高级深度学习:6~10
  • unity,制作一个环状滑动条
  • 2023-04-17 算法面试中常见的树和递归问题
  • 3分钟通过日志定位bug,这个技能测试人必须会
  • 【论文总结】V-Shuttle:可扩展和语义感知的 Hypervisor 虚拟设备模糊测试
  • 一篇文章让你搞懂TypeScript中的typeof()、keyof()是什么意思
  • 【机会约束、鲁棒优化】机会约束和鲁棒优化研究优化【ccDCOPF】研究(Matlab代码实现)
  • 4月想跳槽的同学,没有更好的选择,可以去美团