C语言编程输入一个字符串strl,把其中的连续非数字的字符 子串换成一个*,存入字符数组str2中,所有数字字符也 必须依次存入str2中。输出str2。
时间: 2024-05-09 13:22:02 浏览: 260
答案如下:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAXLEN 100
void replace_non_digits(char *str1, char *str2) {
int i, j, len;
len = strlen(str1);
for (i = 0, j = 0; i < len; i++) {
if (!isdigit(str1[i])) {
str2[j++] = '*';
} else {
str2[j++] = str1[i];
}
}
str2[j] = '\0';
}
int main() {
char str1[MAXLEN], str2[MAXLEN];
printf("请输入一个字符串:");
fgets(str1, MAXLEN, stdin);
replace_non_digits(str1, str2);
printf("处理后的字符串为:%s\n", str2);
return 0;
}
```
输入一个字符串,调用 replace_non_digits 函数进行处理,将非数字字符替换为 `*`,将数字字符存入 str2 中,最后输出处理后的字符串。注意调用时第二个参数 str2 需要预先分配足够的空间。
相关问题
C语言编程:首先定义两个字符数组str1、str2,并进行初始化赋值,用逐个字符赋值法将自己的姓名对应的拼音字母赋给字符数组strl,用字符串常量赋值法将"I love China!"赋给字符数组str2;然后分别用格式符%c和 %s分行输出两个字符数组中的内容。
在C语言编程中,你可以按照以下步骤来实现你的需求:
1. 首先,你需要声明并初始化两个字符数组 `str1` 和 `str2`。例如,如果你的姓名的拼音字母以单个字符表示,你可以这样做:
```c
char str1[50]; // 假设姓名拼音长度不超过48字符(包括空格)
char str2[] = "I love China!"; // 字符串常量
```
2. 对于 `str1`,由于需要输入姓名拼音,这里假设你已经有一个包含姓名拼音的数组或者通过某种方式获取了这些字符。如果没有直接的数组,你可以逐个字符赋值,示例如下:
```c
strcpy(str1, "YourNamePinyin"); // 用实际的姓名拼音替换"YourNamePinyin"
```
注意,如果你的姓名拼音不是单个字符,可能需要修改数组大小和处理过程。
3. 使用 `%c` 格式化符逐个打印每个字符,对于 `str1`:
```c
for (int i = 0; i < strlen(str1); i++) {
printf("%c ", str1[i]);
}
printf("\n");
```
4. 对于字符串 `str2`,使用 `%s` 输出整个字符串:
```c
printf("%s\n", str2);
```
完整的程序代码可能会像这样:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[50];
char str2[] = "I love China!";
strcpy(str1, "YourNamePinyin"); // 替换为实际的姓名拼音
for (int i = 0; i < strlen(str1); i++) {
printf("%c ", str1[i]);
}
printf("\n");
printf("%s\n", str2);
return 0;
}
用C语言写代码,定义两个字符数组 strl,str2,长度均 80,输入两串字符存放到两个数组中。将st 连接到 strl 之后,并将连接后的字符串中的大写字母换为对应的小写字母,其余不变。输结果。
你可以使用以下C语言代码来实现这个需求:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void convert_to_lowercase(char *str) {
for (int i = 0; str[i] != '\0'; i++) {
if (isupper(str[i])) {
str[i] = tolower(str[i]);
}
}
}
int main() {
char str1[80], str2[80];
// 输入两串字符到数组
printf("请输入第一串字符(最多80个字符):");
fgets(str1, sizeof(str1), stdin); // 注意这里去掉末尾的换行符
str1[strcspn(str1, "\n")] = '\0';
printf("请输入第二串字符(最多80个字符):");
fgets(str2, sizeof(str2), stdin);
str2[strcspn(str2, "\n")] = '\0';
// 将str2连接到str1
strcat(str1, str2);
// 转换连接后的字符串中的大写字母为小写
convert_to_lowercase(str1);
// 输出结果
printf("连接并转换后的字符串:%s\n", str1);
return 0;
}
```
在这个程序中,我们首先定义了两个字符数组`str1`和`str2`用于存储输入的字符串。然后通过`fgets`函数获取用户的输入,并确保去除末尾的换行符。接着使用`strcat`函数连接两个字符串,最后通过`convert_to_lowercase`函数遍历连接后的字符串并将所有大写字母转换为小写。最后打印出处理后的字符串。
阅读全文