class-notes/万维25届C语言调考试题.md
2025-03-30 22:00:18 +08:00

27 KiB
Raw Blame History

第一次

/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目在此程序中函数fun 的功能是:将十进制正整数m 转换成k(1<k<26)进制
并按位输出。例如若输入8 和2,则应输出1000
(即十进制数8 转换成二进制表示是1000)。
------------------------------------------------------------------------
注意:请勿改动程序中的其他内容,不能定义新变量。
----------------------------------------------------------------------*/
#include <stdio.h>
// 函数声明
void fun(int m, int k);
int main()
{
    int m, k;
    printf("【请输入十进制正整数m 和进制k1 < k < 26】");
    scanf("%d %d", &m, &k);
    if (k <= 1 || k >= 26)
    {
        printf("错误k 的值必须在 2 到 25 之间。\n");
        return 1;
    }
    fun(m, k);
    return 0;
}
void fun(int m, int k)
{
    char result[65];
    int remainder, i;
    int index = 63;
    result[64] = '\0';
    /**********Program**********/

    /********** End **********/
    printf("\n");
}
/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目键盘输入一个整数n,由这n 个人围成一圈,顺序排号。从第一个人开始报数
(从1 到3 报数)凡报到3 的人退出圈子,问最后留下的是原来第几号的那位
输入输出如下
【请输入整数n: 】99
最后留下的是原来第88 号的那位
-------------------------------------------------------------------------
注意:请勿改动程序中的其他内容,函数中所需变量根据需要自定义变量名。
------------------------------------------------------------------------*/
#include <stdio.h>
int josephus(int n)
{
    /**********Program**********/

    /********** End **********/
}
int main()
{
    int n;
    int result;
    printf("【请输入整数n: 】");
    scanf("%d", &n);
    result = josephus(n);
    printf("最后留下的是原来第%d 号的那位\n", result);
    return 0;
}

第二次

/*-----------------------------------------------------------------------
【程序设计】
-----------------------------------------------------------------------
键盘输入五个正整数,编写函数求其中偶数之和,并输出结果
示例:
【请输入五个正整数】100 222 656 899 65
【这五个正整数中的偶数之和为】978
-------------------------------------------------------------------------
注意:请勿改动程序中的其他内容,请勿重新定义变量名。
------------------------------------------------------------------------*/
#include <stdio.h>
int sum_of_even(int arr[], int size);
int main()
{
    int numbers[5];
    int i;
    int even_sum;
    printf("【请输入五个正整数:】");
    for (i = 0; i < 5; i++)
    {
        if (scanf("%d", &numbers[i]) != 1)
        {
            printf("输入有误,请确保输入了五个整数。\n");
            return 1;
        }
        if (numbers[i] <= 0)
        {
            printf("输入有误!请确保输入的是正数。\n");
            return 1;
        }
    }
    even_sum = sum_of_even(numbers, 5);
    printf("【这五个正整数中的偶数之和为:】%d\n", even_sum);
    return 0;
}
int sum_of_even(int arr[], int size)
{
    int sum = 0;
    int i;
    /**********Program**********/

    /********** End **********/
}
/*-----------------------------------------------------------------------
【程序设计】
-----------------------------------------------------------------------
规定输入的字符串中只包含字母和*号。编写函数fun其功能是:将字符串中的前
导*号全部
删除, 中间和尾部的* 号不删除。例如, 字符串中的内
容:"*******A*BC*DEF*G****",删除
后字符串编写函中的内容应当是:"A*BC*DEF*G****"编写函数时不得使用C 语
言提供的字符
串函数。
-------------------------------------------------------------------------
注意:请勿改动主函数main 和其它函数中的任何内容,
仅在函数fun 的花括号中填入你编写的若干语句,根据情况可以定义新变量。
根据情况可以自定义变量
------------------------------------------------------------------------*/
#include <stdio.h>
void fun(char *a)
{
    /**********Program**********/

    /********** End **********/
}
main()
{
    char s[81];
    printf("【Enter a string:】\n");
    gets(s);
    fun(s);
    printf("【The string after deleted:】\n");
    puts(s);
}

第三次A

