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;
}
相关推荐
tinker在coding23 分钟前
Coding Caprice - Linked-List 1
算法·leetcode
XH华5 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生5 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_5 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
落魄君子5 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
菜鸡中的奋斗鸡→挣扎鸡6 小时前
滑动窗口 + 算法复习
数据结构·算法
Lenyiin6 小时前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin
郭wes代码6 小时前
Cmd命令大全(万字详细版)
python·算法·小程序
scan7246 小时前
LILAC采样算法
人工智能·算法·机器学习
菌菌的快乐生活6 小时前
理解支持向量机
算法·机器学习·支持向量机