• c语言编程题经典100例——(41~45例)


    1,实现动态内存分配。

    在C语言中,动态内存分配使用malloccallocreallocfree函数。以下是一个示例:

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main() {
    4. int *ptr = NULL; // 初始化为空
    5. int n = 5; // 假设我们想要分配5个整数的空间
    6. // 使用malloc分配内存
    7. ptr = (int*)malloc(n * sizeof(int));
    8. if(ptr == NULL)
    9. {
    10. printf("Memory not allocated.\n");
    11. exit(0);
    12. }
    13. else
    14. {
    15. printf("Memory successfully allocated using malloc.\n");
    16. for(int i = 0; i < n; ++i) // 为新分配的内存赋值
    17. ptr[i] = i + 1;
    18. printf("The elements of the array are: ");
    19. for(int i = 0; i < n; ++i) // 打印数组元素
    20. printf("%d, ", ptr[i]);
    21. }
    22. free(ptr); // 使用完之后,使用free函数释放内存
    23. return 0;
    24. }

    这个程序首先使用malloc函数动态分配了足够的内存来存储5个整数。然后,它检查是否成功分配了内存。如果内存分配失败,程序将打印错误消息并退出。如果内存分配成功,程序将使用这块内存来存储一些数据,并打印出这些数据。最后,当程序不再需要这块内存时,它使用free函数来释放这块内存。

    2,实现字符串的操作(反转、连接、截取等)。

    C 语言提供了许多用于字符串操作的标准函数,以下是一些示例:

    a 字符串反转:

    1. #include <stdio.h>
    2. #include <string.h>
    3. void reverse_string(char* str) {
    4. int len = strlen(str);
    5. char temp;
    6. for(int i = 0; i < len / 2; i++) {
    7. temp = str[i];
    8. str[i] = str[len - i - 1];
    9. str[len - i - 1] = temp;
    10. }
    11. }
    12. int main() {
    13. char str[] = "Hello, World!";
    14. reverse_string(str);
    15. printf("%s\n", str); // 输出:!dlroW ,olleH
    16. return 0;
    17. }

    这个函数通过交换字符串的前半部分和后半部分来反转字符串。

    b 字符串连接:

    1. #include
    2. #include
    3. void string_concat(char* dest, const char* src) {
    4. strcat(dest, src); // 使用标准库函数strcat来实现连接
    5. }
    6. int main() {
    7. char dest[50] = "Hello, ";
    8. const char* src = "World!";
    9. string_concat(dest, src);
    10. printf("%s\n", dest); // 输出:Hello, World!
    11. return 0;
    12. }

    这个函数使用标准库函数strcat来连接两个字符串。注意,目标字符串需要有足够的空间来存储结果。

            c 字符串截取:

    1. #include <stdio.h>
    2. #include <string.h>
    3. void substring(char* str, int start, int end) {
    4. // 使用标准库函数strncpy来实现截取
    5. strncpy(str, str + start, end - start + 1);
    6. str[end - start + 1] = '\0'; // 添加字符串结束标志
    7. }
    8. int main() {
    9. char str[] = "Hello, World!";
    10. substring(str, 7, 12); // 从第7个字符开始,截取到第12个字符(不包括第12个字符)
    11. printf("%s\n", str); // 输出:World!
    12. return 0;
    13. }

    这个函数使用标准库函数strncpy来截取字符串的一部分。注意,目标字符串需要有足够的空间来存储结果,并且截取的结束位置是不包括在内的。

    3,实现日期格式化。

    在C语言中,可以使用标准库函数strftime()来格式化日期。这个函数可以将日期格式化为指定的字符串格式。

    下面是一个示例代码,演示如何使用strftime()函数来格式化日期:

    1. #include <stdio.h>
    2. #include <time.h>
    3. int main() {
    4. time_t t = time(NULL); // 获取当前时间
    5. struct tm* tm = localtime(&t); // 转换为本地时间
    6. char date[20];
    7. strftime(date, sizeof(date), "%Y-%m-%d", tm); // 格式化日期
    8. printf("今天的日期是:%s\n", date);
    9. return 0;
    10. }

    在这个示例中,我们首先使用time()函数获取当前时间,并将其转换为structtm类型,以便于进行日期格式化。然后,我们使用strftime()函数将日期格式化为指定的字符串格式,这里使用了%Y-%m-%d格式,表示年-月-日。最后,我们使用printf()函数输出格式化后的日期字符串。

    需要注意的是,strftime()函数的第一个参数是一个指向字符数组的指针,用于存储格式化后的日期字符串。第二个参数是字符数组的大小,以字节为单位。第三个参数是日期字符串的格式,可以使用不同的格式化标记来指定不同的日期格式。第四个参数是一个指向structtm类型的指针,用于指定要格式化的日期和时间。

    4,实现进制转换(十进制转其他进制)。

    以下是一个使用C语言实现将十进制数转换为其他进制的示例代码:

    1. #include
    2. void decimalToBase(int decimal, int base) {
    3. int remainder = decimal % base;
    4. int quotient = decimal / base;
    5. if (quotient == 0) {
    6. printf("%d", remainder);
    7. } else {
    8. decimalToBase(quotient, base);
    9. printf("%d", remainder);
    10. }
    11. }
    12. int main() {
    13. int decimal, base;
    14. printf("Enter a decimal number: ");
    15. scanf("%d", &decimal);
    16. printf("Enter the base to convert to (2-16): ");
    17. scanf("%d", &base);
    18. printf("The base %d representation of %d is: ", base, decimal);
    19. decimalToBase(decimal, base);
    20. printf("\n");
    21. return 0;
    22. }

    在这个示例中,我们定义了一个decimalToBase()函数,用于将十进制数转换为其他进制。该函数使用递归算法实现。首先,我们计算出十进制数除以目标基数的商和余数。如果商为0,则说明当前余数就是转换后的最低位;否则,递归调用decimalToBase()函数,继续处理商,最后输出余数。在main()函数中,我们通过调用decimalToBase()函数,将输入的十进制数转换为指定的其他进制。用户需要输入要转换的十进制数和目标进制。程序将输出转换后的结果。需要注意的是,此示例中仅支持将十进制数转换为2-16的进制。如果需要支持更大的进制范围,需要相应地调整代码。

    5,实现数字转字符串。

    在C语言中,将数字转换为字符串可以通过几种不同的方法,包括使用sprintf()函数,或使用一个一个字符地构建字符串。这里有两种简单的示例:

    方法一:使用sprintf()函数

    1. #include
    2. int main() {
    3. int num = 12345;
    4. char str[20];
    5. sprintf(str, "%d", num);
    6. printf("The string is: %s\n", str);
    7. return 0;
    8. }

    在这个例子中,sprintf()函数被用来将整数num转换为字符串,并存储在str中。

    方法二:一个一个字符地构建字符串

    这种方法涉及到数字转化的每个数字除以10,然后取余数得到该位的数字,再通过ASCII码将数字转换为字符。

    1. #include <stdio.h>
    2. void intToStr(int num) {
    3. char str[20];
    4. int i = 0;
    5. while(num != 0) {
    6. int digit = num % 10;
    7. str[i++] = '0' + digit; // 通过ASCII码将数字转换为字符
    8. num /= 10;
    9. }
    10. str[i] = '\0'; // 在字符串末尾添加结束符
    11. printf("The string is: %s\n", str);
    12. }
    13. int main() {
    14. int num = 12345;
    15. intToStr(num);
    16. return 0;
    17. }

    在这个例子中,我们定义了一个名为intToStr的函数,该函数将整数转换为字符串。然后在main函数中调用该函数。

  • 相关阅读:
    分布式与微服务区别?
    LeetCode-热题100-笔记-day25
    适合骑车时候戴的耳机怎么选,列举五款在骑行佩戴的耳机推荐
    插入排序(学习笔记)
    C++ 之 宏定义
    Scroll 生态明星项目Pencils Protocol,发展潜力巨大
    Linux---编辑器vim的认识与简单配置
    Git 入门使用
    使用Java将PPT、PPTX和PDF转换为图片
    e智团队实验室项目-第四周-YOLOv论文的对比实验中遇到的问题
  • 原文地址:https://blog.csdn.net/A185822153/article/details/134687991