31个C语言实战经典例子,期末考试/考研必背

  1. 判断一个年份是否为闰年:
    #include<stdio.h>
    
    int isLeapYear(int year) {
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {  // 判断是否能被4整除但不能被100整除,或者能被400整除
            return 1;  // 是闰年
        }
        
        return 0;  // 不是闰年
    }
    
    int main() {
        int year = 2020;
    
        if (isLeapYear(year)) {
            printf("%d is a leap year\n", year);
        } else {
            printf("%d is not a leap year\n", year);
        }
    
        return 0;
    }
    
    #手动输入年份
    
    
    #include<stdio.h>
    
    int isLeapYear(int year) {
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {  // 判断是否能被4整除但不能被100整除,或者能被400整除
            return 1;  // 是闰年
        }
    
        return 0;  // 不是闰年
    }
    
    int main() {
        int year;
    
        printf("请输入一个年份:");
        scanf("%d", &year);
    
        if (isLeapYear(year)) {
            printf("%d 是闰年\n", year);
        } else {
            printf("%d 不是闰年\n", year);
        }
    
        return 0;
    }
    

  2. 计算两个数的最大公约数(欧几里得算法):
    #include<stdio.h>
    
    int gcd(int a, int b) {
        if (b == 0) {  // 如果第二个数为0,返回第一个数作为最大公约数
            return a;
        }
        
        return gcd(b, a % b);  // 递归计算最大公约数
    }
    
    int main() {
        int num1 = 48, num2 = 36;
    
        int result = gcd(num1, num2);
    
        printf("GCD of %d and %d is %d\n", num1, num2, result);
    
        return 0;
    }
    
    

    例子:计算48和36的最大公约数。首先,将会调用gcd(48, 36)函数。

    gcd函数内部,首先判断b是否为0,如果是0,则返回a作为最大公约数。在此例中,b不等于0,因此继续执行递归调用gcd(36, 48 % 36)

    再次进入gcd函数,判断b是否为0。由于48 % 36的结果为12,所以b不等于0,继续执行递归调用gcd(12, 36 % 12)

    继续进入gcd函数,判断b是否为0。由于36 % 12的结果为0,所以b等于0,返回a的值12作为最大公约数。

    回到main函数,将得到的最大公约数12赋值给变量result,然后使用printf函数输出结果:"GCD of 48 and 36 is 12"。

    因此,输出的结果是"GCD of 48 and 36 is 12"。

  3. 将一个二进制数转换为十进制数:
    #include<stdio.h>
    
    int binaryToDecimal(int binary) {
        int decimal = 0, base = 1;
    
        while (binary > 0) {
            int reminder = binary % 10;  // 获取最后一位数字
            decimal += reminder * base;  // 将最后一位数字乘以对应的权重加到结果中
            binary /= 10;  // 去掉最后一位数字
            base *= 2;  // 权重每次乘以2
        }
    
        return decimal;  // 返回对应的十进制数
    }
    
    int main() {
        int binary = 101010;
        
        int decimal = binaryToDecimal(binary);
    
        printf("Binary number %d in decimal is %d\n", binary, decimal);
    
        return 0;
    }
    
    计算二进制数101010转换为十进制数的过程如下:
    
    初始值:binary = 101010, decimal = 0, base = 1
    
    第一次循环:
    
    reminder = binary % 10 = 0 (获取最后一位数字)
    decimal += reminder * base = 0 * 1 = 0 (将最后一位数字乘以权重加到结果中)
    binary /= 10 = 10101 (去掉最后一位数字)
    base *= 2 = 1 * 2 = 2 (权重每次乘以2)
    第二次循环:
    
    reminder = binary % 10 = 1
    decimal += reminder * base = 1 * 2 = 2
    binary /= 10 = 1010
    base *= 2 = 2 * 2 = 4
    第三次循环:
    
    reminder = binary % 10 = 0
    decimal += reminder * base = 0 * 4 = 0
    binary /= 10 = 101
    base *= 2 = 4 * 2 = 8
    第四次循环:
    
    reminder = binary % 10 = 1
    decimal += reminder * base = 1 * 8 = 8
    binary /= 10 = 10
    base *= 2 = 8 * 2 = 16
    第五次循环:
    
    reminder = binary % 10 = 0
    decimal += reminder * base = 0 * 16 = 0
    binary /= 10 = 1
    base *= 2 = 16 * 2 = 32
    第六次循环:
    
    reminder = binary % 10 = 1
    decimal += reminder * base = 1 * 32 = 32
    binary /= 10 = 0
    base *= 2 = 32 * 2 = 64
    循环结束,此时binary = 0,跳出while循环。
    
    最终结果:decimal = 32
    
    因此,二进制数101010转换为的十进制数为32。

  4. 实现斐波那契数列(递归版本):
    #斐波那契数列是一个数列,其中每个数字都是前两个数字之和。
    
    #include<stdio.h>
    
    int fibonacci(int n) {
        if (n <= 1) {  // 斐波那契数列的前两个数字是1
            return n;
        }
    
        return fibonacci(n - 1) + fibonacci(n - 2);  // 递归调用计算下一个数字
    }
    
    int main() {
        int n = 7;
    
        printf("Fibonacci series up to index %d: ", n);
        for (int i = 0; i <= n; i++) {
            printf("%d ", fibonacci(i));
        }
        printf("\n");
    
        return 0;
    }
    
    
    在这个例子中,我们希望计算斐波那契数列的前n个数字。
    
    首先,在 main 函数中定义了一个变量 n 并赋值为 7。
    
    然后,调用 printf 函数输出提示信息:
    "Fibonacci series up to index 7: "。
    
    接着,使用 for 循环从0到n遍历,变量 i 表示当前的索引位置。
    在循环内部,调用 fibonacci 函数,并传入 i 作为参数。
    fibonacci 函数根据传入的索引位置计算对应的斐波那契数,并返回结果。
    使用 printf 函数将计算得到的数值输出。
    
    循环执行完毕后,调用 printf 函数输出换行符"\n"。
    
    最后,返回0表示程序正常结束。
    
    运行以上代码,输出结果为:
    Fibonacci series up to index 7: 0 1 1 2 3 5 8 13
    
    因此,输出的结果是斐波那契数列的前7个数字:
    "0 1 1 2 3 5 8 13"。

  5. 将一个十进制数转换为二进制数:
    #include<stdio.h>
    
    void decimalToBinary(int decimal) {
        int binary[32], index = 0;
    
        while (decimal > 0) {
            binary[index++] = decimal % 2;  // 获取余数作为二进制位
            decimal /= 2;  // 计算商继续转换
        }
    
        printf("Binary representation: ");
        for (int i = index - 1; i >= 0; i--) {
            printf("%d", binary[i]);  // 倒序输出二进制位
        }
        printf("\n");
    }
    
    int main() {
        int decimal = 42;
    
        decimalToBinary(decimal);
    
        return 0;
    }
    
    
    以上是一个将十进制数转换为二进制数的示例代码。
    
    在此示例中,我们定义了一个名为 `decimalToBinary` 的函数,
    该函数接受一个十进制数作为参数,并将其转换为二进制数。
    
    在 `decimalToBinary` 函数内部,我们首先定义了一个大小为32的整数数组 `binary` 
    和一个变量 `index`,用于保存二进制数的每一位和当前位置。
    
    然后,我们使用一个 `while` 循环来进行转换。循环条件是十进制数大于0。
    在每次循环迭代中,我们通过对2取余数的方式获取当前位的二进制值,并将其存储在 `binary` 数组中。然后,我们将十进制数除以2(即向右移位),以计算下一位的值。同时,`index` 变量自增,表示当前位置已经用于存储了一个二进制位。
    
    循环结束后,我们使用 `printf` 函数输出提示信息:"Binary representation: "。
    
    接下来,我们使用一个 `for` 循环从最高位开始,倒序输出 `binary` 数组中的二进制位。循环条件是 `i` 大于等于0,每次迭代时,`i` 自减。
    
    最后,我们使用 `printf` 函数输出换行符 "\n"。
    
    在 `main` 函数中,我们定义了一个变量 `decimal` 并赋值为42。
    
    然后,调用 `decimalToBinary` 函数并传入 `decimal` 作为参数进行转换。
    
    最后,返回0表示程序正常结束。
    
    运行以上代码,输出结果为:Binary representation: 101010
    
    因此,42的二进制表示为101010。

  6. 求一个数组中的最大值和最小值:
    #include<stdio.h>
    
    // 函数:查找数组中的最小值和最大值
    void findMinMax(int arr[], int size) {
        int min = arr[0], max = arr[0];
    
        // 遍历数组,更新最大值和最小值
        for (int i = 1; i < size; i++) {
            if (arr[i] < min) {  // 如果当前元素小于最小值,则更新最小值
                min = arr[i];
            }
            if (arr[i] > max) {  // 如果当前元素大于最大值,则更新最大值
                max = arr[i];
            }
        }
    
        // 输出最小值和最大值
        printf("Minimum value: %d\n", min);
        printf("Maximum value: %d\n", max);
    }
    
    // 主函数
    int main() {
        int arr[] = {64, 34, 25, 12, 22, 11, 90};  // 数组
        int size = sizeof(arr) / sizeof(arr[0]);  // 数组大小
    
        // 调用函数查找最小值和最大值
        findMinMax(arr, size);
    
        return 0;
    }
    

  7. 实现简单的计算器(加法、减法、乘法、除法):
    #include <stdio.h>
    
    int add(int a, int b) {
        return a + b;
    }
    
    int subtract(int a, int b) {
        return a - b;
    }
    
    int multiply(int a, int b) {
        return a * b;
    }
    
    float divide(int a, int b) {
        if (b != 0) {  // 避免除数为0
            return (float)a / b;
        }
        return -1;  // 返回-1表示非法操作
    }
    
    int main() {
        char expr[100];  // 定义字符数组存储用户输入的表达式
        int num1, num2;
        char op;
    
        printf("请输入表达式:");
        scanf("%s", expr);  // 读取用户输入的表达式
    
        // 从表达式中提取数字和运算符号
        sscanf(expr, "%d %c %d", &num1, &op, &num2);
    
        // 根据运算符号进行相应的运算
        switch (op) {
            case '+':
                printf("%d + %d = %d\n", num1, num2, add(num1, num2));
                break;
            case '-':
                printf("%d - %d = %d\n", num1, num2, subtract(num1, num2));
                break;
            case '*':
                printf("%d * %d = %d\n", num1, num2, multiply(num1, num2));
                break;
            case '/':
                printf("%d / %d = %.2f\n", num1, num2, divide(num1, num2));
                break;
            default:
                printf("非法运算符号\n");
                break;
        }
    
        return 0;
    }
    

  8. 判断一个字符串是否为回文字符串:
    #include<stdio.h>
    #include<string.h>
    
    int isPalindrome(char str[]) {
        int len = strlen(str);
        
        for (int i = 0, j = len - 1; i < j; i++, j--) {
            if (str[i] != str[j]) {  // 检查对应位置的字符是否相等
                return 0;  // 不是回文字符串
            }
        }
        
        return 1;  // 是回文字符串
    }
    
    int main() {
        char str[] = "level";
        
        if (isPalindrome(str)) {
            printf("%s is a palindrome\n", str);
        } else {
            printf("%s is not a palindrome\n", str);
        }
        
        return 0;
    }
    

  9. 实现简单的线性查找算法在数组中查找指定元素:
    #include<stdio.h>
    
    int linearSearch(int arr[], int size, int target) {
        for (int i = 0; i < size; i++) {
            if (arr[i] == target) {  // 如果找到目标元素,返回索引
                return i;
            }
        }
        
        return -1;  // 如果未找到目标元素,返回-1
    }
    
    int main() {
        int arr[] = {5, 3, 9, 7, 2};
        int size = sizeof(arr) / sizeof(arr[0]);
        int target = 7;
    
        int index = linearSearch(arr, size, target);
    
        if (index != -1) {
            printf("Target element %d found at index %d\n", target, index);
        } else {
            printf("Target element %d not found\n", target);
        }
    
        return 0;
    }
    

  10. 实现选择排序算法对数组进行排序:
    #include<stdio.h>
    
    void selectionSort(int arr[], int size) {
        for (int i = 0; i < size - 1; i++) {
            int minIndex = i;  // 假设当前位置为最小值的索引
            
            for (int j = i + 1; j < size; j++) {
                if (arr[j] < arr[minIndex]) {  // 更新最小值的索引
                    minIndex = j;
                }
            }
            
            // 将最小值与当前位置交换
            int temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }
    
    int main() {
        int arr[] = {64, 34, 25, 12, 22, 11, 90};
        int size = sizeof(arr) / sizeof(arr[0]);
    
        selectionSort(arr, size);
    
        printf("Sorted array: ");
        for (int i = 0; i < size; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
    
        return 0;
    }
    

  11. 将一个十进制数转换为十六进制数:
    #include<stdio.h>
    
    void decimalToHexadecimal(int decimal) {
        char hexadecimal[100];
        int index = 0;
        
        while (decimal > 0) {
            int reminder = decimal % 16;  // 获取余数作为十六进制位
            
            if (reminder < 10) {
                hexadecimal[index++] = reminder + '0';  // 将数字直接转换为字符
            } else {
                hexadecimal[index++] = reminder - 10 + 'A';  // 将大于9的数字转换为对应的字母字符
            }
            
            decimal /= 16;  // 计算商继续转换
        }
        
        printf("Hexadecimal representation: ");
        for (int i = index - 1; i >= 0; i--) {
            printf("%c", hexadecimal[i]);
        }
        printf("\n");
    }
    
    int main() {
        int decimal = 305;
        
        decimalToHexadecimal(decimal);
    
        return 0;
    }
    

  12. 实现求和函数(递归版本):
    #include<stdio.h>
    
    int sum(int n) {
        if (n == 0) {  // 终止条件,当n等于0时,返回0
            return 0;
        }
    
        return n + sum(n - 1);  // 递归调用计算1到n的和
    }
    
    int main() {
        int n = 5;
    
        int result = sum(n);
    
        printf("Sum of first %d numbers is %d\n", n, result);
    
        return 0;
    }
    

  13. 判断一个数是否为素数:
    #include<stdio.h>
    
    int isPrime(int num) {
        if (num <= 1) {  // 小于等于1的数不是素数
            return 0;
        }
        
        for (int i = 2; i * i <= num; i++) {
            if (num % i == 0) {  // 如果能整除,则不是素数
                return 0;
            }
        }
        
        return 1;  // 是素数
    }
    
    int main() {
        int num = 17;
    
        if (isPrime(num)) {
            printf("%d is a prime number\n", num);
        } else {
            printf("%d is not a prime number\n", num);
        }
    
        return 0;
    }
    

  14. 实现插入排序算法对数组进行排序:
    #include<stdio.h>
    
    void insertionSort(int arr[], int size) {
        for (int i = 1; i < size; i++) {
            int key = arr[i];  // 当前待排序的元素
            int j = i - 1;
            
            while (j >= 0 && arr[j] > key) {  // 将大于当前元素的元素向后移动
                arr[j + 1] = arr[j];
                j--;
            }
            
            arr[j + 1] = key;  // 插入当前元素到正确位置
        }
    }
    
    int main() {
        int arr[] = {64, 34, 25, 12, 22, 11, 90};
        int size = sizeof(arr) / sizeof(arr[0]);
    
        insertionSort(arr, size);
    
        printf("Sorted array: ");
        for (int i = 0; i < size; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
    
        return 0;
    }
    

  15. 计算两个数的幂:
    #include<stdio.h>
    
    double power(double base, int exponent) {
        double result = 1.0;
        
        if (exponent > 0) {
            for (int i = 0; i < exponent; i++) {
                result *= base;  // 计算正指数的幂
            }
        } else if (exponent < 0) {
            for (int i = 0; i > exponent; i--) {
                result /= base;  // 计算负指数的幂
            }
        }
        
        return result;
    }
    
    int main() {
        double base = 2.5;
        int exponent = -3;
    
        double result = power(base, exponent);
    
        printf("%.2lf raised to the power of %d is %.2lf\n", base, exponent, result);
    
        return 0;
    }
    

  16. 实现冒泡排序算法对数组进行排序:
    #include<stdio.h>
    
    void bubbleSort(int arr[], int size) {
        for (int i = 0; i < size - 1; i++) {
            for (int j = 0; j < size - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {  // 比较相邻元素并交换位置
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
    
    int main() {
        int arr[] = {64, 34, 25, 12, 22, 11, 90};
        int size = sizeof(arr) / sizeof(arr[0]);
    
        bubbleSort(arr, size);
    
        printf("Sorted array: ");
        for (int i = 0; i < size; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
    
        return 0;
    }
    

  17. 在数组中查找指定元素的索引:
    #include<stdio.h>
    
    int findIndex(int arr[], int size, int target) {
        for (int i = 0; i < size; i++) {
            if (arr[i] == target) {  // 如果找到目标元素,返回索引
                return i;
            }
        }
        
        return -1;  // 如果未找到目标元素,返回-1
    }
    
    int main() {
        int arr[] = {1, 2, 3, 4, 5};
        int size = sizeof(arr) / sizeof(arr[0]);
        int target = 3;
    
        int index = findIndex(arr, size, target);
    
        if (index != -1) {
            printf("Target element %d found at index %d\n", target, index);
        } else {
            printf("Target element %d not found\n", target);
        }
    
        return 0;
    }
    

  18. 判断一个字符串是否为回文排列(忽略空格和标点符号):
    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    
    int isPalindromePermutation(char str[]) {
        int count[26] = {0};
    
        for (int i = 0; i < strlen(str); i++) {
            if (isalpha(str[i])) {  // 统计字符出现的次数
                count[tolower(str[i]) - 'a']++;
            }
        }
    
        int oddCount = 0;
        for (int i = 0; i < 26; i++) {
            if (count[i] % 2 != 0) {  // 统计字符出现奇数次的个数
                oddCount++;
            }
        }
    
        if (oddCount <= 1) {  // 如果奇数字符的个数小于等于1,则是回文排列
            return 1;
        }
        
        return 0;
    }
    
    int main() {
        char str[] = "Tact Coa";
    
        if (isPalindromePermutation(str)) {
            printf("%s is a palindrome permutation\n", str);
        } else {
            printf("%s is not a palindrome permutation\n", str);
        }
        
        return 0;
    }
    

  19. 统计一个字符串中的字符、单词和行数:
    #include<stdio.h>
    #include<string.h>
    
    void countCharactersWordsLines(char str[]) {
        int characters = 0, words = 0, lines = 1;
        
        for (int i = 0; i < strlen(str); i++) {
            if (str[i] != '\n' && str[i] != ' ') {  // 统计字符数
                characters++;
            }
            if (str[i] == ' ' || str[i] == '\n') {  // 统计单词数
                words++;
            }
            if (str[i] == '\n') {  // 统计行数
                lines++;
            }
        }
    
        printf("Character count: %d\n", characters);
        printf("Word count: %d\n", words);
        printf("Line count: %d\n", lines);
    }
    
    int main() {
        char str[] = "Hello World!\nThe quick brown fox jumps over the lazy dog.";
    
        countCharactersWordsLines(str);
    
        return 0;
    }
    

  20. 计算一个数的平方根(使用牛顿迭代法):
    #include<stdio.h>
    
    float sqrtUsingNewton(float num) {
        float x = num;
        float y = 1;
        float epsilon = 0.00001;
    
        while (x - y > epsilon) {
            x = (x + y) / 2;  // 使用牛顿迭代法更新x和y
            y = num / x;
        }
    
        return x;  // 返回x作为平方根近似值
    }
    
    int main() {
        float number = 16;
    
        printf("Square root of %.2f: %.4f\n", number, sqrtUsingNewton(number));
    
        return 0;
    }
    

  21. 实现选择排序算法对数组进行排序:
    #include<stdio.h>
    
    void selectionSort(int arr[], int n) {
        for (int i = 0; i < n - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {  // 寻找最小值的索引
                    minIndex = j;
                }
            }
            int temp = arr[i];  // 将最小值与当前位置交换
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }
    
    int main() {
        int arr[] = {64, 34, 25, 12, 22, 11, 90};
        int n = sizeof(arr) / sizeof(arr[0]);
    
        selectionSort(arr, n);
    
        printf("Sorted array: ");
        for (int i = 0; i < n; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
    
        return 0;
    }
    

  22. 判断一个字符串是否为回文句子(忽略空格和标点符号):
    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    
    int isPalindromeSentence(char str[]) {
        int left = 0, right = strlen(str) - 1;
    
        while (left < right) {
            if (!isalpha(str[left])) {  // 跳过非字母字符
                left++;
            } else if (!isalpha(str[right])) {
                right--;
            } else {
                if (tolower(str[left]) != tolower(str[right])) {  // 忽略大小写比较字符
                    return 0;  // 不是回文句子
                }
                left++;
                right--;
            }
        }
        
        return 1;  // 是回文句子
    }
    
    int main() {
        char str[] = "A man, a plan, a canal, Panama!";
    
        if (isPalindromeSentence(str)) {
            printf("%s is a palindrome sentence\n", str);
        } else {
            printf("%s is not a palindrome sentence\n", str);
        }
    
        return 0;
    }
    

  23. 将一个整数数组倒置:
    #include<stdio.h>
    
    void reverseArray(int arr[], int size) {
        for (int i = 0; i < size / 2; i++) {
            int temp = arr[i];  // 交换数组两端的元素
            arr[i] = arr[size - i - 1];
            arr[size - i - 1] = temp;
        }
    }
    
    int main() {
        int arr[] = {1, 2, 3, 4, 5};
        int size = sizeof(arr) / sizeof(arr[0]);
    
        reverseArray(arr, size);
    
        printf("Reversed array: ");
        for (int i = 0; i < size; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
    
        return 0;
    }
    

  24. 判断一个数是否为完全平方数:
    #include<stdio.h>
    #include<math.h>
    
    int isPerfectSquare(int num) {
        int squareRoot = sqrt(num);
        if (squareRoot * squareRoot == num) {  // 判断平方根的平方是否等于原数
            return 1;  // 是完全平方数
        }
        return 0;  // 不是完全平方数
    }
    
    int main() {
        int number = 16;
    
        if (isPerfectSquare(number)) {
            printf("%d is a perfect square\n", number);
        } else {
            printf("%d is not a perfect square\n", number);
        }
    
        return 0;
    }
    

  25. 将一个字符串转换为整数:
    #include<stdio.h>
    #include<stdlib.h>
    
    int main() {
        char numStr[] = "12345";
        int num = atoi(numStr); // 使用atoi函数将字符串转换为整数
    
        printf("Number: %d\n", num);
    
        return 0;
    }
    

  26. 反转一个字符串:
    #include<stdio.h>
    #include<string.h>
    
    int main() {
        char str[] = "Hello World";
        int length = strlen(str);
    
        for (int i = length - 1; i >= 0; i--) {
            printf("%c", str[i]);
        }
        printf("\n");
    
        return 0;
    }
    

  27. 计算一个数的阶乘:
    #include<stdio.h>
    
    int main() {
        int num = 5;
        int factorial = 1;
    
        for (int i = 1; i <= num; i++) {
            factorial *= i;
        }
    
        printf("Factorial of %d: %d\n", num, factorial);
    
        return 0;
    }
    

  28. 输出乘法表:
    #include<stdio.h>
    
    int main() {
        int i, j;
    
        for (i = 1; i <= 10; i++) {
            for (j = 1; j <= 10; j++) {
                printf("%d * %d = %d\n", i, j, i*j);
            }
            printf("\n");
        }
    
        return 0;
    }
    

  29. 将一个字符串中的所有小写字母转换为大写:
    #include<stdio.h>
    #include<string.h>
    
    void toUpperCase(char str[]) {
        int len = strlen(str);
        
        for (int i = 0; i < len; i++) {
            if (islower(str[i])) {
                str[i] = toupper(str[i]);  // 转换为大写字母
            }
        }
    }
    
    int main() {
        char str[] = "Hello, World!";
    
        toUpperCase(str);
    
        printf("After conversion: %s\n", str);
    
        return 0;
    }
    

  30. 判断一个数是否为完全数:
    #include<stdio.h>
    
    int isPerfectNumber(int num) {
        int sum = 0;
    
        for (int i = 1; i < num; i++) {
            if (num % i == 0) {
                sum += i;
            }
        }
    
        return sum == num;
    }
    
    int main() {
        int num = 6;
    
        if (isPerfectNumber(num)) {
            printf("%d is a perfect number\n", num);
        } else {
            printf("%d is not a perfect number\n", num);
        }
    
        return 0;
    }
    

  31. 计算斐波那契数列的第n项:
    #include<stdio.h>
    
    int fibonacci(int n) {
        if (n <= 1) {
            return n;
        }
    
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
    
    int main() {
        int n = 10;
    
        int result = fibonacci(n);
    
        printf("The %dth term of Fibonacci sequence is %d\n", n, result);
    
        return 0;
    }
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值