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;
}
相关推荐
一个响当当的名号15 分钟前
B树,B+树,B*树(无代码)
数据结构·b树
点云SLAM35 分钟前
C++ 常见面试题汇总
java·开发语言·c++·算法·面试·内存管理
叙白冲冲39 分钟前
哈希算法以及面试答法
算法·面试·哈希算法
YuTaoShao2 小时前
【LeetCode 每日一题】1277. 统计全为 1 的正方形子矩阵
算法·leetcode·矩阵
古译汉书2 小时前
嵌入式铁头山羊stm32-ADC实现定时器触发的注入序列的单通道转换-Day26
开发语言·数据结构·stm32·单片机·嵌入式硬件·算法
野犬寒鸦2 小时前
力扣hot100:相交链表与反转链表详细思路讲解(160,206)
java·数据结构·后端·算法·leetcode
阿昭L2 小时前
leetcode两数之和
算法·leetcode
周树皮不皮2 小时前
【Leetcode100】算法模板之二叉树
算法
无名客02 小时前
sentinel限流常见的几种算法以及优缺点
算法·sentinel·限流
GalaxyPokemon3 小时前
LeetCode - 1089. 复写零
数据结构