作业:
#include <iostream>
#include <math.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//1.设计一个函数,根据三角形的三边长计算出三角形面积,注意函数的健壮性
double t(double a,double b,double c)
{
double s,p;
if(a+b>c && a+c>b && b+c>a)//判断是否构成三角形
{
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
cout<<"此三角形的面积为:"<<s<<endl;
return true;
}
else
cout<<"这三边构不成三角形"<<endl;
return false;
}
int main(int argc, char** argv) {
double a,b,c,s;
cout<<"请输入任意三边长:";
cin>>a>>b>>c;
cout<<t(a,b,c)<<endl;
return 0;
}
//2.一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。
//这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?
//经过每个村子卖出多少只鸭子??利用递归函数来实现该算法。
int duck(int vil)
{
if(vil==8)
return 2;
else
return duck(vil+1)*2+2;//递归
}
int main(int argc, char** argv) {
cout<<duck(1)<<endl;
return 0;
}
//3.角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。
//经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。
//利用递归函数来实现该算法。
int m=0;
void f(int n)
{
if(n==1)
{
cout<<n<<"\t";
cout<<"共"<<m<<"次"<<endl;
return;
}
else if(n%2==0)
{
cout<<n<<"\t";
m++;
f(n/2);
}
else
{
cout<<n<<"\t";
m++;
f(n*3+1);
}
}
int main(int argc, char** argv) {
int n,m;
cout<<"请输入一个自然数:";
cin>>n;
f(n);
return 0;
}
#include <iostream>
#include <math.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//1.设计一个函数,根据三角形的三边长计算出三角形面积,注意函数的健壮性
double t(double a,double b,double c)
{
double s,p;
if(a+b>c && a+c>b && b+c>a)//判断是否构成三角形
{
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
cout<<"此三角形的面积为:"<<s<<endl;
return true;
}
else
cout<<"这三边构不成三角形"<<endl;
return false;
}
int main(int argc, char** argv) {
double a,b,c,s;
cout<<"请输入任意三边长:";
cin>>a>>b>>c;
cout<<t(a,b,c)<<endl;
return 0;
}
//2.一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。
//这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?
//经过每个村子卖出多少只鸭子??利用递归函数来实现该算法。
int duck(int vil)
{
if(vil==8)
return 2;
else
return duck(vil+1)*2+2;//递归
}
int main(int argc, char** argv) {
cout<<duck(1)<<endl;
return 0;
}
//3.角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。
//经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。
//利用递归函数来实现该算法。
int m=0;
void f(int n)
{
if(n==1)
{
cout<<n<<"\t";
cout<<"共"<<m<<"次"<<endl;
return;
}
else if(n%2==0)
{
cout<<n<<"\t";
m++;
f(n/2);
}
else
{
cout<<n<<"\t";
m++;
f(n*3+1);
}
}
int main(int argc, char** argv) {
int n,m;
cout<<"请输入一个自然数:";
cin>>n;
f(n);
return 0;
}
总结:
太感人了!!!表现在两点:
1.时间上终于缩短了不少,也就是说效率高了很多,之前也大概这个量的作业需要5-6个小时甚至更多,这次作业大概只花了2个多小时;
2.终于可以自己写出代码了!(不过写出来还是很多错,最后还是要去参考找错…(〃´-ω-) )