第四章课后习题

1、最大公约数最小公倍数函数实现
#include<iostream>
using namespace std;
int gcd(int m,int n){if(m<n){int t=m;m=n;n=t;}while(m%n!=0){//同第三章15题,辗转相除int t=m;m=n;n=t%n;}return n;
}
int lcm(int m,int n){return m*n/gcd(m,n);
}
int main(){int m,n;cout<<"input two integers:"<<endl;cin>>m>>n;cout<<"the greatest common divisor is:  "<<gcd(m,n)<<endl;cout<<"the least common multiple is:    "<<lcm(m,n)<<endl;return 0;
}
2、求方程的根
#include<iostream>
#include<cmath>
using namespace std;
void f0(double a,double b,double c){//b^2-4*a*c=0cout<<"x1=x2="<<(-b)/(2*a)<<endl;
}
void f1(double a,double b,double c){//b^2-4*a*c>0cout<<"x1="<<(-b+sqrt(b*b-4*a*c))/(2*a)<<"  ,  ";cout<<"x2="<<(-b-sqrt(b*b-4*a*c))/(2*a)<<endl;
}
void f2(double a,double b,double c){//b^2-4*a*c<0cout<<"x1="<<(-b)/(2*a)<<"+"<<sqrt(-(b*b-4*a*c))/(2*a)<<"i  ,  ";cout<<"x2="<<(-b)/(2*a)<<"-"<<sqrt(-(b*b-4*a*c))/(2*a)<<"i"<<endl;
}
int main(){double a,b,c;cout<<"a*x^2+b*x+c=0, input a,b,c:"<<endl;cin>>a>>b>>c;if(b*b==4*a*c)  f0(a,b,c);else if(b*b>4*a*c)  f1(a,b,c);else  f2(a,b,c);return 0;
}
3、函数判别素数
#include<iostream>
#include<cmath>
using namespace std;
bool isprime(int a){if(a<=1)  return false;//素数即质数是大于1的自然数else if(a==2||a==3)  return true;else{int flag=0;for(int i=2;i<=sqrt(a);i++){if(a%i==0){flag=1;  break;}}if(flag==0) return true;else  return false; }
}
int main(){int a;cout<<"input an integer:"<<endl;cin>>a;if(isprime(a))  cout<<"The integer is a prime!"<<endl;else   cout<<"It is not a prime!"<<endl;return 0;
}
/*若有因数,必然两个因数乘积等于该数,或两个因数都等于sqrt(a)
或必有一个大于根号a,一个小于根号a;
即若有因数必然小于等于根号a有,否则一定没有*/
4、函数求阶乘
#include<iostream>
#include<cmath>
using namespace std;
int factorial(int n){if(n==0)  return 1;//0!=1int m=1;for(int i=1;i<=n;i++){m*=i;}return m;
}
/*递归方法
int factorial(int n){if(n==0||n==1)  return 1;else  return n*factorial(n-1);
}*/
int main(){int a,b,c;cout<<"input three integers a,b,c:(>=0)"<<endl;cin>>a>>b>>c;cout<<"a!+b!+c!="<<factorial(a)+factorial(b)+factorial(c)<<endl;return 0;
}
5、函数求e^x 和 sinh(x)双曲正弦
//双曲正弦(e^x-e^(-x))/2  ;  双曲余弦 (e^x+e^(-x))/2——悬链线
//e^x泰勒公式展开或库函数,因为0点展开误差大,所以直接用库函数即可
#include<iostream>
#include<cmath>
using namespace std;
double ex(double x){return exp(x);
}
double sinh(double x){return (ex(x)-ex(-x))/2;
}
int main(){double x;cout<<"input x:"<<endl;cin>>x;cout<<"sinh(x)="<<sinh(x)<<endl;return 0;
}

6、牛顿迭代法求三次方程的根
#include<iostream>
#include<cmath>
using namespace std;
double ntmethod(double a,double b,double c,double d,double k){while(fabs(a*k*k*k+b*k*k+c*k+d)>0.000001){k=k-(a*k*k*k+b*k*k+c*k+d)/(3*a*k*k+2*b*k+c);//xn+1=xn-f(xn)/f(xn)导 }return k;
}
int main(){double a,b,c,d;cout<<"a*x^3+b*x^2+c*x+d=0,  input a,b,c,d:"<<endl;cin>>a>>b>>c>>d;cout<<"x="<<ntmethod(a,b,c,d,1.0)<<endl;return 0;
}
7、验证哥德巴赫猜想
#include<iostream>
#include<cmath>
using namespace std;
bool prime(int a){//第三题判断素数函数if(a<=1)  return false;else if(a==2||a==3)  return true;else{int flag=0;for(int i=2;i<=sqrt(a);i++){if(a%i==0){flag=1;  break;}}if(flag==0) return true;else  return false;   }
}
void gotbaha(int n){for(int i=2;i<=n/2;i++){if(prime(i)&&prime(n-i)){cout<<n<<"="<<i<<"+"<<n-i<<endl;break;}}
}
int main(){int n;cout<<"please input an even number (>=6):"<<endl;cin>>n;gotbaha(n);return 0;
}
8、递归求勒让德多项式
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
double px(double x,int n){if(n==0) return 1;else if(n==1) return x;else if(n>=1) return (((2*n-1)*x*px(x,n-1)-(n-1)*px(x,n-2))/n);
}
int main(){int n;double x;cout<<"please input x,n:"<<endl;cin>>x>>n;cout<<setiosflags(ios::fixed)<<setprecision(5);cout<<"Legendre Polynomials:"<<px(x,n)<<endl;return 0;
}
//课本似乎印刷错误!!!⭐
9、汉诺塔⭐⭐
//递归的关键在于:不考虑中间过程
#include<iostream>
using namespace std;
void hanoi(char a,char b,char c,int n){//目标要a上的盘子通过b移动到cif(n==1) cout<<a<<"->"<<c<<endl;else{hanoi(a,c,b,n-1);//先把上面的n-1个从a通过c移动到b,不考虑怎么实现移动的//此时整体的状况是a上有最大的盘子,b上有剩余n-1个盘子cout<<a<<"->"<<c<<endl;//所以把最大的盘子移动到c,那么之后不考虑它,因为它不会影响后面的移动 hanoi(b,a,c,n-1);//这个时候要把移动到b的n-1个盘子通过a移动到c,结束}
}
int main(){int n;cin>>n;hanoi('A','B','C',n);return 0;
}
10、递归将整数转换成字符串
#include<iostream>
#include<string>
using namespace std;
int k=0;
string a;
void trans(int n){if(n/10==0){a[k]=n%10+'0';//强制转换不正确}else{  a[k]=n%10+'0';k++;n=n/10;trans(n);}
}
int main(){int n;cout<<"input an integer (0~2147483647):";cin>>n;trans(n);char b[200];for(int i=k;i>=0;i--){b[k-i]=a[i];}b[k+1]='\0';cout<<b;return 0;
}
11、递归求平方和
#include<iostream>
#include<string>
using namespace std;
int add(int n){if(n==1)  return 1*1;else  return n*n+add(n-1);
}
int main(){int n;cin>>n;cout<<add(n)<<endl;return 0;
}
12、三角形的面积
#include<iostream>
#include<cmath>
using namespace std;
//宏
#define s (a+b+c)/2
#define area(a,b,c)  sqrt(s*(s-a)*(s-b)*(s-c))
/*double area(double a,double b,double c){double s=(a+b+c)/2;cout<<s<<endl;//海伦公式return sqrt(s*(s-a)*(s-b)*(s-c)); //印刷错误,应该开方⭐
}*/
int main(){double a,b,c;cout<<"please input trangile a,b,c:"<<endl;cin>>a>>b>>c;cout<<area(a,b,c)<<endl; return 0;
}

谭浩强C++ 第四章相关推荐

  1. C++程序设计(第3版 谭浩强) 第四章习题

    1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用两个函数,并输出结果,两个整数由键盘输入. #include <iostream> using namespace st ...

  2. C语言程序设计第五版谭浩强课后答案 第九章习题答案

    C语言程序设计第五版谭浩强第九章答案 1.定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年问题. 2.写一个函数days,实现第1 题的计算.由主函数将年.月.日传递给days ...

  3. 《C语言程序设计》第五版谭浩强课后答案 第九章《用户自己建立数据类型​》习题答案 (大一大二、考研、计算机二级必看)

    第九章<用户自己建立数据类型​>习题答案 1.定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年问题. 2.写一个函数days,实现第1 题的计算.由主函数将年.月. ...

  4. C语言程序设计谭浩强(第四版)部分课后习题作答——第六章-输出杨辉三角,输出魔方阵

    代码: 杨辉三角题目较为简单,魔方阵题目实现了输出任意整数即可输出对应的魔方阵 #include<stdio.h> #include<stdlib.h> #include< ...

  5. C语言程序设计谭浩强(第四版)部分课后习题作答——第七章——7.8,7.10,7.16

    7.8:输入一个4位数,输出这4个数字字符 7.10:输入一行字符,输出最长的单词 7.16:十六进制转十进制 #include<stdio.h> #include<stdlib.h ...

  6. c语言谭浩强第六章答案,C语言谭浩强版本第6章课后练习题答案..doc

    第6章课后练习题 单项选择题 以下程序执行后,a是: int a =0,i,j; for (i=5;i>0;i--) for(j=0;j<4;j++) a++; 20 25 24 30 执 ...

  7. 谭浩强C++ 第十一章

    第十一章课后习题 1.补充例11.1--public继承 (P338) //公有继承, //基类 private->派生类 不可访问; 基类 public->派生类 public; 基类 ...

  8. 谭浩强C++ 第七章

    第七章课后习题 1.定义结构体,对输入年月日计算是该年的第几天 //第五章9题基本相同,用结构体完成即可 #include<iostream> using namespace std; s ...

  9. C语言程序设计第五版谭浩强著 第8章291-292指针系列

    1.输入3个整数,按由小到大的顺序输出. #include<stdio.h> main() {int a,b,c,*p1,*p2,*p3;p1=&a;p2=&b;p3=&a ...

最新文章

  1. GAN是一种特殊的损失函数?
  2. 百度地图API(二)
  3. HTTP 无状态中的 状态 到底指的是什么?
  4. Catch Me If You ... Can't Do Otherwise--转载
  5. 小程序triggerevent 传参_微信小程序——无限递归的层次列表
  6. java try catch_Java捕获异常
  7. 升级! Facebook 模型全部迁移至 PyTorch 框架
  8. 典型案例:Bug 9776608-多个用户使用错误密码登录同一个用户而造成的用户无法登录异常...
  9. Asp.net基础概念之 委托
  10. 4G模块使用记录移远EC20、BC20
  11. 使用计算机打印汉子文档,电子科技大学《计算机应用基础(本科)》20春期末考试【标准答案】...
  12. AI时代,运维和测试岗位如何开启第二春?
  13. 海湾标准汉字码表查询_标准汉字查询软件下载-国家标准信息交换汉字编码查询系统2017官方最新版-东坡下载...
  14. php和plc哪个难,致PLC初学者的入门一课,七大误区如何解决?
  15. Python 自带slic代码分析
  16. 小故事大道理:一把小椅子
  17. Android studio @Author的使用以及TAG的自动生成
  18. 怎样描写事物的动态?
  19. **DNS中A记录和CNAME记录的区别(转)
  20. Mac (M1) 官网安装 Tomcat,XAMPP,MySQL

热门文章

  1. 相场理论基础-Foundation of Phase Field Modeling
  2. lammps和atomsk中常用的建模方法
  3. html文档类型 tab,做个tab文件
  4. Nextcloud的部署迁移过程
  5. 甲方安全开源项目清单
  6. 技术分享 | 从库 MTS 多线程并行回放(一)
  7. erp5开源制造业erp和dream生产排程软件集成指南
  8. cultureinfo 类 java_为国家,语言组合创建自定义CultureInfo
  9. 手机可以找出 暗藏的摄像头
  10. 跟着狂神聊聊现在和未来