从零开始学习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;


//switch条件结构:
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

        


阅读全文
0 0
原创粉丝点击