/*-----------------------------------------------------------------------
【程序设计】
-----------------------------------------------------------------------
编写函数找出能同时满足用3 除余2用5 除余3用7 除余2 的所有整数并输出。
输入输出如下:
【请输入区间的起始值: 】1
【请输入区间的结束值:】 100
23
-------------------------------------------------------------------------
注意:请勿改动主函数main 和其它函数中的任何内容,
仅在函数isMeetCondition 的花括号中填入你编写的若干语句,根据情况可以定义新变量。
根据情况可以自定义变量
------------------------------------------------------------------------*/
#include <stdio.h>
int isMeetCondition(int num);
int main()
{
    int start, end;
    int i;
    printf("【请输入区间的起始值: 】");
    scanf("%d", &start);
    printf("【请输入区间的结束值: 】");
    scanf("%d", &end);
    for (i = start; i <= end; i++)
    {
        if (isMeetCondition(i))
        {
            printf("%d\n", i);
        }
    }
    return 0;
}
int isMeetCondition(int num)
{
    /**********Program**********/

    /********** End **********/
}
/*-----------------------------------------------------------------------
【程序设计】
-----------------------------------------------------------------------
定义一个函数判断一个字符串是否是另一个字符串的子字符串,要求用指针实现。
输入输出如下:
【请输入第一个字符串:】abcdefg1234qwert
【请输入第二个字符串:】4q
字符串'4q'是字符串'abcdefg1234qwert'的子字符串
-------------------------------------------------------------------------
注意:请勿改动程序中的其他内容,请勿重新定义变量名。
------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
// 函数声明,用于判断子字符串
int isSubstring(char *str1, char *str2);
int main()
{
    char str1[100], str2[100];
    printf("【请输入第一个字符串:】");
    gets(str1);
    printf("【请输入第二个字符串:】");
    gets(str2);
    if (isSubstring(str1, str2))
    {
        printf("字符串'%s'是字符串'%s'的子字符串\n", str2, str1);
    }
    else
    {
        printf("字符串'%s'不是字符串'%s'的子字符串\n", str2, str1);
    }
    return 0;
}
int isSubstring(char *str1, char *str2)
{
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    int i, j;
    /**********Program**********/
    
    /********** End **********/
    return 0;
}

第三次B

/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目随机输入一字符串不包含空格长度不超过100删除字符串中的数字
字符后输出。
例如
【请输入字符串】I will graduate from high school in June 2025
【去掉数字后的字符串为】I will graduate from high school in June
-------------------------------------------------------------------------
注意:请勿改动程序中的其他内容,请勿重新定义变量名。
------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
int main()
{
    char a[100], b[100];
    int l, i, j;
    printf("【请输入字符串:】");
    gets(a);
    l = strlen(a);
    j = 0;
    /**********Program**********/
    
    /********** End **********/
    b[j] = '\0';
    printf("【去掉数字后的字符串为:】");
    puts(b);
    return 0;
}
/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目以下程序的功能是删去一维数组str 中所有相同的数,使之只剩一个。数组
中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
若一维数组中的数据是:
2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7 7 7 7 8 8 9
结果是2 3 4 5 6 7 8 9
-------------------------------------------------------------------------
注意:请勿改动程序中的其他内容,请勿重新定义变量名。
------------------------------------------------------------------------*/
#include <stdio.h>
int del(int str[], int n)
{
    int i, j = 1;
    /**********Program**********/
    
    /********** End **********/
}
int main()
{
    int str[] = {2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9};
    int i, m, n = sizeof(str) / sizeof(int);
    for (i = 0; i < n; i++)
        printf("%d ", str[i]);
    m = del(str, n);
    printf("\n");
    for (i = 0; i < m; i++)
        printf("%d ", str[i]);
    printf("\n");
    return 1;
}

第四次

