1
0
mirror of https://github.com/renbaoshuo/202401-programming-assignments.git synced 2024-12-16 15:44:39 +00:00

【实践课外】13.指针1

This commit is contained in:
Baoshuo Ren 2024-11-29 16:43:30 +08:00
parent d33e765484
commit 0f39a3a688
Failed to extract signature
12 changed files with 316 additions and 0 deletions

View File

@ -0,0 +1,13 @@
void delnum(char *s) {
int s_len = strlen(s);
for (int i = 0; i < s_len; i++) {
if (s[i] >= '0' && s[i] <= '9') {
for (int j = i; j < s_len; j++) {
s[j] = s[j + 1];
}
s_len--;
i--;
}
}
}

View File

@ -0,0 +1,35 @@
# 6-1 删除字符串中数字字符
删除一个字符串中的所有数字字符。
### 函数接口定义:
```c++
void delnum(char *s);
```
其中 `s `是用户传入的参数。 函数的功能是删除指针 `s `所指的字符串中的所有数字字符。
### 裁判测试程序样例:
```c++
#include "stdio.h"
void delnum(char *s);
int main ()
{ char item[80];
gets(item);
delnum(item);
printf("%s\n",item);
return 0;
}
/* 请在这里填写答案 */
```
### 输入样例:
```in
a0bc+d496df
```
### 输出样例:
```out
abc+ddf
```

View File

@ -0,0 +1,11 @@
int fun(int *a, int *b, int n) {
*b = 0;
for (int i = 1; i < n; i++) {
if (a[i] > a[*b]) {
*b = i;
}
}
return a[*b];
}

View File

@ -0,0 +1,39 @@
# 6-2 找最大值及其下标
在一维整型数组中找出其中最大的数及其下标。
### 函数接口定义:
```c++
int fun(int *a,int *b,int n);
```
其中形参`a` 、`b`、`n `都是用户传入的参数。函数fun的功能是在指针`a`所指向的一维数组中找出其中最大的数及其下标,下标存到指针`b`所指的变量里,函数返回最大值。
### 裁判测试程序样例:
```c++
#include<stdio.h>
#define N 10
int fun(int *a,int *b,int n);
int main()
{ int a[N],i,max,p=0;
for(i=0;i<N;i++) scanf("%d",&a[i]);
max=fun(a,&p,N);
printf("max=%d,position=%d\n",max,p);
return 0;
}
/* 请在这里填写答案 */
```
### 输入样例:
```in
2 1 5 4 8 4 5 8 9 1
```
### 输出样例:
```out
max=9,position=8
```

View File

@ -0,0 +1,6 @@
double fun(double *a, double *b) {
double sqrt_a = sqrt(*a),
sqrt_b = sqrt(*b);
return sqrt_a + sqrt_b;
}

View File

@ -0,0 +1,36 @@
# 6-3 求两数平方根之和
函数fun的功能是求两数平方根之和作为函数值返回。例如输入12和20输出结果是y = 7.936238。
### 函数接口定义:
```c++
double fun (double *a, double *b);
```
其中 `a ``b `是用户传入的参数。函数求 `a `指针和` b` 指针所指的两个数的平方根之和,并返回和。
### 裁判测试程序样例:
```c++
#include<stdio.h>
#include <math.h>
double fun (double *a, double *b);
int main ( )
{ double a, b, y;
scanf ("%lf%lf", &a, &b );
y=fun(&a, &b); printf ("y=%.2f\n", y );
return 0;
}
/* 请在这里填写答案 */
```
### 输入样例:
```in
12 20
```
### 输出样例:
```out
y=7.94
```

View File

@ -0,0 +1,20 @@
float fun(int a[], int n, int *max, int *min) {
float sum = a[0];
*max = a[0];
*min = a[0];
for (int i = 1; i < n; i++) {
sum += a[i];
if (a[i] > *max) {
*max = a[i];
}
if (a[i] < *min) {
*min = a[i];
}
}
return sum / n;
}

View File

@ -0,0 +1,37 @@
# 6-4 求一组数中的最大值、最小值和平均值
编写函数,求一组数中的最大值、最小值和平均值。
### 函数接口定义:
```c++
float fun(int a[],int n,int *max,int *min);
```
其中 `a`、`n`、`max` 和 `min` 都是用户传入的参数。函数求`a`数组中`n`个元素的最大值、最小值和平均值。最大值和最小值分别通过`max` 和 `min`带回,函数返回平均值 。
### 裁判测试程序样例:
```c++
#include <stdio.h>
float fun(int a[],int n,int *max,int *min);
int main()
{
int x[10],i,m,n;
float p;
for(i=0;i<10;i++)
scanf("%d",&x[i]);
p=fun(x,10,&m,&n);
printf("max=%d,min=%d,average=%.2f\n",m,n,p);
return 0;
}
/* 请在这里填写答案 */
```
### 输入样例:
```in
2 5 4 8 6 9 1 3 7 0
```
### 输出样例:
```out
max=9,min=0,average=4.50
```

View File

@ -0,0 +1,9 @@
void fun(int *p, int *q) {
int p_s = *p / 100,
p_e = *p % 100;
int q_s = *q / 100,
q_e = *q % 100;
*p = p_s * 100 + q_e;
*q = q_s * 100 + p_e;
}

View File

@ -0,0 +1,37 @@
# 6-5 两个4位正整数的后两位互换
将输入的任意两个4位正整数的后两位互换例如输入1234和5678交换之后输出1278和5634。
### 函数接口定义:
```c++
void fun(int *p,int *q);
```
其中` p `和 `q` 是用户传入的参数。函数将指针`p`所指整数与指针`q`所指的整数的后两位互换。
### 裁判测试程序样例:
```c++
void fun(int *p,int *q);
int main()
{int a,b;
scanf("%d%d",&a,&b);
fun(&a,&b);
printf("%5d%5d\n",a,b);
return 0;
}
/* 请在这里填写答案 */
```
### 输入样例:
```in
1234 5678
```
### 输出样例:
```out
1278 5634
```

View File

@ -0,0 +1,14 @@
bool palindrome(char *s) {
int p = 0,
q = strlen(s) - 1;
while (p < q) {
if (s[p] != s[q]) {
return false;
}
p++;
q--;
}
return true;
}

View File

@ -0,0 +1,59 @@
# 6-6 判断回文字符串
本题要求编写函数判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。
### 函数接口定义:
```c++
bool palindrome( char *s );
```
函数`palindrome`判断输入字符串`char *s`是否为回文。若是则返回`true`,否则返回`false`。
### 裁判测试程序样例:
```c++
#include <stdio.h>
#include <string.h>
#define MAXN 20
typedef enum {false, true} bool;
bool palindrome( char *s );
int main()
{
char s[MAXN];
scanf("%s", s);
if ( palindrome(s)==true )
printf("Yes\n");
else
printf("No\n");
printf("%s\n", s);
return 0;
}
/* 你的代码将被嵌在这里 */
```
### 输入样例1
```in
thisistrueurtsisiht
```
### 输出样例1
```out
Yes
thisistrueurtsisiht
```
### 输入样例2
```
thisisnottrue
```
### 输出样例2
```
No
thisisnottrue
```