eg——输入一个8位二进制数,将其转换为十进制数输出
例如: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;
}
如果使用头文件#include<cmath>
#include <iostream>
using namespace std;
//主函数
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>(pow(2, i));
if (ch > '1')
{
cout << "输入的值不符合要求" << endl;
break;
}
}
cout << "该数转化成10进制的数为: \n" << value << endl;;
return 0;
}
运行结果如下——
寻找并输出11~999之间的数m,它满足m、m2和m3均为回文数。
– 回文:各位数字左右对称的整数。
例如: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;
}
运行结果如下——
编写一个求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;
}
运行结果如下——
编写一个判断一个数是否是完数的函数,用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;
}
运行结果如下——