C语言:编写程序,将用户输入字符串中的数字字符和英文字母分开后依次交替输出(假设用户输入的字符串中只包含英文字母和数字字符,本题要求使用指针访问的方法实现)。
时间: 2024-02-11 21:07:44 浏览: 58
C 代码 计算字符串的 Luhn 校验位,或验证字符串, 用于信用卡号中的错误检测.rar
以下是使用指针访问的方式实现该程序的示例代码:
```c
#include <stdio.h>
#include <ctype.h>
void print_alternate(char *str) {
char *p = str;
char letters[100], digits[100];
char *p_letters = letters, *p_digits = digits;
int is_letter = isalpha(*p);
while (*p) {
if (isalpha(*p)) {
if (!is_letter) {
*p_digits = '\0';
printf("%s", digits);
p_digits = digits;
is_letter = 1;
}
*p_letters++ = *p;
} else if (isdigit(*p)) {
if (is_letter) {
*p_letters = '\0';
printf("%s", letters);
p_letters = letters;
is_letter = 0;
}
*p_digits++ = *p;
}
p++;
}
if (is_letter) {
*p_letters = '\0';
printf("%s", letters);
} else {
*p_digits = '\0';
printf("%s", digits);
}
}
int main() {
char str[200];
printf("请输入字符串:");
gets(str);
printf("分离后的数字和英文字母依次交替输出:\n");
print_alternate(str);
return 0;
}
```
在该代码中,我们先定义了两个字符数组 `letters` 和 `digits` 用来存储分离后的英文字母和数字。接着用指针 `p_letters` 和 `p_digits` 分别指向 `letters` 和 `digits` 数组的开头。然后,我们遍历整个输入字符串,对于每个字符,如果它是字母,则将其存入 `letters` 数组,并将 `is_letter` 标记为 1;如果它是数字,则将其存入 `digits` 数组,并将 `is_letter` 标记为 0。在每次切换字符类型时,我们输出上一个类型的字符数组,并将指针 `p_letters` 或 `p_digits` 重新指向数组开头。最后,如果最后一个字符是字母,则输出 `letters` 数组,否则输出 `digits` 数组。
阅读全文