mirror of
https://github.com/renbaoshuo/202401-programming-assignments.git
synced 2024-12-16 15:44:39 +00:00
【实践课外】14.指针2
This commit is contained in:
parent
7040d88fe2
commit
c7b7c64b35
14
【实践课外】14.指针2/6-1 鸡兔同笼问题.c
Normal file
14
【实践课外】14.指针2/6-1 鸡兔同笼问题.c
Normal file
@ -0,0 +1,14 @@
|
||||
int ChickenRabbit(int *chicken, int *rabbit, int head, int foot) {
|
||||
if (head < 0 || foot < 0 || foot % 2 != 0 || foot > head * 4 || foot < head * 2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
*chicken = (4 * head - foot) / 2;
|
||||
*rabbit = head - *chicken;
|
||||
|
||||
if (*chicken < 0 || *rabbit < 0 || *chicken + *rabbit != head) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
58
【实践课外】14.指针2/6-1 鸡兔同笼问题.md
Normal file
58
【实践课外】14.指针2/6-1 鸡兔同笼问题.md
Normal file
@ -0,0 +1,58 @@
|
||||
# 6-1 鸡兔同笼问题
|
||||
|
||||
|
||||
《孙子算经》记载:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”
|
||||
|
||||
#### 函数原型
|
||||
|
||||
```c
|
||||
int ChickenRabbit(int *chicken, int *rabbit, int head, int foot);
|
||||
```
|
||||
|
||||
说明:head 和 foot 为头和脚的数量,chicken 和 rabbit 为指示鸡和兔数量的指针。若问题有解,则将鸡和兔的数量保存到 chicken 和 rabbit 所指示的变量中,函数值为 1(真);否则不改变 chicken 和 rabbit 所指示的变量,函数值为 0(假)。
|
||||
|
||||
#### 裁判程序
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
int ChickenRabbit(int *chicken, int *rabbit, int head, int foot);
|
||||
|
||||
int main()
|
||||
{
|
||||
int h, f, c, r;
|
||||
scanf("%d%d", &h, &f);
|
||||
if (ChickenRabbit(&c, &r, h, f))
|
||||
{
|
||||
printf("%d %d\n", c, r);
|
||||
}
|
||||
else
|
||||
{
|
||||
puts("None");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 你的提交代码将被嵌在这里 */
|
||||
```
|
||||
|
||||
#### 输入样例1
|
||||
```in
|
||||
35 94
|
||||
|
||||
```
|
||||
#### 输出样例1
|
||||
```out
|
||||
23 12
|
||||
|
||||
```
|
||||
#### 输入样例2
|
||||
```in
|
||||
30 71
|
||||
|
||||
```
|
||||
#### 输出样例2
|
||||
```out
|
||||
None
|
||||
|
||||
```
|
7
【实践课外】14.指针2/6-2 冒泡排序.c
Normal file
7
【实践课外】14.指针2/6-2 冒泡排序.c
Normal file
@ -0,0 +1,7 @@
|
||||
int cmp(const void *a, const void *b) {
|
||||
return *(int *)a - *(int *)b;
|
||||
}
|
||||
|
||||
void bubble(int a[], int n) {
|
||||
qsort(a, n, sizeof(int), cmp);
|
||||
}
|
46
【实践课外】14.指针2/6-2 冒泡排序.md
Normal file
46
【实践课外】14.指针2/6-2 冒泡排序.md
Normal file
@ -0,0 +1,46 @@
|
||||
# 6-2 冒泡排序
|
||||
|
||||
输入n(1<=n<=10)个整数,将它们从小到大排序后输出,要求编写函数bubble()实现冒泡排序算法。
|
||||
|
||||
### 函数接口定义:
|
||||
```c++
|
||||
void bubble (int a[ ], int n);
|
||||
```
|
||||
|
||||
其中 a为数组,n为数据个数。
|
||||
|
||||
### 裁判测试程序样例:
|
||||
```c++
|
||||
|
||||
#include <stdio.h>
|
||||
void bubble (int a[ ], int n);
|
||||
int main(void)
|
||||
{
|
||||
int n, a[10];
|
||||
int i;
|
||||
scanf("%d", &n);
|
||||
for (i=0; i<n;i++)
|
||||
scanf("%d",&a[i]);
|
||||
bubble(a,n);
|
||||
for (i=0; i<n; i++)
|
||||
printf("%d ",a[i]);
|
||||
printf("\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 请在这里填写答案 */
|
||||
```
|
||||
|
||||
### 输入样例:
|
||||
|
||||
```in
|
||||
8
|
||||
7 3 66 3 -5 22 -77 2
|
||||
```
|
||||
|
||||
### 输出样例:
|
||||
|
||||
```out
|
||||
-77 -5 2 3 3 7 22 66
|
||||
```
|
||||
|
15
【实践课外】14.指针2/6-3 字符串反正序连接.c
Normal file
15
【实践课外】14.指针2/6-3 字符串反正序连接.c
Normal file
@ -0,0 +1,15 @@
|
||||
void fun(char *s, char *t) {
|
||||
int len = strlen(s);
|
||||
|
||||
for (int i = len - 1; i >= 0; i--) {
|
||||
*t = s[i];
|
||||
t++;
|
||||
}
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
*t = s[i];
|
||||
t++;
|
||||
}
|
||||
|
||||
*t = '\0';
|
||||
}
|
35
【实践课外】14.指针2/6-3 字符串反正序连接.md
Normal file
35
【实践课外】14.指针2/6-3 字符串反正序连接.md
Normal file
@ -0,0 +1,35 @@
|
||||
# 6-3 字符串反正序连接
|
||||
|
||||
先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
|
||||
|
||||
### 函数接口定义:
|
||||
```c++
|
||||
void fun (char *s, char *t);
|
||||
```
|
||||
|
||||
其中` s `和 `t `都是用户传入的参数。函数先将在字符串`s`中的字符按逆序存放到`t`串中,然后把`s`中的字符按正序连接到`t`串的后面。
|
||||
|
||||
### 裁判测试程序样例:
|
||||
```c++
|
||||
#include <stdio.h>
|
||||
void fun (char *s, char *t);
|
||||
int main()
|
||||
{ char s[100], t[100];
|
||||
scanf("%s", s);
|
||||
fun(s, t);
|
||||
printf("%s\n", t);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 请在这里填写答案 */
|
||||
```
|
||||
|
||||
### 输入样例:
|
||||
```in
|
||||
abcd
|
||||
```
|
||||
|
||||
### 输出样例:
|
||||
```out
|
||||
dcbaabcd
|
||||
```
|
12
【实践课外】14.指针2/6-4 计算最长的字符串长度.c
Normal file
12
【实践课外】14.指针2/6-4 计算最长的字符串长度.c
Normal file
@ -0,0 +1,12 @@
|
||||
int max_len(char *s[], int n) {
|
||||
int max_len = 0;
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
int len = strlen(s[i]);
|
||||
if (len > max_len) {
|
||||
max_len = len;
|
||||
}
|
||||
}
|
||||
|
||||
return max_len;
|
||||
}
|
53
【实践课外】14.指针2/6-4 计算最长的字符串长度.md
Normal file
53
【实践课外】14.指针2/6-4 计算最长的字符串长度.md
Normal file
@ -0,0 +1,53 @@
|
||||
# 6-4 计算最长的字符串长度
|
||||
|
||||
本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。
|
||||
|
||||
### 函数接口定义:
|
||||
```c++
|
||||
int max_len( char *s[], int n );
|
||||
```
|
||||
其中`n`个字符串存储在`s[]`中,函数`max_len`应返回其中最长字符串的长度。
|
||||
|
||||
### 裁判测试程序样例:
|
||||
```c++
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define MAXN 10
|
||||
#define MAXS 20
|
||||
|
||||
int max_len( char *s[], int n );
|
||||
|
||||
int main()
|
||||
{
|
||||
int i, n;
|
||||
char *string[MAXN] = {NULL};
|
||||
|
||||
scanf("%d", &n);
|
||||
for(i = 0; i < n; i++) {
|
||||
string[i] = (char *)malloc(sizeof(char)*MAXS);
|
||||
scanf("%s", string[i]);
|
||||
}
|
||||
printf("%d\n", max_len(string, n));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 你的代码将被嵌在这里 */
|
||||
```
|
||||
|
||||
### 输入样例:
|
||||
```in
|
||||
4
|
||||
blue
|
||||
yellow
|
||||
red
|
||||
green
|
||||
```
|
||||
|
||||
### 输出样例:
|
||||
```out
|
||||
6
|
||||
|
||||
```
|
11
【实践课外】14.指针2/6-5 查找星期.c
Normal file
11
【实践课外】14.指针2/6-5 查找星期.c
Normal file
@ -0,0 +1,11 @@
|
||||
const char WEEKDAYS[][10] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
|
||||
|
||||
int getindex(char *s) {
|
||||
for (int i = 0; i < 7; i++) {
|
||||
if (strcmp(s, WEEKDAYS[i]) == 0) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
63
【实践课外】14.指针2/6-5 查找星期.md
Normal file
63
【实践课外】14.指针2/6-5 查找星期.md
Normal file
@ -0,0 +1,63 @@
|
||||
# 6-5 查找星期
|
||||
|
||||
本题要求实现函数,可以根据下表查找到星期,返回对应的序号。
|
||||
|
||||
| 序号 | 星期 |
|
||||
|:-----: |:--------:|
|
||||
| 0 | Sunday |
|
||||
| 1 | Monday |
|
||||
| 2 | Tuesday |
|
||||
| 3 | Wednesday |
|
||||
| 4 | Thursday |
|
||||
| 5 | Friday |
|
||||
| 6 | Saturday |
|
||||
|
||||
### 函数接口定义:
|
||||
```c++
|
||||
int getindex( char *s );
|
||||
```
|
||||
函数`getindex`应返回字符串`s`序号。如果传入的参数`s`不是一个代表星期的字符串,则返回-1。
|
||||
|
||||
### 裁判测试程序样例:
|
||||
```c++
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#define MAXS 80
|
||||
|
||||
int getindex( char *s );
|
||||
|
||||
int main()
|
||||
{
|
||||
int n;
|
||||
char s[MAXS];
|
||||
|
||||
scanf("%s", s);
|
||||
n = getindex(s);
|
||||
if ( n==-1 ) printf("wrong input!\n");
|
||||
else printf("%d\n", n);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 你的代码将被嵌在这里 */
|
||||
```
|
||||
|
||||
### 输入样例1:
|
||||
```in
|
||||
Tuesday
|
||||
```
|
||||
|
||||
### 输出样例1:
|
||||
```out
|
||||
2
|
||||
```
|
||||
### 输入样例2:
|
||||
```
|
||||
today
|
||||
```
|
||||
|
||||
### 输出样例2:
|
||||
```
|
||||
wrong input!
|
||||
```
|
21
【实践课外】14.指针2/7-1 C程序设计 实验5-7 数组指针作函数参数.c
Normal file
21
【实践课外】14.指针2/7-1 C程序设计 实验5-7 数组指针作函数参数.c
Normal file
@ -0,0 +1,21 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
int m, n;
|
||||
|
||||
scanf("%d%d", &m, &n);
|
||||
|
||||
for (int i = 1; i <= m; i++) {
|
||||
int sum = 0;
|
||||
|
||||
for (int j = 1, x; j <= n; j++) {
|
||||
scanf("%d", &x);
|
||||
|
||||
sum += x;
|
||||
}
|
||||
|
||||
printf("%d %.1lf\n", sum, 1.0 * sum / n);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
38
【实践课外】14.指针2/7-1 C程序设计 实验5-7 数组指针作函数参数.md
Normal file
38
【实践课外】14.指针2/7-1 C程序设计 实验5-7 数组指针作函数参数.md
Normal file
@ -0,0 +1,38 @@
|
||||
# 7-1 C程序设计 实验5-7 数组指针作函数参数
|
||||
|
||||
数组指针作函数参数
|
||||
输入m个学生(最多30人)n门课程(最多5门)的成绩,然后计算并打印每个学生各门课的总分和平均分。其中,m和n的值由用户从键盘输入。
|
||||
|
||||
### 输入格式:
|
||||
输入顺序如下:
|
||||
```
|
||||
学生个数m 课程数n
|
||||
学生1课程1分数 学生1课程2分数 ... 学生1课程n分数
|
||||
学生2课程1分数 学生2课程2分数 ... 学生2课程n分数
|
||||
...
|
||||
学生m课程1分数 学生m课程2分数 ... 学生m课程n分数
|
||||
```
|
||||
### 输出格式:
|
||||
|
||||
每个学生总分(整数) 平均分(实数,保留1位小数)
|
||||
|
||||
|
||||
### 输入样例:
|
||||
|
||||
在这里给出一组输入。例如:
|
||||
|
||||
```in
|
||||
2 3
|
||||
61 62 70
|
||||
75 82 90
|
||||
```
|
||||
|
||||
### 输出样例:
|
||||
|
||||
在这里给出相应的输出。例如:
|
||||
|
||||
```out
|
||||
193 64.3
|
||||
247 82.3
|
||||
```
|
||||
|
32
【实践课外】14.指针2/7-2 查找奥运五环色的位置.c
Normal file
32
【实践课外】14.指针2/7-2 查找奥运五环色的位置.c
Normal file
@ -0,0 +1,32 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#define MAXS 80
|
||||
|
||||
int getindex(char *s);
|
||||
|
||||
int main() {
|
||||
int n;
|
||||
char s[MAXS];
|
||||
|
||||
scanf("%s", s);
|
||||
n = getindex(s);
|
||||
if (n == -1) printf("Not Found\n");
|
||||
else printf("%d\n", n);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 你的代码将被嵌在这里 */
|
||||
|
||||
const char DATA[][10] = {"", "red", "blue", "yellow", "green", "black"};
|
||||
|
||||
int getindex(char *s) {
|
||||
for (int i = 0; i < 7; i++) {
|
||||
if (strcmp(s, DATA[i]) == 0) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
23
【实践课外】14.指针2/7-2 查找奥运五环色的位置.md
Normal file
23
【实践课外】14.指针2/7-2 查找奥运五环色的位置.md
Normal file
@ -0,0 +1,23 @@
|
||||
# 7-2 查找奥运五环色的位置
|
||||
|
||||
奥运五环的5种颜色的英文单词按一定顺序排列{"red", "blue", "yellow", "green", "black" },定义指针数组并初始化,输入任意一个颜色的英文单词,从已有颜色中查找并输出该颜色的位置值,若没有找到,则输出"Not Found"。
|
||||
|
||||
### 输入格式:
|
||||
|
||||
输入一个代表颜色的单词。
|
||||
|
||||
### 输出格式:
|
||||
|
||||
输出单词对应的位置值,如果未找到,输出Not Found。
|
||||
|
||||
### 输入样例:
|
||||
|
||||
```in
|
||||
yellow
|
||||
```
|
||||
|
||||
### 输出样例:
|
||||
|
||||
```out
|
||||
3
|
||||
```
|
Loading…
Reference in New Issue
Block a user