diff --git a/【实践课内】14.指针2/6-1 使用函数实现字符串部分复制.c b/【实践课内】14.指针2/6-1 使用函数实现字符串部分复制.c new file mode 100644 index 0000000..3111fc3 --- /dev/null +++ b/【实践课内】14.指针2/6-1 使用函数实现字符串部分复制.c @@ -0,0 +1,12 @@ +void strmcpy(char *src, int begin_idx, char *dst) { + int len = strlen(src); + + begin_idx--; + + for (int i = begin_idx; i < len; i++) { + *dst = src[i]; + dst++; + } + + *dst = '\0'; +} diff --git a/【实践课内】14.指针2/6-1 使用函数实现字符串部分复制.md b/【实践课内】14.指针2/6-1 使用函数实现字符串部分复制.md new file mode 100644 index 0000000..d2a2ae9 --- /dev/null +++ b/【实践课内】14.指针2/6-1 使用函数实现字符串部分复制.md @@ -0,0 +1,46 @@ +# 6-1 使用函数实现字符串部分复制 + +本题要求编写函数,将输入字符串$$t$$中从第$$m$$个字符开始的全部字符复制到字符串$$s$$中。 + +### 函数接口定义: +```c++ +void strmcpy( char *t, int m, char *s ); +``` +函数`strmcpy`将输入字符串`char *t`中从第`m`个字符开始的全部字符复制到字符串`char *s`中。若`m`超过输入字符串的长度,则结果字符串应为空串。 + +### 裁判测试程序样例: +```c++ +#include +#define MAXN 20 + +void strmcpy( char *t, int m, char *s ); +void ReadString( char s[] ); /* 由裁判实现,略去不表 */ + +int main() +{ + char t[MAXN], s[MAXN]; + int m; + + scanf("%d\n", &m); + ReadString(t); + strmcpy( t, m, s ); + printf("%s\n", s); + + return 0; +} + +/* 你的代码将被嵌在这里 */ +``` + +### 输入样例: +```in +7 +happy new year + +``` + +### 输出样例: +```out +new year + +``` diff --git a/【实践课内】14.指针2/6-2 拆分实数的整数与小数部分.c b/【实践课内】14.指针2/6-2 拆分实数的整数与小数部分.c new file mode 100644 index 0000000..66d105b --- /dev/null +++ b/【实践课内】14.指针2/6-2 拆分实数的整数与小数部分.c @@ -0,0 +1,4 @@ +void splitfloat(float x, int *intpart, float *fracpart) { + *intpart = (int)x; + *fracpart = x - *intpart; +} diff --git a/【实践课内】14.指针2/6-2 拆分实数的整数与小数部分.md b/【实践课内】14.指针2/6-2 拆分实数的整数与小数部分.md new file mode 100644 index 0000000..ab42db8 --- /dev/null +++ b/【实践课内】14.指针2/6-2 拆分实数的整数与小数部分.md @@ -0,0 +1,42 @@ +# 6-2 拆分实数的整数与小数部分 + +本题要求实现一个拆分实数的整数与小数部分的简单函数。 + +### 函数接口定义: +```c++ +void splitfloat( float x, int *intpart, float *fracpart ); +``` +其中`x`是被拆分的实数(0$$\le$$`x`$$<$$10000),`*intpart`和`*fracpart`分别是将实数x拆分出来的整数部分与小数部分。 + +### 裁判测试程序样例: +```c++ +#include + +void splitfloat( float x, int *intpart, float *fracpart ); + +int main() +{ + float x, fracpart; + int intpart; + + scanf("%f", &x); + splitfloat(x, &intpart, &fracpart); + printf("The integer part is %d\n", intpart); + printf("The fractional part is %g\n", fracpart); + + return 0; +} + +/* 你的代码将被嵌在这里 */ +``` + +### 输入样例: +```in +2.718 +``` + +### 输出样例: +```out +The integer part is 2 +The fractional part is 0.718 +``` diff --git a/【实践课内】14.指针2/6-3 存在感.c b/【实践课内】14.指针2/6-3 存在感.c new file mode 100644 index 0000000..92f4bd6 --- /dev/null +++ b/【实践课内】14.指针2/6-3 存在感.c @@ -0,0 +1,23 @@ +int frequency(char* paragraph, char* from, char* to) { + int cnt = 0; + int len = strlen(paragraph); + + for (int i = 0; i < len; i++) { + if (paragraph[i] == from[0]) { + int flag = 1; + + for (int j = 1; from + j <= to; j++) { + if (paragraph[i + j] != from[j]) { + flag = 0; + break; + } + } + + if (flag) { + cnt++; + } + } + } + + return cnt; +} diff --git a/【实践课内】14.指针2/6-3 存在感.md b/【实践课内】14.指针2/6-3 存在感.md new file mode 100644 index 0000000..0ed5073 --- /dev/null +++ b/【实践课内】14.指针2/6-3 存在感.md @@ -0,0 +1,54 @@ +# 6-3 存在感 + +给定函数 frequency 的功能是:求字符串(子串)在字符串(一个段落)中出现的次数。 + +### 函数接口定义: +```c +int frequency ( char* paragraph, char* from, char* to ); +``` + +其中 paragraph指向的空间中存放着一个字符串,from与to分别指向子串的第一个字符和最后一个字符。函数返回值为指定的子串在字符串中出现的次数。 + +### 裁判测试程序样例: +```c +#include +#include +#include +int frequency ( char* paragraph, char* from, char* to ); +int main() +{ + int N; + char *s; + int from,to; + int freq; + scanf("%d\n",&N); + s = (char *)malloc((N+1)*sizeof(char)); + gets(s); + scanf("%d %d", &from, &to); + + freq = frequency ( s, s+from-1, s+to-1 ); + + printf("%d\n",freq); + return 0; +} + +/* 您提交的代码将放置在这里 */ +``` +###输入格式: +第一行为一个正整数N,0 +#include + +const char *reverse(char *s) { + int len = strlen(s); + + for (int i = 0; i < len / 2; i++) { + char temp = s[i]; + s[i] = s[len - i - 1]; + s[len - i - 1] = temp; + } + + return s; +} + +int main() { + char s[25]; + + while (scanf("%s", s) != EOF) { + printf("%s ", reverse(s)); + } + + return 0; +} diff --git a/【实践课内】14.指针2/7-1 单词翻转.md b/【实践课内】14.指针2/7-1 单词翻转.md new file mode 100644 index 0000000..08c500f --- /dev/null +++ b/【实践课内】14.指针2/7-1 单词翻转.md @@ -0,0 +1,35 @@ +# 7-1 单词翻转 + +从键盘输入一个字符串,包含很多个单词。每个单词之间以1个或多个空格隔开。要求翻转每个单词,但是单词在句子中的顺序不变。注意行前和行后可能有多个空格。 + +### 输入格式: + +一个字符串,包含很多个单词。每个单词之间以1个或多个空格隔开。要求翻转每个单词,但是单词在句子中的顺序不变。注意行前和行后可能有多个空格。字符串总长度不超过1000,单词数不超过50,每个单词不超过20个字母。测试数据保证输入的字符只含英文字母和空格。 + +### 输出格式: + +输出翻转后的字符串。每个单词之后输出一个空格。注意行前不能有多余的空格。行末只能有1个空格。 + +### 输入样例1: + +```in +olleH dlroW +``` + +### 输出样例1: + +```out +Hello World +``` + +### 输入样例2: + +```in + I ma a tneduts +``` + +### 输出样例2: + +```out +I am a student +```