习题笔记 钱能 第5章节

本章的函数指针习题中未涉及到,自行练习

目录

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");
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值