C语言算法总结

PS:全文代码均为本人手写,如有错误,欢迎各位私信指正错误,如有疑问,欢迎私信询问。觉得文章有用的小伙伴多多点赞+收藏+关注,各位的支持是作者之后更新文章的最大动力!希望我的分享能给大家带来帮助!

  1. 输入年份和月份判断天数(包含闰年的判断)
cpp 复制代码
#include<stdio.h>

int judgeleapyear(int y)
{
    int lp = 0;

    if (y%4==0 && y%100!=0 || y%400==0)
    {
        lp = 1;
    }else
    {
        lp = 0;
    }

    return lp;
}


int judgedays(int y, int m)
{
    int days = 0;

    if (m==4 || m==6 || m==9 || m==11)
    {
        days = 30;
    }else if (m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)
    {
        days = 31;

    }else if (judgeleapyear(y) == 1)
    {
        days = 29;
    }else
    {
        days = 28;
    }
    
    return days;
}


int main(void)
{
    int y = 0;
    int m = 0;
    printf("Input year and month:\n");
    scanf("%d%d",&y,&m);

    printf("%d\n",judgedays(y,m));

    return 0;
}
  1. 打印100以内的素数
cpp 复制代码
#include<stdio.h>

int judgeprime(int a)
{
    int i = 0;
    int j = 1;

    for (i = 2; i < a-1; ++i)
    {
        if (a%i == 0)   //不是素数的条件
        {
            j = 0;
            break;
        }
    }

    return j;
}


void printfprime(int n)
{
    int i = 0;

    for (i = 2; i <= n; ++i)
    {
        if (judgeprime(i) == 1)
        {
            printf("%d\n",i);
        }
    }
}


int main(void)
{
    int n = 100;

    printfprime(n);

    return 0;

}
  1. 比较三个数的最大值
cpp 复制代码
#include<stdio.h>

int numMax3(int a, int b, int c)
{
    int max = 0;

    if (b > a)
    {
        max = b;
    }else if (b == a)
    {
        max = b;
    }else
    {
        max = a;
    }

    if (c > max)
    {
        max = c;
    }else if (c == max) 
    {
        max = c;
    }

    return max;
}


int main(void)
{
    int a = 0;
    int b = 0;
    int c = 0;
    printf("Input three num:\n");
    scanf("%d%d%d",&a,&b,&c);

    printf("max = %d\n",numMax3(a,b,c));

    return 0;

}
  1. 递归实现 n!(n的阶乘)
cpp 复制代码
#include <stdio.h>

int fact (int n)
{
    if (n == 1)
    {
        return 1;
    }else
    {
        return fact (n-1) * n;
    }
}


int main(void)
{
    int n = 0;
    printf("Input a num:\n");
    scanf("%d",&n);

    printf("%d\n",fact(n));
    
    return 0;
}
  1. 递归实现斐波那契数列前n项和计算
cpp 复制代码
#include <stdio.h>

int fibo (int n)
{
    if (n==1 || n==2 )
    {
        return 1;
    }else
    {
        return fibo (n-1) + fibo (n-2) ;
    }
}


int fibosum (int n)
{
    if (n==1 || n==2)
    {
        return n;
    }else
    {
        return fibosum (n-1) + fibo(n);
    }
}


int main(void)
{
    int n = 0;
    printf("Input a num:\n");
    scanf("%d",&n);

    printf("fibo(%d) = %d\n",n,fibo(n));
    printf("sum = %d\n",fibosum(n));
    
    return 0;
}
  1. 数组逆序
cpp 复制代码
#include<stdio.h>  //数组逆序

void arrayRever (int a[], int len)
{
    int t = 0;
    int i = 0;

    for (i = 0; i < len/2; ++i)
    {
        t = a[i];
        a[i] = a[len-1-i];
        a[len-1-i] = t;  
    }
}


void printArray(int a[],int len)//    数组输出
{
    int i = 0;
    for (i = 0; i < len; ++i)
    {
        printf("a[%d] = %d\n", i, a[i]);
    }
}


int main(void)
{
    int a[6] = {9,8,7,6,5,4};       
    int len = 6;        //计算给出数组长度为len
    
    arrayRever(a,len);
    printArray(a,len);  

    return 0;
}
相关推荐
项目申报小狂人11 分钟前
算法应用上新!自适应更新策略差分进化算法求解球形多飞行器路径规划问题,附完整MATLAB代码
开发语言·算法·matlab
PAK向日葵6 小时前
【算法导论】PDD 0817笔试题题解
算法·面试
地平线开发者9 小时前
ReID/OSNet 算法模型量化转换实践
算法·自动驾驶
地平线开发者9 小时前
开发者说|EmbodiedGen:为具身智能打造可交互3D世界生成引擎
算法·自动驾驶
星星火柴93610 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
艾莉丝努力练剑11 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
闪电麦坤9512 小时前
数据结构:迭代方法(Iteration)实现树的遍历
数据结构·二叉树·
C++、Java和Python的菜鸟12 小时前
第六章 统计初步
算法·机器学习·概率论
Cx330❀12 小时前
【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
c语言·数据结构·经验分享·笔记·算法·排序算法