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 }
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 }
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 }
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 }
习题12 直接排序 求各种值
习题13 用一个int f计数 f==2时退出
习题14 利用string类的length或size函数