函数
求绝对值
double getAbs( double x )
{
if(x>0)
return x;
else if(x==0)
return 0;
else
return -1*x;
}
海伦公式求面积
double getArea(double a, double b,double c)
{
double area,s;
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
return area;
}
bool validate(double a,double b,double c)
{
if(a+b>c&&a+c>b&&b+c>a)
return true;
else
return false;
}
水仙花数
bool narcissistic( int number )
{
int a,b,c,d;
a=number%1000/100;
b=number%1000%100/10;
c=number%1000%100%10;
d=a*a*a+b*b*b+c*c*c;
if(d==number)
return true;
else
return 0;
}
计算两点间的距离
double getDis(double x1, double y1,double x2,double y2)
{
double dis;
dis=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
return dis;
}
计算电费
double getCost(double x)
{
double a,b;
if(x<=0)
return 0;
else if(x<=50)
{
a=x*0.53;
return a;
}
else
{
b=50*0.53+(x-50)*0.58;
return b;
}
}
求pai值
double pai()
{
int f,d;
double t=1.0,m=1.0,pi=1,n=1;
for(f=1,d=3;n>=1e-8;f++,d+=2)
{
t=t*f,m=m*d;
n=t/m;
pi=pi+n;
}
return 2*pi;
}
最大公约数
int gcd(int m,int n)
{
if(n==0)
return m;
else
return gcd(n,m%n);
}
素数
bool isPrime(int mum)
{
int i=2,j=0;
for(i=2,j=0;i<mum;i++)
{
if(mum%i==0)
j++;
}
if(j==0)
return true;
else
return false;
}
斐波那契数列
void fibo(int a[],int n )
{
a[0]=1;a[1]=1;
for(int i=2;i<n;i++)
a[i]=a[i-2]+a[i-1];
}
删除数组元素
void delNum(int a[],int n,int x)
{
for(int i=x;i<n-1;i++)
a[i]=a[i+1];
}
数组元素的最大值
int getMax(int *pa, int size)
{
int i,max=pa[0];
for(i=1;i<size;i++)
if(max<pa[i])
max=pa[i];
return max;
}
删除字符串中的指定字符
void deleteChar(char *s, char c)
{
int i,j;
for(i=0,j=0;s[i]!='\0';i++)
if(s[i]!=c)
s[j++]=s[i];
s[j]='\0';
}
字符串比较
int stringcmp(char *s1,char *s2)
{
int i=0,j=0;
for(;s1[i]!='\0'||s2[j]!='\0';i++,j++)
{
if(s1[i]!=s2[j])
break;
}
return (s1[i]-s2[j]);
}
求两点间的距离
void Point::setValue(double newX,double newY)
{
x=newX;y=newY;
}
Point::Point(double newX,double newY):x(newX),y(newY)
{
//setValue(newX,newY);
}
double Point::getX()
{
return x;
}
double Point::getY()
{
return y;
}
double Point::getDistance(Point& p2)
{
double x1=getX();double y1=getY();
double x2=p2.getX();double y2=p2.getY();
return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
double getDistance(Point& p1,Point& p2)
{
return sqrt((p2.getX()-p1.getX())*(p2.getX()-p1.getX())+(p2.getY()-p1.getY())*(p2.getY()-p1.getY()));
}
字符串长度
int strLength(char str[])
{
int i=0;
for(;str[i]!='\0';i++);
return i;
}
自定义函数实现有序数组的插入
bool insert(int a[],int &n,int N,int key)
{
int i;
if(n<N)
{
for(i=n;a[i-1]>key&&i>=1;i--)
{
a[i]=a[i-1];
}
a[i]=key;
n++;
return true;}
else
return false;
}
自定义函数实现有序数组的删除
bool del(int a[],int &n,int key)
{
int i,j;
for(i=0;i<n;i++)
{
if(a[i]==key)
break;
}
if(i<n)
{
for(j=i;j<n-1;j++)
a[j]=a[j+1];
n--;
return true;}
else
return false;
}
自定义函数实现字符串的连接
void str_cat(char a[], char b[])
{
int i=0,j=0;
for(i=0;i<=162;i++)
if(a[i]=='\0')
{
for(j=0;j<81;j++,i++)
a[i]=b[j];
break;
}
}
从身份证号码中提取出生日期
void getBirth(char a[], char b[])
{
int i=0,j=6;
for(i=0,j=6;j<14,i<8;i++,j++)
b[i]=a[j];
}
自定义函数删除字符串中大小写字母之外的其它字符
int deleChar(char a[])
{
int i=0,j=0,x=0;
for(i=0;i<80;i++)
{
if(a[i]=='\0')
{
a[j]='\0';
break;
}
if(a[i]>='A'&&a[i]<='z')
{
a[j]=a[i];
j++;
}
else
{x++;}
}
return x;
}
编程
两正整数求和
#include<iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b;
c=a+b;
cout<<a<<"+"<<b<<"="<<c;
return 0;
}
圆的周长与面积
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double a,b,c;
cin>>a;
b=3.14;
c=2;
cout<<fixed<<setprecision(2)<<"area="<<a*b*a<<endl;
cout<<fixed<<setprecision(2)<<"circle="<<a*c*b<<endl;
return 0;
}
公里转换为英里
#include<iostream>
using namespace std;
int main()
{
double a;
cin>>a;
cout<<a/1.60934<<endl;
return 0;
}
小写字母转换为大写字母
#include<iostream>
using namespace std;
int main()
{
char c;
cin>>c;
cout<<char(c-32);
return 0;
}
合成新数
#include<iostream>
using namespace std;
int main()
{
int a,b,p;
cin>>a>>b;
p=a%100/10*100+a%10+b%100/10*1000+b%10*10;
cout<<"p="<<p<<endl;
return 0;
}
多项式求值
#include<iostream>
using namespace std;
int main()
{
float x;
cin>>x;
cout<<-4*x*x*x+5.8*x*x-2*x+2.6<<endl;
return 0;
}
计算圆柱体的表面积和体积
#include<iostream>
using namespace std;
int main()
{
double a,b;
cin>>a>>b;
cout<<"S="<<2*a*3.14*b+2*a*a*3.14<<endl;
cout<<"V="<<a*a*3.14*b<<endl;
return 0;
}
三数排序
#include<iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
if(a>b) swap(a,b);
if(a>c) swap(a,c);
if(b>c) swap(b,c);
cout<<a<<" "<<b<<" "<<c<<endl;
return 0;
}
判断奇偶性
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a;
b=a%2;
if(b==1)
cout<<"Odd";
else
cout<<"Even";
return 0;
}
构造有效三角形
#include<iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
if(a+b>c&&a+c>b&&b+c>a&&a>0&&b>0&&c>0)
cout<<"This is a triangle."<<endl;
else
cout<<"This is not a triangle."<<endl;
return 0;
}
计算分段函数值
#include<iostream>
using namespace std;
int main()
{
double x,y;
cin>>x;
if(x<0)
y=x*x;
else if(x==0)
y=1;
else
y=x+2;
cout<<"y="<<y<<endl;
return 0;
}
温度转换
#include<iostream>
using namespace std;
int main()
{
double x,f;
cin>>x;
f=x*9/5+32;
cout<<"F="<<f<<endl;
return 0;
}
数字逆序
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a;
b=a/100+a%100/10*10+a%10*100;
cout<<b;
return 0;
}
平方和
#include<iostream>
using namespace std;
int main()
{
for(int i=1000; i<10000; i++)
{if(i==(i/100+i%100)*(i/100+i%100))
cout<<i<<endl;}
return 0;
}
卡拉兹猜想
#include<iostream>
using namespace std;
int main()
{
int num,count=0;
cin>>num;
if(num<=1000)
while(num!=1)
{
if(num%2==0)
num=num/2,count++;
else
num=(3*num+1)/2,count++;
}
cout<<count<<endl;
return 0;
}
百马百担
#include<iostream>
using namespace std;
int main()
{
int b,m,s;
for(b=0;b<=33;b++)
for(m=0;m<=50;m++)
{
s=100-b-m;
if((3*b+2*m+s/2==100)&&s%2==0)
cout<<b<<" "<<m<<" "<<s<<endl;
}
return 0;
}
100-200之间素数
#include<iostream>
using namespace std;
int main()
{
int n=100,i=2,t=0,m=0;
for(n=100;n<200;n++)
{
for(i=2;i<n;i++)
{
if(n%i==0)
{t++;}
}
if(t==0)
{
cout<<" "<<n;
m++;
if(m%5==0)
{
cout<<endl;
}
}
t=0;
}
return 0;
}
完数
#include<iostream>
using namespace std;
int main()
{
int a,i,m;
for(a=1;a<=1000;a++)
{
m=0;
for(i=1;i<=a/2;i++)
if(a%i==0)
m=m+i;
if(a==m)
{
cout<<a<<"=1";
for(i=2;i<=a/2;i++)
{
if(a%i==0)
{
cout<<"+"<<i;
}
}
cout<<"\n";
}
}
return 0;
}
打印数字三角
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n,i=1,t=1;
cin>>n;
while(i<=n)
{cout<<setw(3)<<i;
t++;
if(t>i)
cout<<"\n",
i++,t=1;
}
return 0;
}
打印沙漏
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int k=0,i,j,n;
char c;
cin>>n>>c;
int sum=1;
for(i=2;;i++)
{
sum=sum+2*(2*i-1);
if(sum>n)
{
sum=sum-2*(2*i-1);
i--;break;
}
}
for(j=i;j>=1;j--)
{
for(k=1;k<=i-j;k++)
cout<<" ";
for(k=1;k<=2*j-1;k++)
cout<<c;
cout<<endl;
}
for(j=2;j<=i;j++)
{
for(k=1;k<=i-j;k++)
cout<<" ";
for(k=1;k<=2*j-1;k++)
cout<<c;
cout<<endl;
}
cout<<n-sum;
return 0;
}
数组逆序
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[10],n,i,j,t;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0,j=n-1;i<j;i++,j--)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
for(i=0;i<n;i++)
cout<<setw(4)<<a[i];
return 0;
}
排序
#include<iostream>
using namespace std;
const int N=10;
void SelectSort(int a[],int n);
int main()
{
int a[N],i,n;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
SelectSort(a,n);
for(i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}
void SelectSort(int a[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[j]<a[k])
k=j;
}
t=a[k],a[k]=a[i],a[i]=t;
}
}
对角线和
#include<iostream>
using namespace std;
int main()
{
int n,i,j,t=0;
cin>>n;
int a[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
for(i=0;i<n;i++)
t+=a[i][i];
cout<<t;
return 0;
}
行列转置
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int m,n,i,j;
cin>>m>>n;
int a[m][n],b[n][m];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
cin>>a[i][j];
b[j][i]=a[i][j];
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
cout<<setw(5)<<b[i][j];
cout<<endl;
}
return 0;
}
二维数组最大值
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int m,n,i,j,x=0,y=0;
cin>>m>>n;
int a[m][n];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(a[x][y]<a[i][j])
{
x=i;
y=j;
}
cout<<a[x][y]<<endl;
cout<<x<<endl;
cout<<y<<endl;
return 0;
}
杨辉三角
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n,i=0,j=0;
cin>>n;
int a[n][n];
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
if(j==0||j==i)
{ a[i][j] = 1;}
else
a[i][j] = a[i-1][j] + a[i-1][j-1];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
cout<<setw(5)<<a[i][j];
}
cout<<endl;
}
return 0;
}
幻方
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n][n];
for(int i=0;i<=n-1;i++)
{
for(int j=0;j<=n-1;j++)
a[i][j]=0;
}
int num=1;
int x=0;
int y=n/2;
int x1=0;
int y1=0;
while(num<=n*n)
{
a[x][y]=num;
num++;
x1=x;
y1=y;
x--;
if(x<0)
{
x=n-1;
}
y++;
if(y>n-1)
{
y=0;
}
if(a[x][y]!=0)
{
x=x1+1;
y=y1;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<setw(5)<<a[i][j];
}
cout<<endl;
}
return 0;
}
回文
#include<iostream>
#include<cstring>
using namespace std;
bool RW(char s[],int n);
int main()
{
char s[100];
cin.getline(s,100);
int n=strlen(s);
if(RW(s,n))
cout<<s<<"是回文"<<endl;
else
cout<<s<<"不是回文"<<endl;
return 0;
}
bool RW(char s[],int n)
{
int i=0,j=n-1;
for(;i<j;i++,j--)
if(s[i]!=s[j])
break;
if(i>=j)
return true;
else
return false;
}
个数统计
#include<iostream>
using namespace std;
int main()
{
char s[1000];int i,b[10]={0};
cin>>s;
for(i=0;s[i]!='\0';i++)
switch(s[i])
{
case '0':b[0]++;break;
case '1':b[1]++;break;
case '2':b[2]++;break;
case '3':b[3]++;break;
case '4':b[4]++;break;
case '5':b[5]++;break;
case '6':b[6]++;break;
case '7':b[7]++;break;
case '8':b[8]++;break;
case '9':b[9]++;break;
default:cout<<"不是正整数!"<<endl;
}
for(i=0;i<=9;i++)
{
if(b[i]!=0)
cout<<i<<':'<<b[i]<<endl;
}
return 0;
}
D进制加法
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d,i=0,s;
cin>>a>>b>>d;
s=a+b;
int m[100];
do
{
m[i++]=s%d;
s/=d;
}
while(s!=0);
for(i-=1;i>=0;i--)
cout<<m[i];
return 0;
}
两个字符串的合并
#include<iostream>
#include<cstring>
using namespace std;
void insertString(char str[],char c);
int main()
{
char str[100],a[20];
cin>>str;
cin>>a;
int i;
for(i=0;a[i]!='\0';i++)
insertString(str,a[i]);
cout<<str;
return 0;
}
void insertString(char str[],char c)
{
int i;
int n=strlen(str);
for(i=n-1;i>=0&&str[i]>c;i--)
str[i+1]=str[i];
str[i+1]=c;
str[n+1]='\0';
}
非负整数排序
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char s[100],c;
cin>>s;
int i,j,len=strlen(s);
for(j=0;j<len-1;j++)
for(i=0;i<len-1-j;i++)
if(s[i]>s[i+1])
{c=s[i];
s[i]=s[i+1];
s[i+1]=c;}
for(i=0,j=0;i<len;i++)
if(s[i]!='0')
s[j++]=s[i];
s[j]='\0';
if(j>0)
cout<<s;
else
cout<<0;
return 0;
}
猜数游戏
#include<iostream>
using namespace std;
int main()
{
int x,i=1;
int magic;
cin>>magic;
while(1)
{
cin>>x;
if(x==magic)
{printf("猜对了");break;
}
else if(x>magic)
{printf("猜大了\n")
;}
else if(x<magic)
{printf("猜小了\n");}
if(i>=5)
{printf("游戏失败");break;}
i++;
}
return 0;
}
小球自由落体
#include<iostream>
using namespace std;
int main()
{
int m,n,i=1;
cin>>n>>m;
while(i<=m)
{
n/=2;
i++;
}
cout<<n;
return 0;
}
打印图案
#include<iostream>
using namespace std;
int main()
{
int n,i=1,t=1;
cin>>n;
while(i<=n-n/2)
{cout<<" *";
t++;
if(t>2*i-1)
cout<<"\n",
i++,t=1;
}
i=n/2;
t=1;
while(i>0)
{cout<<" *";
t++;
if(t>2*i-1)
cout<<"\n",
i--,t=1;
}
return 0;
}
输出低于平均分的学生序号和成绩
#include<iostream>
using namespace std;
int main()
{
double a[30];
int x=0,z=0,i=0,n=0,t=0;
for(n=0;n<30;n++)
{
cin>>a[n];
if (a[n]==-1)
break;
else
t++;}
for(i=0;i<=t;i++)
{x+=a[i];}
for(i=0;i<t;i++)
{if(a[i]<=x/t)
{cout<<i<<":"<<a[i]<<endl;
z++;}
}
cout<<"There are "<<z;
return 0;
}
有序数组(已初始化)的插入
#include<iostream>
using namespace std;
int main()
{
const int N=6;
int a[N]={1,3,5,7,9};
int n,i=5,j;
cin>>n;
if(a[4]<=n)
a[5]=n;
else
{for(i=0;i<5;i++)
if(a[i]>n)
{
for(j=4;j>=i;j--)
{a[j+1]=a[j];}
a[i]=n;
break;
}}
for(i=0;i<6;i++)
cout<<" "<<a[i];
return 0;
}
有序数组(输入)的插入
#include<iostream>
using namespace std;
int main()
{
int N;
cin>>N;
int a[N];
int t=0;
for(t=0;t<N;t++)
cin>>a[t];
int n,i=0,j;
cin>>n;
if(a[N-1]<=n)
a[N]=n;
else
{for(i=0;i<N;i++)
if(a[i]>n)
{
for(j=N-1;j>=i;j--)
{a[j+1]=a[j];}
a[i]=n;
break;
}}
for(i=0;i<N+1;i++)
cout<<" "<<a[i];
return 0;
}
有序数组元素的删除
#include<iostream>
using namespace std;
int main()
{
int N;
cin>>N;
int a[N];
int t=0,m=0;
for(t=0;t<N;t++)
cin>>a[t];
int n,i=0,j;
cin>>n;
for(i=0;i<N;i++)
{if(a[i]!=n)
m++;}
if(m==N)
{cout<<"delete fail.";}
else
{for(i=0;i<N;i++)
if(a[i]==n)
{
for(j=i;j<N;j++)
{a[j]=a[j+1];}
break;
}
for(i=0;i<N-1;i++)
cout<<a[i]<<" ";}
return 0;
}
输出杨辉三角
#include<iostream>
using namespace std;
int main()
{
int n,i=0,j=0;
cin>>n;
int a[n][n];
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
if(j==0||j==i)
{ a[i][j] = 1;}
else
a[i][j] = a[i-1][j] + a[i-1][j-1];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
统计一行字符的各字符个数
#include<iostream>
using namespace std;
const int n=81;
int main()
{
char s[n];
int t,i,upper=0;
cin.getline(s,n);
for(i=0;s[i]!='\0';i++)
{if(s[i]>='A'&&s[i]<='Z')
upper++;
t=i+1;}
cout<<"upper:"<<upper<<endl;
int lower=0;
for(i=0;s[i]!='\0';i++)
if(s[i]>='a'&&s[i]<='z')
lower++;
cout<<"lower:"<<lower<<endl;
int digit=0;
for(i=0;s[i]!='\0';i++)
if(s[i]>='0'&&s[i]<='9')
digit++;
cout<<"digit:"<<digit<<endl;
int space=0;
for(i=0;s[i]!='\0';i++)
if(s[i]==' ')
space++;
cout<<"space:"<<space<<endl;
int other;
other=t-upper-lower-digit-space-other;
cout<<"other:"<<other;
return 0;
}
统计一行字符中的大写字母的个数
#include<iostream>
using namespace std;
const int n=81;
int main()
{
char s[n];
int i,upper=0;
cin.getline(s,n);
for(i=0;s[i]!='\0';i++)
if(s[i]>='A'&&s[i]<='Z')
upper++;
cout<<upper;
return 0;
}