本章的函数指针习题中未涉及到,自行练习
目录
EX0502 //答案把数组定义为全局变量,故答案没涉及到数组的形参实参的形式。一二维数组形参实参怎么写?
EX0503 求公约数 简单写法 : return a%=b? gcb(b,a) : b; sort函数 见0506
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");
}