【Leecode 随笔】C语言版看了不后悔系列持续更新中。。。

在这里插入图片描述

🌈你好呀!我是 山顶风景独好
🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分使然!😊
🌸愿您在此停留的每一刻,都沐浴在轻松愉悦的氛围中。
📖这里不仅有丰富的知识和趣味横生的内容等您来探索,更是一个自由交流的平台,期待您留下独特的思考与见解。🌟
🚀让我们一起踏上这段探索与成长的旅程,携手挖掘更多可能,共同进步!💪✨

题目一:实现一个函数,计算两个整数的最大公约数(GCD)

题目分析:

最大公约数(Greatest Common Divisor, GCD)是两个或多个整数共有的最大的正整数约数。计算GCD的方法有很多,其中最著名的是欧几里得算法(Euclidean Algorithm)。该算法基于以下观察:如果q和r是a除以b的商和余数,即a = bq + r,那么a和b的GCD等于b和r的GCD。通过递归应用这一原理,直到余数为0,此时的除数即为GCD。

解题思路:

使用欧几里得算法。
定义两个整数a和b,其中a >= b。
在a%b != 0的情况下,不断用b替换a,用a%b替换b。
当a%b == 0时,b即为所求GCD。

示例代码:

#include <stdio.h>  
  
// 函数声明  
int gcd(int a, int b);  
  
int main() {  
    int num1, num2, result;  
      
    // 输入两个整数  
    printf("Enter two integers: ");  
    scanf("%d %d", &num1, &num2);  
      
    // 计算GCD  
    result = gcd(num1, num2);  
      
    // 输出结果  
    printf("The GCD of %d and %d is %d\n", num1, num2, result);  
      
    return 0;  
}  

// 计算GCD的函数实现  
int gcd(int a, int b) {  
    // 使用欧几里得算法  
    while (b != 0) {  
        int temp = b;  
        b = a % b;  
        a = temp;  
    }  
    return a;  
}

代码解析:

gcd函数通过while循环实现了欧几里得算法的递归过程。
main函数中,用户输入两个整数,调用gcd函数计算并输出结果。

题目二:实现一个函数,判断一个整数是否为素数

题目分析:

素数是大于1的自然数,除了1和它本身外,不能被其他自然数整除。判断一个数是否为素数,最直接的方法是尝试除以从2到该数平方根之间的所有整数。如果都不能整除,则该数是素数。

解题思路:

输入一个整数n。
如果n <= 1,则n不是素数。
对于n > 1,检查2到sqrt(n)之间的每个整数i,如果n能被i整除,则n不是素数。
如果n不能被上述任何整数整除,则n是素数。

示例代码:

#include <stdio.h>  
#include <math.h>  
#include <stdbool.h>  
  
// 函数声明  
bool isPrime(int n);  
  
int main() {  
    int num;  
    bool result;  
      
    // 输入一个整数  
    printf("Enter an integer: ");  
    scanf("%d", &num);  
      
    // 判断是否为素数  
    result = isPrime(num);  
      
    // 输出结果  
    if (result) {  
        printf("%d is a prime number.\n", num);  
    } else {  
        printf("%d is not a prime number.\n", num);  
    }  
      
    return 0;  
}  
  
// 判断是否为素数的函数实现  
bool isPrime(int n) {  
    // 小于等于1的数不是素数  
    if (n <= 1) return false;  
      
    // 检查2到sqrt(n)之间的数  
    for (int i = 2; i <= sqrt(n); i++) {  
        if (n % i == 0) return false;  
    }  
    return true;  
}

代码解析:

isPrime函数通过for循环检查2到sqrt(n)之间的每个整数。
main函数中,用户输入一个整数,调用isPrime函数判断并输出结果。
使用了math.h库中的sqrt函数计算平方根,以及stdbool.h库中的bool类型表示布尔值。

题目三:实现一个函数,对给定的字符串进行排序(按字母顺序)

题目分析:

字符串排序是计算机科学中的一个基本问题,它要求对字符串中的字符进行重新排列,使得排列后的字符串按字母顺序排列。在C语言中,可以使用冒泡排序、选择排序、插入排序等多种排序算法来实现。

解题思路:

输入一个字符串。
将字符串转换为字符数组。
使用冒泡排序算法对字符数组进行排序。
输出排序后的字符串。

示例代码:

#include <stdio.h>  
#include <string.h>  
  
// 函数声明  
void bubbleSort(char arr[], int n);  
void swap(char *xp, char *yp);  
  
int main() {  
    char str[100];  
      
    // 输入一个字符串  
    printf("Enter a string: ");  
    fgets(str, sizeof(str), stdin);  
      
    // 去除换行符  
    str[strcspn(str, "\n")] = '\0';  
      
    // 获取字符串长度  
    int n = strlen(str);  
      
    // 对字符串进行排序  
    bubbleSort(str, n);  
      
    // 输出排序后的字符串  
    printf("Sorted string: %s\n", str);  
      
    return 0;  
}  
  
// 冒泡排序函数实现  
void bubbleSort(char arr[], int n) {  
    for (int i = 0; i < n-1; i++) {  
        for (int j = 0; j < n-i-1; j++) {  
            if (arr[j] > arr[j+1]) {  
                swap(&arr[j], &arr[j+1]);  
            }  
        }  
    }  
}  
  
// 交换两个字符的函数实现  
void swap(char *xp, char *yp) {  
    char temp = *xp;  
    *xp = *yp;  
    *yp = temp;  
}

代码解析:

bubbleSort函数实现了冒泡排序算法,通过两层循环比较并交换相邻字符,直到整个字符串有序。
swap函数用于交换两个字符的位置。
main函数中,用户输入一个字符串,调用bubbleSort函数排序并输出结果。
使用了string.h库中的strlen函数计算字符串长度,以及fgets函数安全读取字符串。


✨ 这就是今天要分享给大家的全部内容了,我们下期再见!😊
🏠 我在CSDN等你哦!我的主页😍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山顶风景独好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值