您的位置:首页 > 其它

无聊,写点基础的东西。

2014-12-17 14:44 330 查看

求一的阶层加到n的阶层(n最大20,再大就无法表示了。)

#include <stdio.h>
int main()
{
__int64 n;
while(~scanf("%I64d",&n)&&n)
{
__int64 i,j;
__int64 sum1,sum;
sum1=1;
sum=0;
for(i=1;i<=n;i++)
{
for(j=i;j>=1;j--)
{
sum1*=j;
}
sum+=sum1;
sum1=1;
}
printf("%I64d\n",sum);
}
return 0;
}

找N个数的最大值和最小值。 

#include <stdio.h>
#define wbx 5000000
int a[wbx];
int main()
{
int n,min,max;
while(scanf("%d",&n)&&n)
{
int i;
min=9999999999;
max=-9999999999;
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
printf("max=%d min=%d\n",max,min);
}
return 0;
}

N个数从小到大排序,从大到小排序。

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define wbx 5000000
int a[wbx];
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
int i;
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);//sotr 函数排序。从小到大排。
printf("\n从小到大输出为\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n从大到小输出为\n");
for(i=n-1;i>=0;i--)
printf("%d ",a[i]);
printf("\n");
}
return 0;
}


同上用冒泡排序

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define wbx 5000000
int a[wbx];
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
int i,pp,j;
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
pp=a[i];
a[i]=a[j];
a[j]=pp;//冒泡排序。将第一个数分别与后面几个数比较,大的就滚到(交换)后面去。然后第二个数分别与后面几个数比较。以此类推。
}
}
printf("\n从小到大输出为\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n从大到小输出为\n");
for(i=n-1;i>=0;i--)
printf("%d ",a[i]);
printf("\n");
}
return 0;
}

 

  

求两点之间的距离输入的四个数是两个点的坐标。 

用了math.h   pow(a,b)代表a的b次方。

 

#include <stdio.h>
#include <math.h>
int main()
{
double x1,x2,y1,y2;
while(scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2)!= EOF)
{
printf("%.2lf\n",sqrt(pow(x1-x2,2)+pow(y1-y2,2)));
}
return 0;
}


排列组合,求N人中选M人有几种情况。前头输入两个数,任意输入。(有可能M大于N),此时要交换位置。

 

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define wbx 5000000
int a[wbx];
int main()
{
int n,m,t,i,j,sum;
while(scanf("%d%d",&n,&m)&&n)
{
if(m>n)
{
t=m;
m=n;
n=t;
}
sum=1;
for(i=n,j=1;j<=m;i--,j++)
{
sum*=i;
sum/=j;
}
printf("%d\n",sum);
}
return 0;
}

 

 

来个简单的a+b;

 

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define wbx 5000000
int a[wbx];
int main()
{
int a,b;
while(~scanf("%d%d",&a,&b))  //多组输入。
{
printf("%d + %d = ",a,b);
printf("%d\n",a+b);
}
return 0;
}


简单字符串处理。大写变小写。

#include <stdio.h>
#include <string.h>  //这个是字符窜的函数。
int main()
{
char s[10005];//定义字符窜
while(scanf("%s",s)!=EOF)
{
int l=strlen(s); //求的是输入字符窜的长度
int i;
for(i=0;i<l;i++)
{
if(s[i]>='A' &&s[i]<='Z')  //如果是大写的话
s[i]+=32;   //加上32变小写。
}
printf("得到的小写字母为\n");
puts(s);
printf("\n");
}
return 0;
}


 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM算法 amp c math.h printf