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:
parent
d33e765484
commit
0f39a3a688
13
【实践课外】13.指针1/6-1 删除字符串中数字字符.c
Normal file
13
【实践课外】13.指针1/6-1 删除字符串中数字字符.c
Normal 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--;
|
||||
}
|
||||
}
|
||||
}
|
35
【实践课外】13.指针1/6-1 删除字符串中数字字符.md
Normal file
35
【实践课外】13.指针1/6-1 删除字符串中数字字符.md
Normal 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
|
||||
```
|
11
【实践课外】13.指针1/6-2 找最大值及其下标.c
Normal file
11
【实践课外】13.指针1/6-2 找最大值及其下标.c
Normal 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];
|
||||
}
|
39
【实践课外】13.指针1/6-2 找最大值及其下标.md
Normal file
39
【实践课外】13.指针1/6-2 找最大值及其下标.md
Normal 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
|
||||
|
||||
```
|
6
【实践课外】13.指针1/6-3 求两数平方根之和.c
Normal file
6
【实践课外】13.指针1/6-3 求两数平方根之和.c
Normal 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;
|
||||
}
|
36
【实践课外】13.指针1/6-3 求两数平方根之和.md
Normal file
36
【实践课外】13.指针1/6-3 求两数平方根之和.md
Normal 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
|
||||
```
|
20
【实践课外】13.指针1/6-4 求一组数中的最大值、最小值和平均值.c
Normal file
20
【实践课外】13.指针1/6-4 求一组数中的最大值、最小值和平均值.c
Normal 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;
|
||||
}
|
37
【实践课外】13.指针1/6-4 求一组数中的最大值、最小值和平均值.md
Normal file
37
【实践课外】13.指针1/6-4 求一组数中的最大值、最小值和平均值.md
Normal 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
|
||||
```
|
9
【实践课外】13.指针1/6-5 两个4位正整数的后两位互换.c
Normal file
9
【实践课外】13.指针1/6-5 两个4位正整数的后两位互换.c
Normal 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;
|
||||
}
|
37
【实践课外】13.指针1/6-5 两个4位正整数的后两位互换.md
Normal file
37
【实践课外】13.指针1/6-5 两个4位正整数的后两位互换.md
Normal 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
|
||||
```
|
14
【实践课外】13.指针1/6-6 判断回文字符串.c
Normal file
14
【实践课外】13.指针1/6-6 判断回文字符串.c
Normal 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;
|
||||
}
|
59
【实践课外】13.指针1/6-6 判断回文字符串.md
Normal file
59
【实践课外】13.指针1/6-6 判断回文字符串.md
Normal 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
|
||||
```
|
Loading…
Reference in New Issue
Block a user