1.
// 计算一个整数的位数.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
int wei(int a)
{
static int total=0;
if(a/1000000000!=0) return total=10;
else if(a/100000000!=0) return total=9;
else if(a/10000000!=0) return total=8;
else if(a/1000000!=0) return total=7;
else if(a/100000!=0) return total=6;
else if(a/10000!=0) return total=5;
else if(a/1000!=0) return total=4;
else if(a/100!=0) return total=3;
else if(a/10!=0) return total=2;
else if(a%10!=0) return total=1;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a,b=1,c=1;
cout<<"请输入一个整数"<<endl;
cin>>a;
cout<<wei(a)<<endl;
for(int i=1;i<=9;++i)
{
b*=10;
if(a/b!=0)++c;
}
cout<<c;
return 0;
}
2.
// 水仙花数.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
int daffodil(int x)
{
int ge,shi,bai,sum=0;
ge=x%10;
//cout<<ge<<endl;
shi=(x/10)%10;
//cout<<shi<<endl;
bai=x/100;
// cout<<bai<<endl;
sum=ge*ge*ge+shi*shi*shi+bai*bai*bai;
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a;
cout<<"请输入一个数a:";
cin>>a;
//cout<<daffodil(a);
if(a==daffodil(a))
cout<<"a是一个水仙花数"<<endl;
else cout<<"a不是水仙花数"<<endl;
return 0;
}
3.
// 韩信点兵.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
int hanxin(int a,int b,int c)
{
int i=1;
while(!(i%3==a&&i%5==b&&i%7==c)) ++i;
return i;
}
int _tmain(int argc, _TCHAR* argv[])
{
int x,y,z;
cout<<"请输入个按各队列排列之后的余数:x(x<3),y(y<5),z(z<7)"<<endl;
cin>>x>>y>>z;
cout<<"总人数:"<<hanxin(x,y,z)<<endl;
return 0;
}
4.
// 倒三角形.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
void triangle(int n)
{
for(int j=n;j>0;--j)
{
for(int k=0;k<n-j;++k)//输出前面的空格
{cout<<" ";}
for(int i=0;i<2*j-1;++i)//输出*
{
cout<<"*";
}
cout<<endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int a;
cout<<"请输入倒三角形的层数:";
cin>>a;
triangle(a);//调用倒三角形
return 0;
}
5.
// 统计.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int n,a,m,occur=0;
vector<int>vec;
cout<<"请输入一个整数n"<<endl;
cin>>n;
cout<<"请输入n个整数分别是a1,...an"<<endl;
for(int i=1;i<=n;i++)
{ cin>>a;
vec.push_back(a);
}
cout<<"请输入一个数m来用于比较"<<endl;
cin>>m;
for(vector<int>::iterator iter=vec.begin();iter!=vec.end();iter++)
{
if(*iter<m) ++occur;
//cout<<*iter;
}
cout<<occur<<endl;
return 0;
}
6.
// 调和级数.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<iomanip>
using namespace std;
float harmony(int n)
{
double result=0.0;
for(int i=1;i<=n;++i)
{
result+=(double)1/i;
}
return result;
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
cout<<"请输入一个整数n:";
cin>>n;
cout<<fixed<<setprecision(3)<<harmony(n)<<endl;
return 0;
}
7.
// 近似计算.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
#define pi 3.14
int _tmain(int argc, _TCHAR* argv[])
{
double i,result=0.0,a=pi/4;
for(i=1;1/(2*i-1)>0.000001;++i)
{
if((int)i%2==0)
{
result-=1/(2*i-1);
}
else
{
result+=1/(2*i-1);
}
}
cout<<"i="<<i<<endl;
cout<<"real value:"<<endl;
cout<<"pi/4="<<a<<endl;
cout<<"appreciate value:"<<endl;
cout<<"pi/4="<<result;
return 0;
}
8.
// 子序列的和.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<iomanip>
using namespace std;
double subsequence(int m,int n)
{
double i;
double result=0.0;
i=m>n?n:m;
for(;i<=(m>n?m:n);++i)
{
result+=1/(i*i);
}
return result;
}
int _tmain(int argc, _TCHAR* argv[])
{
int m,n;
cout<<"请输入两个整数:";
cin>>m>>n;
cout<<"m,n之间的子序列的和为:"<<endl;
cout<<fixed<<setprecision(5)<<subsequence(m,n);
return 0;
}
9.
// 分数化小数.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<iomanip>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int a,b,c;
cout<<"请输入三个整数a,b,c:";
cin>>a>>b>>c;
cout<<fixed<<setprecision(c)<<(double)a/b<<endl;
return 0;
}
10.(刚开始不会,后来仔细想一下外加参考了一下网上的代码)
// 排列.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
int a[9];//定义一个数组来存储三个数中的每个数字
int ok(int t,int *z) ///分解t的值,将其存入z指向的三个数组元素,若满足要求返回1
{
int *p1,*p2;
for(p1=z;p1<z+3;p1++)
{
*p1=t%10; ///把t分解,得到个位上的数字
t/=10;//十位上的数字
for(p2=a;p2<p1;p2++) ///查询分解出的数字是否已经出现过
if(*p1==0||*p2==*p1)return 0; ///若重复则返回
}
return 1; //否则返回满足要求1
}
int main()
{
int m,count=0;
for(m=123;m<=333;m++) ///试探可能的三位数(首先要明白三个数当中最小的那个数不可能大于333,并且最小值为123.
//中间的那个数不可能大于666)
if(ok(m,a)&&ok(2*m,a+3)&&ok(3*m,a+6))// /若满足题意
cout<<"No."<<++count<<":"<<m<<" "<<2*m<<" "<<3*m<<endl;
}
/*
第二种方法
int f1(int a)
{
int b=0;
while(a)
{
int n=a%10;
a/=10;
b+=n;
}
return b;
}
int f2(int a)
{
int c=1;
while(a)
{
int n=a%10;
a/=10;
c*=n;
}
return c;
}
int main()
{
for(int i=123; i<=987/3; i++)
{
if( f1(i)+f1(2*i)+f1(3*i)==45 && f2(i)*f2(i*2)*f2(i*3)==362880)
cout << i<<" "<<2*i<<" "<<3*i << endl;
}
return 0;
}*/