essential c++第一章

#include<iostream>
#include<string>
using namespace std;

int main()
{
   string user_name;
   cout<<"please enter your first name:";
   cin>>user_name
   cout<<'\n';
          <<"hello,"
          <<user_name;
          <<"...and goodbye!\n";
return 0;

第二个程序

#include <string>

string user_name;
int usr_val;   //用户的输入的值
int num_tries=0,num_right=0;     //用户的回答次数以及答对的次数  也可以使用构造函数语法int num_trise(0)
double usr_score=0.0    //用户的评分
char usr_more;
cout<<”Try another sequence? Y/N?"
cin>>usr_more;
bool go_for_it=true;
const int max_tries=3;//定义为const的对象,在获得处置之后,就无法再有任何改动
const int line_size=8;
int cnt=1;
cout<<a_string
       <<(cnt%line_size?' ':'\n');
       //我们希望每行的数据不超过八个字符串。如果expr为true,就执行这里。如果expr为false的话,就执行这里
       int tries=0;
       cout<<"Are you ready for try#"
             <<tries++<<"?\n";
  bool usr_more=true;
  char usr_rsp;
  if(usr_rsp=='N'||usr_rsp=='n')
        usr_more=false;
        !(ival%2)//而不能写成!ival%2
        (未完)
        

1.5 运用array和vector

定义array

const int_seq_size=18;
int pell_seq[seq_size];

定义vector

#include<vector>
vector<int> pell_seq(seq_size);

指定数列的前两个元素值

pell_seq[0]=1;
pell_seq[1]=2;

依次迭代vector和array中的多个元素

for(int ix=2;ix<seq_size;++ix)
    pell_seq[ix]=pell_seq[ix-2]+2*pell_seq[ix-1];
    

把元素填充到array中

int elem_seq[seq_size]={
1,2,3,
3,4,7,
2,5,12,
3,6,10,
4,9,16,
5,12,22
};

vector不支持上面的初始化列表

vector<int> elem_seq(seq_size);
elem_seq[0]=1;
elem_seq[1]=2;
//....
elem_seq[17]=22;

或者是用array作为vector的初值

int elem_vals[seq_size]={
1,2,3,3,4,7,2,5,12,3,6,10,4,9,16,5,12,22};
vector<int> elem_seq(elem_vals,elem_vals+seq_size);

array和vector有差异,vector知道自己的大小是多少。所以迭代vector的时候有一些差异

cout<<"the first"<<elem_seq.size()
      <<"elements of the pell Series:\n\t";
 
 for(int ix=0;ix<elem_seq.size();++ix)
      cout<<pell_seq[ix]<<' ';

用cur-tuple表示显示元素的索引值,再迭代的时候,累加3,让他能够索引到下一个数列的第一个元素

int cur_tuple=0;

while(next_seq==true&&cur_tuple<seq_size)
{
    cout<<"the first two elements of the sequence are:"
            <<elem_seq[cur_tuple]<<","
            <<elem_seq[cur_tuple+1]
            <<"\nwhat is the next element?";

if(usr_guess==elem_seq[cur_tuple+2])

if(usr_rsp=='N'||usr_rsp=='n')
   next_seq=false;
  
  else cur_tuple+=3;

使用数列的类别来指代数列

const int max_seq=6;
string seq_names[max_seq]={
"Fibonacci",
"Lucas",
"Pell',
”Triangular",
"Square",
"Pentagonal"
};

if(usr_guss==elem_seq[cur_tuple+2]}
{
   ++num_cor;
   cout<<"Very good.Yes,"
         <<elem_seq[cur_tuple+2]
         <<’is the next element in the"
         <<seq_names[cur_tuple/3]<<"sequence.\n";
         }

1.6 指针带来的弹性

null指针

int *pi=0;
double *pd=0;
string *pd=0;

防止对null指针进行提领操作,检验指针所只有的地址是否为0

if(pi&&*pi!=1024)
*pi=1024

用pv指针来指向vector

vector<int> *pv=0;
pv=&fibonacci;
//...
pv=&lucas;

seq_addrs是一个array,但是元素类型为vector*

vrctor<int> *pv=0;
const int seq_cnt=6;

vector <int> *seq_addrs[seq_cnt]={
&fibonacci,&lucas,&pell,
&triangular,&square,&pentagonal
};

通过索引值来访问各个vector

vector<int> *current_vec=0;

for(int ix=0;ix<seq_cnt;++ix)
{
        current_vec=seq_addrs[ix];
  }

希望数列的出现顺序随机化

include<cstdlib>

srand(seq_cnt);
seq_index=rand()%seq_cnt;
current_vec=seq_addrs[seq_index];

检查Fibonacci vector的第二个元素是否为1

if(!Fibonacci.empty()&&(Fibonacci[1]==1))

用pv指针来达到相同的结果

if(pv&&!pv->empty()&&((*pv)[1]==1))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值