函数求阶乘
for(i;i<=n;i++)
{
t*=n;
}
花式求前n向和
while(d<=100)//100可以换成n
{
s=-s;//int整型形成正负交替
t=s/d;
sum=sum+t;
d=d+1;
}
=====
for(d=1;d<=100;d++)
{
s=-s;
t=s/d;
sum+=t;
}
函数三项求最大值
int max(int x,int y)
{
int z;//这里不能int x,y;如果int x,y就是重定义,在debug时可以发现这一点
if(y>x)
z=y;
else
z=x;
return(z);
}
q=max(e,max(f,max(g,h)));//重复带入
函数三项排序//升序或者降序自由选择
if(a<b){
t=a;
a=b;
b=t;
}
if(a<c){
m=a;
a=c;
c=m;
}
if(b<c){
n=b;
b=c;
c=n;
}
判断同时被整除的函数
if(a%3==0&&a%5==0){
printf("%d能被3和5整除",a);
}
else
printf("%d不能被3和5整除",a);
最直观判断素数
for(m=100;m<=200;m++)
{
for(i=2;i<m;i++)//从2读到m-1
if(m%i==0)
break;
if(i>=m)
printf("%d\t",m);
}
其中m,n的值可以读取
简化到n/2,判断素数
int panduan(int n)
{
int i,temp;
temp=1;
for(i=2;i<n/2&&temp==1;i++)
if(n%i==0)
temp=0;
return(temp);
}
是素数,temp=1;
否则,temp=0
简化到开方,判断素数
for(m=100;m<=200;m++)
{
i=2;
while(i<=floor(sqrt(m))&&(m%i!=0))//floor为取整函数,取整函数可以规避数据类型不同的比较
++i;
if(i>floor(sqrt(m)))
printf("%d ",m);
}
#include<math.h>
最大公约数和最小公倍数
最直观算法,从较小数开始递减遍历
if(m<n) /*比较大小,使得m中存储大数,n中存储小数*/
{ /*交换m和n的值*/
temp=m;
m=n;
n=temp;//保证降序
}
for(i=n; i>0; i--) /*按照从大到小的顺序寻找满足条件的自然数,因为要找的最大公倍数,如果从i=0开始,则还需要一个选择过程,从最大数n开始则没有这个顾虑*/
if(m%i==0 && n%i==0)
{/*输出满足条件的自然数并结束循环*/
printf("The GCD of %d and %d is: %d\n", m, n, i);
break;
}
二元一次方程根函数
包括a=0,b=0,▲<0等情况
{
if(b==0)//b=0
printf("输入错误");
else
{
x=-1.0*c/b;//一次函数
printf("x=%f",x);
}
}
else
{
delt=b*b-4*a*c;//▲
if(delt>0)
{
x1=(-1.0*b+sqrt(b*b-4*a*c))/(2*a);
x2=(-1.0*b-sqrt(b*b-4*a*c))/(2*a);
printf("有两个实根x1=%f.x2=%f",x1,x2);
}
else if(delt==0)
{
x=(-1.0*b+sqrt(b*b-4*a*c))/(2*a);
printf("有一个实根x=%f",x);
}
else
{
x1=(-1.0*b+sqrt(b*b-4*a*c))/(2*a);
x2=(-1.0*b-sqrt(b*b-4*a*c))/(2*a);
printf("有两个虚根x1=%f.x2=%f",x1,x2);//这里的算法有点问题
}
闰年判断函数
简洁版
{
if((year%4==0&&year%100!=0)||(year%400==0))//注意到每一个括号的范围
printf("%d\n",year);
}
在这里插入代码片