/*---------------------------------------------------------------------
程序设计
---------------------------------------------------------------------
王老师通过课题专利研发赚到了人生的第一个100 万,他存入银行账户用于理财,
每年可以
获得4%的收益在每年的最后一天他会取出10 万来消费,剩下的继续理财。编
写程序计算
过多少年以后,账户上的钱会被取完(使用do....while)。
---------------------------------------------------------------------
注意部分源程序给出如下。请勿改动主函数main 或其它函数中给出的内容,仅
Program-End 之间填入若干语句。
不要删除标志否则不得分。
不要修改或删除Program-End 之外的内容否则不得分。
---------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int money = 100;
    int year = 1;
    /**********Program**********/

    /********** End **********/
    printf("%d 年后账户上的钱会被花完", year);
    printf("\n");
    return 0;
}
/*---------------------------------------------------------------------
程序设计
---------------------------------------------------------------------
通过指针传递实现将一数组中的数据按相反顺序存放。
例如输入20 24 4 13 11
输出11 13 4 24 20
---------------------------------------------------------------------
注意部分源程序给出如下。请勿改动主函数main 或其它函数中给出的内容,仅
Program-End 之间填入若干语句。
不要删除标志否则不得分。
不要修改或删除Program-End 之外的内容否则不得分。
---------------------------------------------------------------------*/
#include <stdio.h>
void sort(int *, int);
void main()
{
    int a[5], i;
    for (i = 0; i < 5; i++)
    {
        scanf("%d,", &a[i]);
    }
    sort(a, 5);
    for (i = 0; i < 5; i++)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
}
void sort(int *p, int n)
{
    int i, j, temp;
    /**********Program**********/
    
    /********** End **********/
}

第五次

/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目:编写函数实现输入一串字符串,删除字符串中的重复的字符,然后输出新的
字符串(重复字符保留第一次出现的字符)
输入输出如下所示
请输入一串字符串: mn,mn.,mzxcv,nkh021215468796468765465
去除重复字符后的字符串为: mn,.zxcvkh021546879
-------------------------------------------------------------------------
注意:请勿改动程序中的其他内容,请勿重新定义变量名。
------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
void removeDuplicates(char *str);
int main()
{
    char str[100];
    printf("【请输入一个字符串: 】");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = 0;
    removeDuplicates(str);
    printf("【去除重复字符后的字符串为:】 %s\n", str);
    return 0;
}
void removeDuplicates(char *str)
{
    int seen[256] = {0};
    int writeIdx = 0;
    int i;
    int len = strlen(str);
    if (str == NULL)
        return;
    if (len <= 1)
        return;
    /**********Program**********/
    
    /********** End **********/
    str[writeIdx] = '\0';
}
/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目:编写函数实现用除二取余的方法,把任意一个十进制正数的二进制序列输出
(不考虑溢出)
程序输入输出如下所示
Enter a decimal number: 2
The binary representation is: 10
-------------------------------------------------------------------------
------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
void decimalToBinary(int decimal)
{
    int remainder;
    int len = 0;
    char binary[32];
    int i;
    if (decimal == 0)
    {
        printf("0");
        return;
    }
    /**********Program**********/
    
    /********** End **********/
    printf("%s\n", binary);
}
int main()
{
    int number;
    printf("【Enter a decimal number: 】");
    scanf("%d", &number);
    printf("【The binary representation is: 】");
    decimalToBinary(number);
}

第六次

/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第
二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩
下的一半零一个。直到最后一天早上想再吃时,见只剩下一个桃子了。通过输入来
控制吃桃的最后一天,编写函数求第一天共摘了多少桃子。
输入输出如下所示:
【输入猴子还剩1 个桃子的最后一天: 】10
猴子第一天摘了1534 个桃子
-------------------------------------------------------------------------
注意:请勿改动程序中的其他内容,请勿重新定义变量名。
------------------------------------------------------------------------*/
#include <stdio.h>
int countPeaches(int lastDay)
{
    int peaches = 1;
    int day;
    /**********Program**********/
    
    /********** End **********/
}
int main()
{
    int lastDay;
    int totalPeaches;
    printf("【输入猴子还剩1 个桃子的最后一天:】 ");
    scanf("%d", &lastDay);
    totalPeaches = countPeaches(lastDay);
    printf("猴子第一天摘了%d 个桃子\n", totalPeaches);
    return 0;
}
/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目:一瓶汽水一元,两个空瓶子可以换一瓶汽水,输入购买汽水的金额,编写函
数计算出一共可以喝多少瓶汽水
输入输出如下所示:
【请输入购买汽水的金额(元):】 3
总共可以喝 5 瓶汽水
-------------------------------------------------------------------------
注意:请勿改动程序中的其他内容,请勿重新定义变量名。
------------------------------------------------------------------------*/
#include <stdio.h>
int totalBottles(int money)
{
    int totalBottlesDrank = 0;
    int boughtBottles = money;
    int newBottles;
    /**********Program**********/
    
    /********** End **********/
}
int main()
{
    int money;
    int result;
    printf("【请输入购买汽水的金额(元): 】");
    scanf("%d", &money);
    result = totalBottles(money);
    printf("总共可以喝 %d 瓶汽水\n", result);
    return 0;
}

