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

1036 lines
27 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 第一次
```c
/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目在此程序中函数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");
}
```
```c
/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目键盘输入一个整数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;
}
```
### 第二次
```c
/*-----------------------------------------------------------------------
【程序设计】
-----------------------------------------------------------------------
键盘输入五个正整数,编写函数求其中偶数之和,并输出结果
示例:
【请输入五个正整数】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 **********/
}
```
```c
/*-----------------------------------------------------------------------
【程序设计】
-----------------------------------------------------------------------
规定输入的字符串中只包含字母和*号。编写函数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
```c
/*-----------------------------------------------------------------------
【程序设计】
-----------------------------------------------------------------------
编写函数找出能同时满足用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 **********/
}
```
```c
/*-----------------------------------------------------------------------
【程序设计】
-----------------------------------------------------------------------
定义一个函数判断一个字符串是否是另一个字符串的子字符串,要求用指针实现。
输入输出如下:
【请输入第一个字符串:】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
```c
/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目随机输入一字符串不包含空格长度不超过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;
}
```
```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 <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;
}
```
### 第四次
```c
/*---------------------------------------------------------------------
程序设计
---------------------------------------------------------------------
王老师通过课题专利研发赚到了人生的第一个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;
}
```
```c
/*---------------------------------------------------------------------
程序设计
---------------------------------------------------------------------
通过指针传递实现将一数组中的数据按相反顺序存放。
例如输入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 **********/
}
```
### 第五次
```c
/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目:编写函数实现输入一串字符串,删除字符串中的重复的字符,然后输出新的
字符串(重复字符保留第一次出现的字符)
输入输出如下所示
请输入一串字符串: 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';
}
```
```c
/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目:编写函数实现用除二取余的方法,把任意一个十进制正数的二进制序列输出
(不考虑溢出)
程序输入输出如下所示
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);
}
```
### 第六次
```c
/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第
二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩
下的一半零一个。直到最后一天早上想再吃时,见只剩下一个桃子了。通过输入来
控制吃桃的最后一天,编写函数求第一天共摘了多少桃子。
输入输出如下所示:
【输入猴子还剩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;
}
```
```c
/*-----------------------------------------------------------------------
【程序设计】
-------------------------------------------------------------------------
题目:一瓶汽水一元,两个空瓶子可以换一瓶汽水,输入购买汽水的金额,编写函
数计算出一共可以喝多少瓶汽水
输入输出如下所示:
【请输入购买汽水的金额(元):】 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;
}
```
### 第七次
```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 <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
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
请编写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;
}
```
### 第八次
```c
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
函数 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
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
要求编写一个程序来计算给定整数的平方根的整数部分,功能类似于 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
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
编写一个 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;
}
```
```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 <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;
}
```
### 第十次
```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 <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
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
编写一个 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;
}
```