C语言——函数练习程序

1.从终端接收一个数,封装一个函数判断该数是否为素数

cpp 复制代码
#include <stdio.h>

int pri(int num)
{
    int i = 0;

    for (i = 2; i < num; i++)
    {
        if (num % i ==0)
        {
            return 0;
            break;
        }
    }

    if (i == num-1)
    {
        return 1;
    }
}

int main(void)
{
    int num = 0;
    int ret = 0;

    scanf("%d", &num);

    ret = pri(num);

    if (ret)
    {
        printf("该数是素数!\n");
    }else
    {
        printf("该数不是素数!\n");
    }

    return 0;
}

2.封装一个函数实现获得两个数的最大公约数

cpp 复制代码
#include <stdio.h>

int gcd(int num1, int num2)
{
    int i = 1;
    int j = 1;
    int cnt_1 = 0;
    int cnt_2 = 0;
    int n1[100] = {0};
    int n2[100] = {0};
    int tmp = 0;
    
    for (i = 1; i <= num1; i++)
    {
        if (num1 % i == 0)
        {
            n1[cnt_1] = i;
            cnt_1++;
        }
    }

    for (j = 1; j <= num2; j++)
    {
        if (num2 % j == 0)
        {
            n2[cnt_2] = j;
            cnt_2++;
        }
    }

    for (i = 0; i < cnt_1-1; i++)
    {
        for (j = 0; j < cnt_1-1-i; j++)
        {
            if (n1[j] > n1[j+1])
            {
                tmp = n1[j];
                n1[j] = n1[j+1];
                n1[j+1] = tmp;
            }
        }
    }

    for (i = 0; i < cnt_2-1; i++)
    {
        for (j = 0; j < cnt_2-1-i; j++)
        {
            if (n2[j] > n2[j+1])
            {
                tmp = n2[j];
                n2[j] = n2[j+1];
                n2[j+1] = tmp;
            }
        }
    }

    for (i = cnt_1-1; i >= 0; i--)
    {
        for (j = cnt_2-1; j >= 0; j--)
        {
            if (n1[i] == n2[j])
            {
                return n1[i];
            }

        }
    }
}

int main(void)
{
    int num1 = 0;
    int num2 = 0;
    int ret = 0;

    scanf("%d%d", &num1, &num2);

    ret = gcd(num1, num2);

    printf("最大公约数为%d\n", ret);
    
}

3.封装一个函数实现获得两个数的最小公倍数

cpp 复制代码
#include <stdio.h>

int lcm(int num1, int num2)
{
    int n1[100] = {0};
    int n2[100] = {0};
    int i = 0;
    int j = 0;
    for (i = 0; i < 100; i++)
    {
        n1[i] = num1 * (i+1);
    }

    for (i = 0; i < 100; i++)
    {
        n2[i] = num2 * (i+1);
    }

    for (i = 0; i < 100; i++)
    {
        for (j = 0; j < 100; j++)
        {
            if (n1[i] == n2[j])
            {
                return n1[i];
            }
        }

    }

}

int main(void)
{
    int num1 = 0;
    int num2 = 0;
    int ret = 0;

    scanf("%d%d", &num1, &num2);

    ret = lcm(num1, num2);
    
    printf("最小公倍数为:%d\n", ret);

    return 0;
}

4. 封装一个函数判断该年是否为闰年

cpp 复制代码
#include <stdio.h>

int leapyear(int year)
{
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
    {
        return 1;
    }

    return 0;
}

int main(void)
{
    int year = 0;
    int ret = 0;
    
    scanf("%d", &year);
    ret = leapyear(year);

    if (ret == 1)
    {
        printf("该年是闰年!\n");
    }else 
    {
        printf("该年是非闰年!\n");
    }
    
    return 0;
}
相关推荐
2601_966949658 小时前
如何根据研究的起止时间截取分钟级行情?Python 实战与 QuantDash 数据处理指南
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
晨曦中的暮雨10 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
喵了几个咪10 小时前
GoWind CMS 拆解:在 Go 里给 TipTap 搭一套 Yjs 协同后端
开发语言·后端·golang
程序员清风11 小时前
数据处理脚本工程化:日志、配置、命令行与测试
服务器·开发语言·数据库
2601_9628857212 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
Wang's Blog13 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
下一站春风里13 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法
天外飞雨道沧桑14 小时前
我在浏览器里练了一个 792 参数的大模型,它学会了补全 JavaScript
开发语言·javascript·ai·ecmascript·ai编程
hhhjhl14 小时前
Yup 跨端三方库仓颉适配全流程
java·开发语言
运维行者_15 小时前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php