第七次

/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
编写函数 fun 函数 fun 的功能是:求出数组中最大数和次最大数,并把最大数
和 a[0]中的数对调、次最大数和 a[1]中的数对调,输出对调后的结果。
例如原数组为{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}对调后的结果为9 6 4 1 5 3 2 1 5 3 5
------------------------------------------------------------------------
注意部分源程序给出如下。请勿改动主函数main 或其它函数中给出的内容,仅
Program-End 之间填入若干语句。
不要删除标志否则不得分。
不要修改或删除Program-End 之外的内容否则不得分。
----------------------------------------------------------------------*/
#include <stdio.h>
void fun(int *a, int n)
{
    int max_index = 0;
    int second_max_index = 0;
    int i;
    /**********Program**********/
    
    /********** End **********/
}
int main()
{
    int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    int i;
    fun(arr, size);
    printf("【Modified array: 】");
    for (i = 0; i < size; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
请编写C 代码,完成计算数组 A 与数组 B 的对称差集(即只属于 A 或者只属
于 B 的元素)。提示:可以先将数组 A 和 B 变为递增排序,然后可以使用双指
针法来高效地找到它们的对称差集。
示例1
【请输入数组 A 的大小: 】5
【请输入数组 A 的 5 个元素: 】6 5 4 3 2
【请输入数组 B 的大小: 】4
【请输入数组 B 的 4 个元素: 】7 6 3 8
【数组 A 与数组 B 的对称差集为: 】2 4 5 7 8
------------------------------------------------------------------------
注意部分源程序给出如下。请勿改动主函数main 或其它函数中给出的内容,仅
Program-End 之间填入若干语句。
不要删除标志否则不得分。
不要修改或删除Program-End 之外的内容否则不得分。
----------------------------------------------------------------------*/
#include <stdio.h>
void bubbleSort(int arr[], int size)
{
    int i, j;
    for (i = 0; i < size - 1; i++)
    {
        for (j = 0; j < size - i - 1; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                // 交换 arr[j] 和 arr[j + 1]
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
int computeSymmetricDifference(int A[], int sizeA, int B[], int sizeB, int C[])
{
    int i = 0, j = 0, k = 0;
    /**********Program**********/
    
    /********** End **********/
}
int main()
{
    int sizeA, sizeB;
    int i;
    printf("【请输入数组 A 的大小: 】");
    scanf("%d", &sizeA);
    int A[100];
    printf("【请输入数组 A 的 %d 个元素: 】", sizeA);
    for (i = 0; i < sizeA; i++)
    {
        scanf("%d", &A[i]);
    }
    printf("【请输入数组 B 的大小: 】");
    scanf("%d", &sizeB);
    int B[100];
    printf("【请输入数组 B 的 %d 个元素: 】", sizeB);
    for (i = 0; i < sizeB; i++)
    {
        scanf("%d", &B[i]);
    }
    int C[200]; // 假设结果数组最大长度为 200为 A 和 B 长度之和
    int diffSize = computeSymmetricDifference(A, sizeA, B, sizeB, C);
    printf("【数组 A 与数组 B 的对称差集为: 】");
    for (i = 0; i < diffSize; i++)
    {
        printf("%d ", C[i]);
    }
    printf("\n");
    return 0;
}

第八次

/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
函数 fun 的功能是: 将 输入的字符串中的字母转换为按字母序列的后续字母(但
Z 转换为 A, z 转换为 a),其它字符不变,最后输出转换后的字符串。
示例1
【请输入一个字符串: 】12345QAZWSXrfvtgb@@@¥
【转换后的字符串为: 】12345RBAXTYsgwuhc@@@¥
------------------------------------------------------------------------
----------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void fun(char *str)
{
    /**********Program**********/
    
    /********** End **********/
}
int main()
{
    char input[100];
    printf("【请输入一个字符串: 】");
    fgets(input, sizeof(input), stdin);
    input[strcspn(input, "\n")] = '\0';
    fun(input);
    printf("【转换后的字符串为: 】%s\n", input);
    return 0;
}
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
要求编写一个程序来计算给定整数的平方根的整数部分,功能类似于 C 语言标准
库中的 sqrt 函数,但仅返回整数部分结果。
示例1
【请输入一个非负整数: 】12
【12 的平方根的整数部分是: 】3
------------------------------------------------------------------------
----------------------------------------------------------------------*/
#include <stdio.h>
int mySqrt(int x)
{
    /**********Program**********/
    
    /********** End **********/
}
int main()
{
    int num;
    while (1)
    {
        printf("【请输入一个非负整数: 】");
        if (scanf("%d", &num) != 1 || num < 0)
        {
            while (getchar() != '\n')
                ;
            printf("输入无效,请输入一个非负整数。\n");
        }
        else
        {
            break;
        }
    }
    int sqrtResult = mySqrt(num);
    printf("【%d 的平方根的整数部分是: 】%d\n", num, sqrtResult);
    return 0;
}

第九次

/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
编写一个 C 语言函数,函数接收一个整数数组 arr 以及数组的长度 size 作为参
数,使用 bool 类型返回该数组中是否存在重复的元素。在 main 函数中,输入多
个正整数(输入非数字字符表示输入结束)并调用该函数,根据返回结果输出相应
的提示信息。
示例:
【请输入多个整数输入非数字字符结束输入】1 2 3 4 5 5 6 a
数组中存在重复元素。
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数 main 或其它函数中给出的内容,仅
Program-End 之间填入若干语句。
不要删除标志否则不得分。
不要修改或删除Program-End 之外的内容否则不得分。
----------------------------------------------------------------------*/
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
bool hasDuplicates(int arr[], int size)
{
    /**********Program**********/
    
    /********** End **********/
}
int main()
{
    int capacity = 10;
    int *arr = (int *)malloc(capacity * sizeof(int));
    if (arr == NULL)
    {
        printf("内存分配失败!\n");
        return 1;
    }
    int size = 0;
    int num;
    printf("【请输入多个整数(输入非数字字符结束输入):】");
    while (scanf("%d", &num) == 1)
    {
        if (size == capacity)
        {
            capacity *= 2;
            arr = (int *)realloc(arr, capacity * sizeof(int));
            if (arr == NULL)
            {
                printf("内存分配失败!\n");
                return 1;
            }
        }
        arr[size++] = num;
    }
    while (getchar() != '\n');
    if (hasDuplicates(arr, size))
    {
        printf("数组中存在重复元素。\n");
    }
    else
    {
        printf("数组中不存在重复元素。\n");
    }
    free(arr);
    return 0;
}
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
现在有一位赛车手要驾驶一台电动摩托车去完成多段赛程。这台电动摩托车的电
池电量存储
上限是 100 度电哦,它有一个标称的平均电耗,也就是每行驶 100 公里,就会消
耗 10 度
电。这里有个很重要的前提条件要大家牢记呀,每一段赛程的距离都是小于 600
公里的哦,
并且每次出发的时候,电动摩托车的电池都是充满电的状态呢。还有一个关键的规
则得注意
哦,如果电动摩托车到达某个地点之后,赛车手查看发现电池内剩余的电量低于电
池总电量
的 10%(也就是 100×10% = 10 度电或者更少啦),那这个时候就必须得在这个
地方给电
动摩托车充电了呢,请帮忙计算一下,这名驾驶员在赛程中的哪几段赛程前是需要
充电的。
示例1
【请输入赛程段数:】
5
【请输入各段赛程距离,单位公里:】
380 200 390 400 300
【需要在以下几段赛程前充电:】
第 3 段赛程前
第 5 段赛程前
示例2
【请输入赛程段数:】
4
【请输入各段赛程距离,单位公里:】
190 140 110 80
无需充电。
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数 main 或其它函数中给出的内容,仅
Program-End 之间填入若干语句。
不要删除标志否则不得分。
不要修改或删除Program-End 之外的内容否则不得分。
----------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>                           // 引入stdlib.h 用于动态内存分配相关操作
#define TANK_CAPACITY 100                     // 电池总容量(单位:度)
#define LOW_FUEL_LIMIT (0.10 * TANK_CAPACITY) // 低电量阈值10%
#define AVG_CONSUMPTION_PER_100KM 10          // 平均电耗(单位:度/百公里)
#define FUEL_CONSUMPTION_PER_KM (AVG_CONSUMPTION_PER_100KM /
100.0) // 每公里电耗(单位:度/公里)
int checkRefuelStops(int trips[], int count, int results[])
{
    int refuel_count = 0;
    double current_fuel = TANK_CAPACITY;
    /**********Program**********/
    
    /********** End **********/
    return refuel_count;
}
int main()
{
    int num_trips;
    printf("【请输入赛程段数:】\n");
    scanf("%d", &num_trips);
    int *trips = (int *)malloc(num_trips * sizeof(int));
    if (trips == NULL)
    {
        printf("内存分配失败!\n");
        return 1;
    }
    printf("【请输入各段赛程距离,单位公里:】\n");
    for (int i = 0; i < num_trips; ++i)
    {
        scanf("%d", &trips[i]);
    }
    int *results = (int *)malloc(num_trips * sizeof(int));
    if (results == NULL)
    {
        printf("内存分配失败!\n");
        free(trips);
        return 1;
    }
    int refuel_count = checkRefuelStops(trips, num_trips, results);
    if (refuel_count > 0)
    {
        printf("【需要在以下几段赛程前充电:】\n");
        for (int i = 0; i < refuel_count; i++)
        {
            printf("第 %d 段赛程前\n", results[i]);
        }
    }
    else
    {
        printf("无需充电。\n");
    }
    free(trips);
    free(results);
    return 0;
}

第十次

/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
请编写函数 fun, 函数的功能是: 移动一维数组中的内容; 若数组中有 n 个整数,
要求把下标从 0 到 p(含 p,p 小于等于 n-1 )的数组元素平移到数组的最后,最后
输出移动后的数组。
示例:
【请输入数组元素的个数: 】10
【请输入10 个整数:】1 2 3 4 5 6 7 8 9 10
【请输入p 的值 (p <= 9):】 5
【移动后的数组为: 】7 8 9 10 1 2 3 4 5 6
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数 main 或其它函数中给出的内容,仅
Program-End 之间填入若干语句。
不要删除标志否则不得分。
不要修改或删除Program-End 之外的内容否则不得分。
----------------------------------------------------------------------*/
#include <stdio.h>
void fun(int *w, int p, int n)
{
    int temp[p + 1];
    /**********Program**********/
    
    /********** End **********/
}
int main()
{
    int n, p;
    printf("【请输入数组元素的个数: 】");
    scanf("%d", &n);
    int a[n];
    printf("【请输入%d 个整数:】", n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    printf("【请输入p 的值 (p <= %d): 】", n - 1);
    scanf("%d", &p);
    fun(a, p, n);
    printf("【移动后的数组为: 】");
    for (int i = 0; i < n; i++)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
编写一个 C 语言程序,输入由中括号 [数字和小写字母]组成且无中括号嵌套的字
符串。规则如下:[nx]n 为正整数x 为小写字母)表示将 x 重复 n 次;[nxy]
n 为正整数x、y 为小写字母)表示将 xy 重复 n 次。实现 fun 函数对输入
字符串解码并生成原始字符串。
示例1
【请输入符合规则的字符串:】[5wh]
【原始字符串】whwhwhwhwh
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数 `main` 或其它函数中给出的内容,
仅在
Program-End 之间填入若干语句。
不要删除标志否则不得分。
不要修改或删除Program-End 之外的内容否则不得分。
----------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *fun(char input[])
{
    int len = strlen(input);
    char *output = (char *)malloc(1000 * sizeof(char));
    if (output == NULL)
    {
        printf("内存分配失败!\n");
        return NULL;
    }
    int outputIndex = 0;
    /**********Program**********/
    
    /********** End **********/
    return output;
}
int main()
{
    char input[1000];
    printf("【请输入符合规则的字符串:】\n");
    scanf("%s", input);
    char *result = fun(input);
    if (result != NULL)
    {
        printf("【原始字符串:】%s\n", result);
        free(result);
    }
    return 0;
}