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
b3f466c6ed
commit
5bc1a22c55
12
【实践课内】14.指针2/6-1 使用函数实现字符串部分复制.c
Normal file
12
【实践课内】14.指针2/6-1 使用函数实现字符串部分复制.c
Normal file
@ -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';
|
||||||
|
}
|
46
【实践课内】14.指针2/6-1 使用函数实现字符串部分复制.md
Normal file
46
【实践课内】14.指针2/6-1 使用函数实现字符串部分复制.md
Normal file
@ -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 <stdio.h>
|
||||||
|
#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
|
||||||
|
|
||||||
|
```
|
4
【实践课内】14.指针2/6-2 拆分实数的整数与小数部分.c
Normal file
4
【实践课内】14.指针2/6-2 拆分实数的整数与小数部分.c
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
void splitfloat(float x, int *intpart, float *fracpart) {
|
||||||
|
*intpart = (int)x;
|
||||||
|
*fracpart = x - *intpart;
|
||||||
|
}
|
42
【实践课内】14.指针2/6-2 拆分实数的整数与小数部分.md
Normal file
42
【实践课内】14.指针2/6-2 拆分实数的整数与小数部分.md
Normal file
@ -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 <stdio.h>
|
||||||
|
|
||||||
|
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
|
||||||
|
```
|
23
【实践课内】14.指针2/6-3 存在感.c
Normal file
23
【实践课内】14.指针2/6-3 存在感.c
Normal file
@ -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;
|
||||||
|
}
|
54
【实践课内】14.指针2/6-3 存在感.md
Normal file
54
【实践课内】14.指针2/6-3 存在感.md
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
# 6-3 存在感
|
||||||
|
|
||||||
|
给定函数 frequency 的功能是:求字符串(子串)在字符串(一个段落)中出现的次数。
|
||||||
|
|
||||||
|
### 函数接口定义:
|
||||||
|
```c
|
||||||
|
int frequency ( char* paragraph, char* from, char* to );
|
||||||
|
```
|
||||||
|
|
||||||
|
其中 paragraph指向的空间中存放着一个字符串,from与to分别指向子串的第一个字符和最后一个字符。函数返回值为指定的子串在字符串中出现的次数。
|
||||||
|
|
||||||
|
### 裁判测试程序样例:
|
||||||
|
```c
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
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<N<=1000;
|
||||||
|
第二行为一个长度不超过N的可能包括空格的字符串;
|
||||||
|
第三行为两个正整数,分别为子串的第一个字符和最后一个字符的在第二行的字符串中的位置(不是下标)。
|
||||||
|
### 输出格式:
|
||||||
|
一个正整数。
|
||||||
|
### 输入样例:
|
||||||
|
```in
|
||||||
|
300
|
||||||
|
The Weather Channel and weather.com provide a national and local weather forecast for cities, as well as weather radar, report and hurricane coverage.
|
||||||
|
28 30
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输出样例:
|
||||||
|
|
||||||
|
```out
|
||||||
|
4
|
||||||
|
```
|
24
【实践课内】14.指针2/7-1 单词翻转.c
Normal file
24
【实践课内】14.指针2/7-1 单词翻转.c
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
35
【实践课内】14.指针2/7-1 单词翻转.md
Normal file
35
【实践课内】14.指针2/7-1 单词翻转.md
Normal file
@ -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
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user