从零开始学习c++之选择循环结构、运算符、初始vector
来源:互联网 发布:linux安装wine教程 编辑:程序博客网 时间:2024/06/05 00:07
//if条件结构:
int a = 0;
int b = 0;
cout << "Enter two number" << endl;
cin >> a >> b;
if (a > b)
cout << "max is " << a << endl;
else if (a < b)
cout << "max is " << b << endl;
else
cout << "Equal" << endl;
constexpr double cm_per_inch = 2.54; //定义常量每英寸折合多少厘米
double length = 1; //长度 单位时英寸或者厘米
char unit = 'a';
cout << "Enter a length followed by a unit (c or i): \n";
cin >> length >> unit;
switch (unit) //switch括号内必须是整型,字符型或者枚举类型,不能是字符串类型
{
case'i': //case内值不能重复,但可以多个case执行同一程序
cout << length << "in==" << cm_per_inch*length << "cm\n";
break; //当未加break时,编译器并不会报错 需要特别注意
case'c':
cout << length << "cm==" << length / cm_per_inch << "in" << endl;
break;
default: //default也可以放在其他条件之前
cout << "error unit" << endl;
break;
}
//值得注意:switch一般用于简单一些的条件判断也更一目了然,if用于更复杂的条件判断情况
循环结构:
//while结构
计算并打印0-99的平方表
int i = 0;
while (i<100)
{
cout << i<<"\t"<<(i*i) << endl;
i++;
}
//for循环
for (int i = 0; i < 100; i++)
{
cout << i << "\t" << i*i << endl;
}
//题:随机来模拟游戏中的两名玩家的攻击
#include <iostream>#include <vector>#include <string>#include <algorithm>#include <cstdlib>#include <ctime>using namespace std;int main(){ //血量int hp1 = 100; //player1int hp2 = 100; //player2//攻击力int attack1 = 0; //player1int attack2 = 0; //player2int randomNum; //存放判断玩家攻击先后的随机数srand(time(NULL)); //更新随机种子配合rand函数来产生不同的随机数 time(NULL)返回到现在时间的秒//一般srand放在循环外,因为时间种子精度和程序运行速度的问题,放在循环内部后得到的随机数实际是使用同一个时间种子,随机数相同while (hp1 > 0 && hp2 > 0){//随机数奇数 1攻击 偶数 2攻击randomNum = rand(); //默认随机0-32767cout << "Random" << randomNum << endl;if (randomNum % 2 == 1) //奇数{attack1 = (int)(5 + 10 * rand() / (RAND_MAX + 1.0)); //固定公式计算攻击力 RAND_MAX表示随机数的最大值,即32767attack2 = (int)(5 + 10 * rand() / (RAND_MAX + 1.0));hp2 -= attack1;hp1 -= attack2;}else //偶数{attack2 = (int)(5 + 10 * rand() / (RAND_MAX + 1.0));attack1 = (int)(5 + 10 * rand() / (RAND_MAX + 1.0));hp1 -= attack2;hp2 -= attack1;}}//打印对战最终结果cout << "player1:" << hp1 << endl;cout << "player2:" << hp2 << endl; return 0;}
c++中的运算符:
//一元运算符:++、--
//二元运算符:+、-、*、/、%
//三元运算符:?:
//值得注意的是 i++和++i的区别:
//i++和++i都等同于 i=i+1,但i++ 返回原值 ++i返回增加后的值
//i++ 不可以作为左值 而++i可以作为左值
int num1 = -5;int num2 = 2;num1 = num2++ - --num2;cout << num1 << "\t" << num2 << "\n";输出结果:0 2
位运算符 :按位与&、按位或|、按位非~、按位异或^、左移<<、右移>>
&:两个同时为1时 结果为1
cout << (4 & 5) << endl; //输出为4 //4二进制100 5二进制101 0&1 结果为0
|:两个有一个为1 结果为1
cout << (4 | 5) << endl; //输出为5
~:操作数为1,结果为0;操作数为0,结果为1
cout << ~2 << endl; //输出-3 2二进制八位为00000010 ~运算后 为11111101此时为负数 把负数转化为十进制步骤:取反并+1并加符号
^:相同时候为0,不同的时候为结果为1 即同假异真
cout << ((1+5)^(2+4)) << endl; //输出为0
<<:运算符左移(重载) 右侧空位补零
int num = 5; //5二进制 0101.00 数字左移三位 0101000转化为十进制为40
num = 5 << 3;
cout << num << endl; //输出40
>>:运算符右移(重载)
cout << (64 >> 2) << endl; //输出16 64为2的5次方 右移两位为2的3次方即16
//运算符左移和右移多用于2的次方计算 效率较高
初识vector(向量):
//Vector 一组可以通过索引来访问的顺序存储的数据元素 vector类似数组但不需要事先指定大小
//vector的初始化
vector<int> v_i; //int类型默认为0
v_i = { 1,3,7,2,9 };
//遍历
for (int i = 0; i < v_i.size(); i++)
{
cout << v_i[i] << endl;
}
//vector的空间增长 vector可以往里面添加任意多个元素
v_i.push_back(15); //如果括号内输入的不是int类型比如5.4,则存在一个强制转换,最终结果为5
一个简单的例子:简单字典程序,建立排序单词的列表
#include <iostream>#include <vector>#include <string>#include <algorithm>using namespace std;int main(){ vector<string> words;for (string temp;cin>>temp;){words.push_back(temp);}cout << "Number of words: " << words.size() << endl;sort(words.begin(), words.end()); //对单词快速排序for (int i = 0; i < words.size();i++)if (i == 0 || words[i - 1] != words[i]) //判断是否是一个新的单词cout << words[i] << endl;cin.get(); return 0;}输入 a man a plan a camel panama //关于如何终止输入流 vs可以使用ctrl+z +enter来终止输入流
输出 a
camel
man
panama
plan
- 从零开始学习c++之选择循环结构、运算符、初始vector
- 运算符、选择结构、循环结构
- c语言学习笔记之顺序,选择,循环结构
- Python学习之五【程序控制结构-选择结构&&循环结构】
- Java学习笔记(二)运算符和循环选择结构
- JAVA之运算符和选择结构
- 运算符&选择结构
- Unity学习之选择循环结构的运用
- 疯狂Java之学习笔记(8)-------------运算符和循环结构(流程控制)
- Java之学习笔记(8)-------------运算符和循环结构(流程控制)
- 23.从零开始学习C语言--位运算符
- unity之选择结构和循环结构
- Oracle之选择结构和循环结构
- unity3d 学习的两种结构 之选择结构和循环结构
- 黑马程序员----java的基本语法 变量 运算符 选择结构 循环结构 方法 数组
- 黑马程序员—Java基础—java基础语法:数据结构,运算符,选择结构,循环结构
- swift学习 运算符 之 for循环
- 从零开始学习c++之运算符重载与类型转换
- python的一些基础操作和c文件的链接编译原理
- CodeForces
- Quartz教程四--Trigger介绍
- 《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理
- 编写高性能的Java 程序
- 从零开始学习c++之选择循环结构、运算符、初始vector
- 动态链接库(.dll) 动态导入库(.lib) 静态链接库(.lib)
- Quartz教程五--SimpleTrigger
- NOIP Day1
- 《Linux内核设计与实现》读书笔记(十二)- 内存管理
- Quartz教程六--CronTrigger
- 抽象方法与抽象类 --笔记
- oracle----实例--数据库---表空间--用户--表
- 《Linux内核设计与实现》读书笔记(十三)- 虚拟文件系统