第二章:算法—程序的灵魂

函数求阶乘

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);
    }
在这里插入代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值