北京工业大学考研--复试--机试刷题

1 背景

快要开始复试了,虽然今年疫情不那么严重,但我估计北工大的复试还是线上进行,不过练习点编程题目也不是什么坏事,废话不多说,开始淦吧……

2 字符数组

2.1 题目

题目描述

删除字符串中所有空格,并输出删除空格后的字符串和被删除的空格数

思路

利用gets()函数接收输入的字符串,然后调用函数delSpace(s[])删除所以空格并返回已经删除的空格数量。

输入

Ikun is a handsome boy.

输出

The number of space is:4
Now the string is:
Ikunisahandsomeboy.

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// 删除字符串中所有空格,并输出删除空格后的字符串和被删除的空格数

#include <stdio.h>

int main() {

// 函数调用
int delSpace(char s[]);

// 字符串str
char str[100];

// num 表示字符串中的空格数
int num = 0;

// 输入字符串
printf("%s\n", "Enter a string:");
gets(str);

// 删除空格并返回字符串中的空格数
num = delSpace(str);

// 函数调用后的结果
printf("The space of number is: %d\n", num);
printf("%s\n", "Now the string is: ");
puts(str);
return 0;
}

int delSpace(char s[]) {
int i = 0, j = 0;

// 未完全遍历所给字符串
while(s[i] != '\0') {

// 当前位置不是空格
if(s[i] != ' ') {
s[j] = s[i];
j++;
}
i++;
}
s[j] = '\0';
// 返回所删除字符的个数
return i - j;
}

展示

图1 题2.1运行图

分析

  • gets()的使用方法
  • puts()的使用方法

2.2 题目

题目描述

输入字符串和m。输出后m个字符;若不足m个字符就全部输出

思路

首先,利用gets()函数接收输入的字符串,然后,利用scanf()函数接收输入的m,接着,调用函数strlen(s)计算字符串的长度len,最后,通过判断mlen的相对大小利用循环输出字符串。

输入

Ikun is a handsome boy.
4

输出

boy.

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// 输入字符串和m。输出后m个字符;若不足m个字符就全部输出

#include <stdio.h>
#include <string.h>

int main() {

// m 表示待输出的字符串长度
// i 表示计数变量
// len 表示输入的字符串长度
int m = 0, i = 0, j = 0, len = 0;

// 字符串s
char s[1000];

// 输入字符串
printf("%s\n", "Please input the string:");
gets(s);

// 输入m
printf("%s\n", "Please input the value of m:");
scanf("%d", &m);

// 计算字符串长度
len = strlen(s);

// 字符串长度不足m个
if(len < m)
puts(s);

// 字符串长度大于m个
else {
// 合理控制计数变量的值进行删除
for(i = len - m; s[i] != '\0'; i++) {
printf("%c", s[i]);
}
printf("\n");
}
return 0;
}

展示

图2 题2.2运行图

分析

  • strlen()函数的使用方法
  • scanf()函数的使用方法

2.3 题目

题目描述

删除字符串s中从第k个字符开始的n个字符,若不足n个,删除到末尾即可

思路

首先,利用gets()函数接收输入的字符串,然后,调用函数strlen(s)计算字符串的长度len,最后,合理控制计数变量的值进行删除。

输入

Ikun is a handsome boy.
9
11

输出

The deleted string is:
Ikun is boy.

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// 删除字符串s中从第k个字符开始的n个字符,若不足n个,删除到末尾即可

#include <stdio.h>
#include <string.h>

int main() {

// n 表示待输出的字符串长度
// k 表示待输出的字符串首位置
// i, j 都是计数变量
// len 表示 输入的字符串长度
int n = 0, k = 0, i = 0, j = 0, len = 0;

// 字符串s
char s[1000];

// 输入字符串
printf("%s\n", "Please input the string:");
gets(s);

// 输入k
printf("%s\n", "Please input the value of k:");
scanf("%d", &k);

// 输入n
printf("%s\n", "Please input the value of n:");
scanf("%d", &n);

// 计算字符串长度
len = strlen(s);

// 字符串长度不足m个
if(k + n - 1 > len)
s[k - 1] = '\0';

// 字符串长度大于m个
else {
// 合理控制计数变量的值进行删除
for(i = k - 1, j = k + n - 1; s[j] != '\0';) {
s[i] = s[j];
i++;
j++;
}
s[i] = '\0';
}

printf("%s\n", "The deleted string is:");
puts(s);
return 0;
}

展示

图3 题2.3运行图

分析

  • 合理处理计算变量ij的值

2.4 题目

题目描述

从指定的字符串读取前n个字符显示

思路

首先,利用gets()函数接收字符串,然后,判断字符串长度lenn的大小以便输出对应的结果。

输入

Ikun is a handsome boy.
6

输出

Ikun i

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// 从指定的字符串读取前n个字符显示 

#include <stdio.h>
#include <string.h>

int main() {

// n 表示待输出的字符串长度
// i 表示计数变量
// len 表示输入的字符串长度
int n = 0, i = 0, j = 0, len = 0;

// 字符串s
char s[1000];

// 输入字符串
printf("%s\n", "Please input the string:");
gets(s);

// 输入n
printf("%s\n", "Please input the value of n:");
scanf("%d", &n);

// 计算字符串长度
len = strlen(s);

// 字符串长度不足n个
if(n > len)
puts(s);

// 字符串长度大于n个
else {
// 合理控制计数变量的值进行输出
for(i = 0; i < n; i++)
printf("%c", s[i]);
}
return 0;
}

展示

图4 题2.4运行图

分析

  • 一定的逻辑思想

3 总结

今天关于字符数组的练习收获良多,总结下来就是下面的几点。

  • gets()函数的使用方法
  • puts()函数的使用方法
  • scanf()函数的使用方法
  • strlen()函数的使用方法
  • 合理的数组下标表示

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以邮件至 xingshuaikun@163.com。

×

喜欢就点赞,疼爱就打赏