1、编写一个求x的n次方的函数,并用它求5的3次方的值,用main()调用。
#include <iostream>
using namespace std;
//调用函数
//计算x的n次方
double power (double x, int n)
{
int i;
double d=1;
for(i=0;i<n;i++)
d *= x ;
return d;
}
//主函数
int main(){
int x,n;
cout<<"请输入x、n,如你需要求5的3次方的值,则x=5,n=3"<<endl;
cout<<"x=";
cin>>x;
cout<<"n=";
cin>>n;
cout<<x<<"的"<<n<<"次方的值为"<<power(x,n)<<endl;
}
2、输入一个8位二进制数,将其转换为十进制数输出。(可利用第1题的函数)
例如:11012=1(23)+1(22)+0(21)+1(20)=1310
所以,如果输入1101,则应输出13。
例如:11012=1(23)+1(22)+0(21)+1(20)=1310
所以,如果输入1101,则应输出13。
#include <iostream>
using namespace std;
//调用函数
//计算x的n次方
double power (double x, int n);
{
int i;
double d=1;
for(i=0;i<n;i++)
d *= x ;
return d;
}
//主函数
int main()
{
int value = 0;
char ch;
cout << "请输入一个8位2进制的数:\n ";
for (int i = 7; i >= 0; i--)
{
cin >> ch;
if (ch == '1')
value += static_cast<int>(power(2, i));
if (ch >'1' )
{
cout << "输入的值不符合要求"<<endl;
break;
}
}
cout<<"该数转化成10进制的数为: \n"<<value << endl;;
return 0;
}
3、寻找并输出11~999之间的数m,它满足m、m2和m3均为回文数。
– 回文:各位数字左右对称的整数。
例如:11满足上述条件
112=121,113=1331.
分析:
用除10取余的方法,从最低位开始,依次取出该数的各位数字。按反序重新构成新的数,比较与原数是否相等,若相等,则原数为回文。
– 回文:各位数字左右对称的整数。
例如:11满足上述条件
112=121,113=1331.
分析:
用除10取余的方法,从最低位开始,依次取出该数的各位数字。按反序重新构成新的数,比较与原数是否相等,若相等,则原数为回文。
#include<iostream>
using namespace std;
//调用函数
bool symm(unsigned n)
{
unsigned i=n;
unsigned m=0;
while(i>0)
{
m=m*10+i%10;
i=i/10;
}
return m==n;
}
//主函数
int main()
{
for(unsigned m=11;m<1000;m++)
if(symm(m)&&symm(m*m)&&symm(m*m*m))
{
cout<<" m="<<m<<"\t";
cout<<" m*m="<<m*m<<"\t";
cout<<" m*m*m="<<m*m*m<<endl;
}
return 0;
}
4、编写一个函数,求一个圆的面积。以半径为函数参数,返回值为函数的面积。用 main()函数调用。
#include<iostream>
using namespace std;
//调用函数
double area(double r)
{
return 3.14*r*r;
}
//主函数
int main()
{
double r;
cout<<"请输入圆的半径r(cm):";
cin>>r;
cout<<"该圆的面积为:"<<area(r)<<"平方厘米"<<endl;
return 0;
}
5、编写一个求n!的函数,并用于求从n个数中取m个数的组合数(m<=n)。组合数=n!/(m!*(n-m)!) 。
#include<iostream>
using namespace std;
//调用函数
int fact(int n){ //阶乘函数;
int pro;//pro,即product,乘积,
if(n<=1)
pro=1;
else
pro=n*fact(n-1);
return(pro);
}
//主函数
int main(){
int m,n;
int fact(int);//实现阶乘的函数
cout<<"请输入m、n,其中m>=n"<<endl;
cout<<"m=";
cin>>m;
cout<<"n=";
cin>>n;
while(m<n){
cout<<"输入的值不符合要求!"<<endl;
cout<<"m=";
cin>>m;
cout<<"n=";
cin>>n;
}
cout<<"所产生的组合数为:"<<fact(m)/(fact(n)*fact(m-n))<<endl;
return 0;
}
6、编写一个判断一个数是否是完数的函数,用main()函数调用。并求10—100以内的完数有哪些?
#include<iostream>
using namespace std;
//调用函数
int isPerfectNum(int n)//判断n是否为完数,如果是,则返回1,否则返回0.
{
int i,s=0;
for(i = 1; i < n; i ++)//遍历小于n的整数。
if(n%i==0)//可以整除,为真因子。
s+=i;//累加每个真因子到s上。
if(s==n)
return 1; //符合完数条件,返回1。
else return 0;//不是完数,返回0。
}
//主函数
int main()
{
for(int i=10;i<=100;i++)
{
if(isPerfectNum(i))//判断是否为完数,并输出结果。
cout<<i<<"是完数"<<endl;
else
cout<<i<<"不是完数"<<endl;
}
return 0;
}