题目描述

从键盘接收一个字符串,由数字、大小写字母和空格组成。程序功能为去掉字符串中的所有数字,最后输出变更后的字符串。注意,并列的空格需要缩减为1个空格。比如键盘输入如下:

(1)能够从键盘正确接收字符串;(2分)

(2)能够去除数字;(4分)

(3)能够合并并列的空格;(4分)

(4)能够输出变更后的字符串;(2分)

(5)程序能够全面正确运行;(3分)

源代码

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
#include <stdio.h>

void input(char a[]) {
printf("Enter a string: ");
fgets(a, 100, stdin); // 使用fgets获取一行输入
}

void print(char a[]) {
printf("%s\n", a);
}

#include <stdio.h>

void delete(char a[]) {
int i, j = 0;
int spaceFlag = 0; // 标志变量,用于检测空格连续性
for (i = 0; a[i] != '\0'; i++) {
if ((a[i] < '0' || a[i] > '9') && a[i] != ' ') {
a[j++] = a[i]; // 将非数字字符和非空格字符移动到数组前部
spaceFlag = 0; // 非空格字符出现时,重置空格连续性标志
} else if (a[i] == ' ') {
if (!spaceFlag) {
a[j++] = ' '; // 保留一个空格
spaceFlag = 1; // 标记已经出现一个空格
}
}
}
a[j] = '\0'; // 添加字符串结束标志
}

int main() {
char array[100];

printf("Enter a string: ");
fgets(array, 100, stdin); // 读取输入的字符串

printf("Original string: %s\n", array);

delete(array);
printf("After deleting and merging: %s\n", array);

return 0;
}