### 第一次 ```c /*----------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------- 题目:在此程序中,函数fun 的功能是:将十进制正整数m 转换成k(1 // 函数声明 void fun(int m, int k); int main() { int m, k; printf("【请输入十进制正整数m 和进制k(1 < 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"); } ``` ```c /*----------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------- 题目:键盘输入一个整数n,由这n 个人围成一圈,顺序排号。从第一个人开始报数 (从1 到3 报数),凡报到3 的人退出圈子,问最后留下的是原来第几号的那位 输入输出如下 【请输入整数n: 】99 最后留下的是原来第88 号的那位 ------------------------------------------------------------------------- 注意:请勿改动程序中的其他内容,函数中所需变量根据需要自定义变量名。 ------------------------------------------------------------------------*/ #include 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; } ``` ### 第二次 ```c /*----------------------------------------------------------------------- 【程序设计】 ----------------------------------------------------------------------- 键盘输入五个正整数,编写函数求其中偶数之和,并输出结果 示例: 【请输入五个正整数:】100 222 656 899 65 【这五个正整数中的偶数之和为:】978 ------------------------------------------------------------------------- 注意:请勿改动程序中的其他内容,请勿重新定义变量名。 ------------------------------------------------------------------------*/ #include 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 **********/ } ``` ```c /*----------------------------------------------------------------------- 【程序设计】 ----------------------------------------------------------------------- 规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:将字符串中的前 导*号全部 删除, 中间和尾部的* 号不删除。例如, 字符串中的内 容:"*******A*BC*DEF*G****",删除 后字符串编写函中的内容应当是:"A*BC*DEF*G****"编写函数时,不得使用C 语 言提供的字符 串函数。 ------------------------------------------------------------------------- 注意:请勿改动主函数main 和其它函数中的任何内容, 仅在函数fun 的花括号中填入你编写的若干语句,根据情况可以定义新变量。 根据情况可以自定义变量 ------------------------------------------------------------------------*/ #include 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 ```c /*----------------------------------------------------------------------- 【程序设计】 ----------------------------------------------------------------------- 编写函数找出能同时满足用3 除余2,用5 除余3,用7 除余2 的所有整数并输出。 输入输出如下: 【请输入区间的起始值: 】1 【请输入区间的结束值:】 100 23 ------------------------------------------------------------------------- 注意:请勿改动主函数main 和其它函数中的任何内容, 仅在函数isMeetCondition 的花括号中填入你编写的若干语句,根据情况可以定义新变量。 根据情况可以自定义变量 ------------------------------------------------------------------------*/ #include 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 **********/ } ``` ```c /*----------------------------------------------------------------------- 【程序设计】 ----------------------------------------------------------------------- 定义一个函数判断一个字符串是否是另一个字符串的子字符串,要求用指针实现。 输入输出如下: 【请输入第一个字符串:】abcdefg1234qwert 【请输入第二个字符串:】4q 字符串'4q'是字符串'abcdefg1234qwert'的子字符串 ------------------------------------------------------------------------- 注意:请勿改动程序中的其他内容,请勿重新定义变量名。 ------------------------------------------------------------------------*/ #include #include // 函数声明,用于判断子字符串 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 ```c /*----------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------- 题目:随机输入一字符串(不包含空格,长度不超过100),删除字符串中的数字 字符后输出。 例如 【请输入字符串:】I will graduate from high school in June 2025 【去掉数字后的字符串为:】I will graduate from high school in June ------------------------------------------------------------------------- 注意:请勿改动程序中的其他内容,请勿重新定义变量名。 ------------------------------------------------------------------------*/ #include #include 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; } ``` ```c /*----------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------- 题目:以下程序的功能是删去一维数组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 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; } ``` ### 第四次 ```c /*--------------------------------------------------------------------- 程序设计 --------------------------------------------------------------------- 王老师通过课题专利研发赚到了人生的第一个100 万,他存入银行账户用于理财, 每年可以 获得4%的收益,在每年的最后一天,他会取出10 万来消费,剩下的继续理财。编 写程序计算 过多少年以后,账户上的钱会被取完(使用do....while)。 --------------------------------------------------------------------- 注意:部分源程序给出如下。请勿改动主函数main 或其它函数中给出的内容,仅 在 Program-End 之间填入若干语句。 不要删除标志否则不得分。 不要修改或删除Program-End 之外的内容否则不得分。 ---------------------------------------------------------------------*/ #include #include int main() { int money = 100; int year = 1; /**********Program**********/ /********** End **********/ printf("%d 年后账户上的钱会被花完", year); printf("\n"); return 0; } ``` ```c /*--------------------------------------------------------------------- 程序设计 --------------------------------------------------------------------- 通过指针传递实现将一数组中的数据按相反顺序存放。 例如:输入20 24 4 13 11 输出:11 13 4 24 20 --------------------------------------------------------------------- 注意:部分源程序给出如下。请勿改动主函数main 或其它函数中给出的内容,仅 在 Program-End 之间填入若干语句。 不要删除标志否则不得分。 不要修改或删除Program-End 之外的内容否则不得分。 ---------------------------------------------------------------------*/ #include 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 **********/ } ``` ### 第五次 ```c /*----------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------- 题目:编写函数实现输入一串字符串,删除字符串中的重复的字符,然后输出新的 字符串(重复字符保留第一次出现的字符) 输入输出如下所示 请输入一串字符串: mn,mn.,mzxcv,nkh021215468796468765465 去除重复字符后的字符串为: mn,.zxcvkh021546879 ------------------------------------------------------------------------- 注意:请勿改动程序中的其他内容,请勿重新定义变量名。 ------------------------------------------------------------------------*/ #include #include 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'; } ``` ```c /*----------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------- 题目:编写函数实现用除二取余的方法,把任意一个十进制正数的二进制序列输出 (不考虑溢出) 程序输入输出如下所示 Enter a decimal number: 2 The binary representation is: 10 ------------------------------------------------------------------------- ------------------------------------------------------------------------*/ #include #include 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); } ``` ### 第六次 ```c /*----------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------- 题目:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第 二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩 下的一半零一个。直到最后一天早上想再吃时,见只剩下一个桃子了。通过输入来 控制吃桃的最后一天,编写函数求第一天共摘了多少桃子。 输入输出如下所示: 【输入猴子还剩1 个桃子的最后一天: 】10 猴子第一天摘了1534 个桃子 ------------------------------------------------------------------------- 注意:请勿改动程序中的其他内容,请勿重新定义变量名。 ------------------------------------------------------------------------*/ #include 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; } ``` ```c /*----------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------- 题目:一瓶汽水一元,两个空瓶子可以换一瓶汽水,输入购买汽水的金额,编写函 数计算出一共可以喝多少瓶汽水 输入输出如下所示: 【请输入购买汽水的金额(元):】 3 总共可以喝 5 瓶汽水 ------------------------------------------------------------------------- 注意:请勿改动程序中的其他内容,请勿重新定义变量名。 ------------------------------------------------------------------------*/ #include 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; } ``` ### 第七次 ```c /*---------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------ 编写函数 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 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 /*---------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------ 请编写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 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; } ``` ### 第八次 ```c /*---------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------ 函数 fun 的功能是: 将 输入的字符串中的字母转换为按字母序列的后续字母(但 Z 转换为 A, z 转换为 a),其它字符不变,最后输出转换后的字符串。 示例1: 【请输入一个字符串: 】12345QAZWSXrfvtgb!!@!@@¥ 【转换后的字符串为: 】12345RBAXTYsgwuhc!!@!@@¥ ------------------------------------------------------------------------ ----------------------------------------------------------------------*/ #include #include #include 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 /*---------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------ 要求编写一个程序来计算给定整数的平方根的整数部分,功能类似于 C 语言标准 库中的 sqrt 函数,但仅返回整数部分结果。 示例1: 【请输入一个非负整数: 】12 【12 的平方根的整数部分是: 】3 ------------------------------------------------------------------------ ----------------------------------------------------------------------*/ #include 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 /*---------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------ 编写一个 C 语言函数,函数接收一个整数数组 arr 以及数组的长度 size 作为参 数,使用 bool 类型返回该数组中是否存在重复的元素。在 main 函数中,输入多 个正整数(输入非数字字符表示输入结束)并调用该函数,根据返回结果输出相应 的提示信息。 示例: 【请输入多个整数(输入非数字字符结束输入):】1 2 3 4 5 5 6 a 数组中存在重复元素。 ------------------------------------------------------------------------ 注意:部分源程序给出如下。请勿改动主函数 main 或其它函数中给出的内容,仅 在 Program-End 之间填入若干语句。 不要删除标志否则不得分。 不要修改或删除Program-End 之外的内容否则不得分。 ----------------------------------------------------------------------*/ #include #include #include 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; } ``` ```c /*---------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------ 现在有一位赛车手要驾驶一台电动摩托车去完成多段赛程。这台电动摩托车的电 池电量存储 上限是 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 #include // 引入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; } ``` ### 第十次 ```c /*---------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------ 请编写函数 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 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 /*---------------------------------------------------------------------- 【程序设计】 ------------------------------------------------------------------------ 编写一个 C 语言程序,输入由中括号 [数字和小写字母]组成且无中括号嵌套的字 符串。规则如下:[nx](n 为正整数,x 为小写字母)表示将 x 重复 n 次;[nxy] (n 为正整数,x、y 为小写字母)表示将 xy 重复 n 次。实现 fun 函数对输入 字符串解码并生成原始字符串。 示例1: 【请输入符合规则的字符串:】[5wh] 【原始字符串:】whwhwhwhwh ------------------------------------------------------------------------ 注意:部分源程序给出如下。请勿改动主函数 `main` 或其它函数中给出的内容, 仅在 Program-End 之间填入若干语句。 不要删除标志否则不得分。 不要修改或删除Program-End 之外的内容否则不得分。 ----------------------------------------------------------------------*/ #include #include #include 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; } ```