diff --git a/【实践课外】13.指针1/6-1 删除字符串中数字字符.c b/【实践课外】13.指针1/6-1 删除字符串中数字字符.c new file mode 100644 index 0000000..a5b4af0 --- /dev/null +++ b/【实践课外】13.指针1/6-1 删除字符串中数字字符.c @@ -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--; + } + } +} diff --git a/【实践课外】13.指针1/6-1 删除字符串中数字字符.md b/【实践课外】13.指针1/6-1 删除字符串中数字字符.md new file mode 100644 index 0000000..9803229 --- /dev/null +++ b/【实践课外】13.指针1/6-1 删除字符串中数字字符.md @@ -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 +``` diff --git a/【实践课外】13.指针1/6-2 找最大值及其下标.c b/【实践课外】13.指针1/6-2 找最大值及其下标.c new file mode 100644 index 0000000..f9f6677 --- /dev/null +++ b/【实践课外】13.指针1/6-2 找最大值及其下标.c @@ -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]; +} diff --git a/【实践课外】13.指针1/6-2 找最大值及其下标.md b/【实践课外】13.指针1/6-2 找最大值及其下标.md new file mode 100644 index 0000000..2d4d863 --- /dev/null +++ b/【实践课外】13.指针1/6-2 找最大值及其下标.md @@ -0,0 +1,39 @@ +# 6-2 找最大值及其下标 + + +在一维整型数组中找出其中最大的数及其下标。 + +### 函数接口定义: +```c++ +int fun(int *a,int *b,int n); +``` + +其中形参`a` 、`b`、`n `都是用户传入的参数。函数fun的功能是在指针`a`所指向的一维数组中找出其中最大的数及其下标,下标存到指针`b`所指的变量里,函数返回最大值。 + +### 裁判测试程序样例: +```c++ +#include +#define N 10 +int fun(int *a,int *b,int n); +int main() +{ int a[N],i,max,p=0; +for(i=0;i +#include +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 +``` diff --git a/【实践课外】13.指针1/6-4 求一组数中的最大值、最小值和平均值.c b/【实践课外】13.指针1/6-4 求一组数中的最大值、最小值和平均值.c new file mode 100644 index 0000000..8dd0151 --- /dev/null +++ b/【实践课外】13.指针1/6-4 求一组数中的最大值、最小值和平均值.c @@ -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; +} diff --git a/【实践课外】13.指针1/6-4 求一组数中的最大值、最小值和平均值.md b/【实践课外】13.指针1/6-4 求一组数中的最大值、最小值和平均值.md new file mode 100644 index 0000000..36af02d --- /dev/null +++ b/【实践课外】13.指针1/6-4 求一组数中的最大值、最小值和平均值.md @@ -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 +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 +``` diff --git a/【实践课外】13.指针1/6-5 两个4位正整数的后两位互换.c b/【实践课外】13.指针1/6-5 两个4位正整数的后两位互换.c new file mode 100644 index 0000000..94f629d --- /dev/null +++ b/【实践课外】13.指针1/6-5 两个4位正整数的后两位互换.c @@ -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; +} diff --git a/【实践课外】13.指针1/6-5 两个4位正整数的后两位互换.md b/【实践课外】13.指针1/6-5 两个4位正整数的后两位互换.md new file mode 100644 index 0000000..22bd129 --- /dev/null +++ b/【实践课外】13.指针1/6-5 两个4位正整数的后两位互换.md @@ -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 +``` diff --git a/【实践课外】13.指针1/6-6 判断回文字符串.c b/【实践课外】13.指针1/6-6 判断回文字符串.c new file mode 100644 index 0000000..e6c024d --- /dev/null +++ b/【实践课外】13.指针1/6-6 判断回文字符串.c @@ -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; +} diff --git a/【实践课外】13.指针1/6-6 判断回文字符串.md b/【实践课外】13.指针1/6-6 判断回文字符串.md new file mode 100644 index 0000000..317ce60 --- /dev/null +++ b/【实践课外】13.指针1/6-6 判断回文字符串.md @@ -0,0 +1,59 @@ +# 6-6 判断回文字符串 + +本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。 + +### 函数接口定义: +```c++ +bool palindrome( char *s ); +``` +函数`palindrome`判断输入字符串`char *s`是否为回文。若是则返回`true`,否则返回`false`。 + +### 裁判测试程序样例: +```c++ +#include +#include + +#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 +```