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:02:24 +08:00
parent cf20fb9c7b
commit 3dec252d7e
Failed to extract signature
8 changed files with 188 additions and 0 deletions

View File

@ -0,0 +1,5 @@
void fun(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}

View File

@ -0,0 +1,34 @@
# 6-1 交换两个整数的值
函数fun的功能是实现交换两个整数的值。例如给a和b分别输入3和6 输出为a=6 b=3。
### 函数接口定义:
```c++
void fun (int *a,int *b);
```
其中形参`a` 和`b` 都是用户传入的参数。函数fun的功能是实现交换主函数中a和b的值。
### 裁判测试程序样例:
```c++
#include<stdio.h>
void fun (int *a,int *b);
int main()
{ int a,b;
scanf("a=%d,b=%d",&a,&b);
fun(&a,&b);
printf("a=%d b=%d\n",a,b);
return 0;
}
/* 请在这里填写答案 */
```
### 输入样例:
```in
a=3,b=5
```
### 输出样例:
```out
a=5 b=3
```

View File

@ -0,0 +1,7 @@
void findmax(int *px, int *py, int *pmax) {
if (*px > *py) {
*pmax = *px;
} else {
*pmax = *py;
}
}

View File

@ -0,0 +1,40 @@
# 6-2 利用指针找最大值
本题要求实现一个简单函数,找出两个数中的最大值。
### 函数接口定义:
```c++
void findmax( int *px, int *py, int *pmax );
```
其中`px`和`py`是用户传入的两个整数的指针。函数`findmax`应找出两个指针所指向的整数中的最大值,存放在`pmax`指向的位置。
### 裁判测试程序样例:
```c++
#include <stdio.h>
void findmax( int *px, int *py, int *pmax );
int main()
{
int max, x, y;
scanf("%d %d", &x, &y);
findmax( &x, &y, &max );
printf("%d\n", max);
return 0;
}
/* 你的代码将被嵌在这里 */
```
### 输入样例:
```in
3 5
```
### 输出样例:
```out
5
```

View File

@ -0,0 +1,6 @@
char *str_cat(char *s, char *t) {
int s_len = strlen(s),
t_len = strlen(t);
memcpy(s + s_len, t, t_len);
return s;
}

View File

@ -0,0 +1,46 @@
# 6-3 字符串的连接
本题要求实现一个函数,将两个字符串连接起来。
### 函数接口定义:
```c++
char *str_cat( char *s, char *t );
```
函数`str_cat`应将字符串`t`复制到字符串`s`的末端,并且返回字符串`s`的首地址。
### 裁判测试程序样例:
```c++
#include <stdio.h>
#include <string.h>
#define MAXS 10
char *str_cat( char *s, char *t );
int main()
{
char *p;
char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'};
scanf("%s%s", str1, str2);
p = str_cat(str1, str2);
printf("%s\n%s\n", p, str1);
return 0;
}
/* 你的代码将被嵌在这里 */
```
### 输入样例:
```in
abc
def
```
### 输出样例:
```out
abcdef
abcdef
```

View File

@ -0,0 +1,5 @@
void Shift(char s[]) {
int s_len = strlen(s);
memcpy(s + s_len, s, 3);
memcpy(s + 3, s, s_len);
}

View File

@ -0,0 +1,45 @@
# 6-4 移动字母
本题要求编写函数将输入字符串的前3个字符移到最后。
### 函数接口定义:
```c++
void Shift( char s[] );
```
其中`char s[]`是用户传入的字符串题目保证其长度不小于3函数`Shift`须将按照要求变换后的字符串仍然存在`s[]`里。
### 裁判测试程序样例:
```c++
#include <stdio.h>
#include <string.h>
#define MAXS 10
void Shift( char s[] );
void GetString( char s[] ); /* 实现细节在此不表 */
int main()
{
char s[MAXS];
GetString(s);
Shift(s);
printf("%s\n", s);
return 0;
}
/* 你的代码将被嵌在这里 */
```
### 输入样例:
```in
abcdef
```
### 输出样例:
```out
defabc
```