習題筆記 錢能 第5章節

mrlixuec發表於2019-02-24

本章的函式指標習題中未涉及到,自行練習

目錄

EX0501  //無用  遞迴poly

EX0502 //答案把陣列定義為全域性變數,故答案沒涉及到陣列的形參實參的形式。一二維陣列形參實參怎麼寫?

EX0503 求公約數 簡單寫法 : return a%=b? gcb(b,a) : b;    sort函式 見0506

EX0504 這個不會  記住好吧,熟能生巧

EX0505  重寫一遍!用到了函式引數,sort的第三種。

EX0506  注意點: 向量的賦值 ,sort中的寫法不能寫成(str[1],str[k-1]),容器可使用set .該容器自動將插入進去的元素排序,

 


EX0501  //無用  遞迴poly

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

float cal(int n,float x);

int main()
{
int n;
float x;
cin>>n>>x;
float k=cal(n,x);
cout<<setw(9)<<setprecision(6)<<k;
system("pause");

}

float cal(int n,float x)
{
    if(n==0) {return 1; }
    if(n==1) { return x;}
    return ((2*n-1)*x*cal(n-1,x)-(x-1)*cal(n-2,x))/n;        // 這裡的返回值是int???why??
}

EX0502 //答案把陣列定義為全域性變數,故答案沒涉及到陣列的形參實參的形式。一二維陣列形參實參怎麼寫?

#include<iostream>
using namespace std;

const int n =5;
const int m = 4;
int a[n][m];

void  input(int a[][4]);
void  total(int a[][4]);
void  average(int a[][4]);


void main()
{
input(a);
total(a);
average(a);
system("pause");

}
void input(int a[][4])
{
for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
        cin>>a[i][j];

}

void total(int a[][4])
{

for(int i=0;i<n;i++)
    {
    int sum =0;
    for(int j=0;j<m;j++)
        sum+= a[i][j];
    cout<<(i+1)<<":"<<sum<<"\n";
    }
}
void average(int a[][4])
{
    for(int i=0;i<n;i++)
    {
    int sum =0;
    for(int j=0;j<m;j++)
        sum+= a[i][j];
    cout<<"NO"<<i<<"average is"<<double(sum)/n<<"\n";
    }

}

EX0503 求公約數 簡單寫法 : return a%=b? gcb(b,a) : b;    sort函式 見0506

#include<iostream>
#include<string>
#include<sstream>   //別記成了sstring
#include<fstream>
using namespace std;

const int t=7;
int a[t];
int c,b;
void out_sort(int a[]);
int get_maxco(int b,int c);
int main()
{
 ifstream tin("abc.txt");
 ofstream tout("tt.txt");
 int k=0;
 for(string str;getline(tin,str);)
    
     {istringstream str1(str);str1>>c,str1>>b;
      a[k]=get_maxco(b,c);
      k++;
     }
 int x=get_maxco(32,8);cout<<x<<"\n";
 //out_sort(a);
 for(int i=0;i<t;i++) cout<<a[i];
 system("pause");

}
void out_sort(int a[])
{
    for(int i=0;i<t;i++)
        for(int j=t-1;j>i;j++)
            if(a[j]<a[j-1])  {int temp;temp=a[j];a[j]=a[j-1];a[j-1]=temp;}

}
int get_maxco(int b,int c){  int temp=1; while((b%c)!=0) {temp=b%c;b=c;c=temp;} return c; }  //如何求公約數;

EX0504 這個不會  記住好吧,熟能生巧

原題為,有頭母牛,每4年生一頭,為X年後多少牛 ?用遞迴解決  

答案為 f(n)=f(n-1)+f(n-3)   為什麼自己想的時候想不到看答案卻知道呢?

 

EX0505  重寫一遍!用到了函式引數,sort的第三種。

#include<iostream>
#include<fstream>
#include<vector>
#include<string>
#include<sstream>
using namespace std;

int main()
{int c;
vector <int> s;
    ifstream tin("abc.txt");
     for(string str;getline(tin,str);)
    
     {for(istringstream str1(str);str1>>c;)
      s.push_back(c);
      
     }
     for(int i=0;i<s.size();i++)  cout<<s[i]<<"\n";

     
     system("pause");

}

EX0506  注意點: 向量的賦值 ,sort中的寫法不能寫成(str[1],str[k-1]),容器可使用set <string> .該容器自動將插入進去的元素排序,

#include<iostream>
#include<algorithm>
#include<fstream>
#include<sstream>
#include<vector>
using namespace std;

int main()
{    string x;
    ifstream tin("abc.txt");
    vector <string> str;
    int k=0;
    for(string str1;getline(tin,str1);)
    //str.push_back(str1);
        for(istringstream sin(str1);sin>>x;k++)  str.push_back(x);    //向量的賦值很重要,不能用>>或者等於  
    sort(str.begin(),str.end());
    for(int i=0;i<str.size();i++)
        cout<<str[i]<<"\n";
    system("pause");
}

 

相關文章