Auto commit
This commit is contained in:
parent
e98ec49be5
commit
ca908905f0
776
万维25届C语言调考试题.md
776
万维25届C语言调考试题.md
@ -163,11 +163,91 @@ main()
|
|||||||
### 第三次A
|
### 第三次A
|
||||||
|
|
||||||
```c
|
```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
|
```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;
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@ -175,11 +255,72 @@ main()
|
|||||||
### 第三次B
|
### 第三次B
|
||||||
|
|
||||||
```c
|
```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
|
```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;
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@ -187,25 +328,162 @@ main()
|
|||||||
### 第四次
|
### 第四次
|
||||||
|
|
||||||
```c
|
```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
|
```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
|
```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
|
```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);
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@ -213,50 +491,544 @@ main()
|
|||||||
### 第六次
|
### 第六次
|
||||||
|
|
||||||
```c
|
```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
|
```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
|
```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
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
【程序设计】
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
请编写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
|
```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
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
【程序设计】
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
要求编写一个程序来计算给定整数的平方根的整数部分,功能类似于 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
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
【程序设计】
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
编写一个 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
|
```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
|
```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
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
【程序设计】
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
编写一个 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;
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user