C++程序设计原理与实践 第八章部分答案

 1 #include "../../st.h"
 2 
 3 void fibonacci(int x,int y,vector<int>&v,int n)
 4 {
 5     v.push_back(x);
 6     v.push_back(y);
 7     int z;
 8     for(int i=0;i<n-2;i++)
 9     {
10         z=x+y;
11         v.push_back(z);
12         x=y;
13         y=z;
14     }
15 }
16 
17 void print(string s,vector<int>&i)                     //习题2
18 {
19     if(s=="cout")
20         for(int j=0;j<i.size();j++)
21             cout<<i[j]<<endl;
22 }
23 
24 int main()
25 {
26     vector<int> v;
27     int x=1;
28     int y=2;
29     fibonacci(x,y,v,4);
30     print("cout",v);
31     keep_window_open();
32 }
习题2 3
 1 //利用溢出变负数
 2 //还有更好的方法
 3 
 4 void fibonacci(int x,int y,vector<int>&v,int n)
 5 {
 6     v.push_back(x);
 7     v.push_back(y);
 8     int z;
 9     for(int i=0;i<n-2;i++)
10     {
11         z=x+y;
12         if(z<0)
13         {
14             cout<<y<<endl;
15             break;
16         }
17         v.push_back(z);
18         x=y;
19         y=z;
20     }
21 }
习题4
 1 #include "../../st.h"
 2 
 3 int main()
 4 {
 5     vector<string>name;
 6     vector<string>name1;
 7     vector<int>age;
 8     vector<int>age1;
 9     int i;
10     string s;
11     int a;
12     cout<<"how many people:";
13     cin>>i;
14     for(int j=0;j<i;j++)
15     {
16         cin>>s;
17         name.push_back(s);
18         cin>>a;
19         age.push_back(a);
20     }
21     name1=name;
22     age1=age;
23     sort(name.begin(),name.end());
24     for(int j=0;j<i;j++)
25     {
26         for(int k=0;k<i;k++)
27         {
28             if(name[j]==name1[k])
29                 age1[j]=age[k];
30         }
31     }
32 
33     for(int j=0;j<i;j++)
34         cout<<name[j]<<"   "<<age1[j]<<endl;
35 
36     keep_window_open();
37 
38 }
习题7
 1 //重点
 2 #include "../../st.h"
 3 
 4 int randint()    //习题8
 5 {
 6     srand((unsigned)time(0));   //time_t time(0);time_t长整型,返回从1970年1月1日零时零分零秒到目前为止经过的时间
 7     //srand(time(NULL));  以当前时间为种子
 8     return rand()%INT_MAX;//取0到MAXINT之间的随机数
 9     //return (rand()%(b-a))+a;//取a到b之间的随机数  包含a不含b
10     //rand()/double(RAND_MAX);  取0到1之间的浮点数
11     //rand()/double(RAND_MAX/10);  取1到10之间的浮点数
12 }
13 
14 int rand_in_range(int a,int b)   //习题9
15 {
16     srand(time(NULL)); 
17     return (rand()%(b-a))+a;
18 }
19 
20 int main()
21 {
22     cout<<rand_in_range(1,3)<<endl;
23     cout<<rand()/double(RAND_MAX/10)<<endl;
24     keep_window_open();
25 }
习题8 9

习题12   直接排序  求各种值

 

习题13 用一个int f计数  f==2时退出

 

习题14  利用string类的length或size函数

转载于:https://www.cnblogs.com/yueba/p/4088389.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值