在一行上输入一个长度为
、由大小写字母和数字混合构成的字符串
。
在一行上输出处理后的字符串
。
Jkdi234klowe90a3
Jkdi*234*klowe*90*a*3*
#include <stdio.h>
#include <ctype.h>
int main()
{
char ch;
char last;
int flag = 0;
while ((ch = getchar()) != '\n')
{
// 进入数字区,或离开数字区去字母区
if ((isdigit(ch) && flag == 0) || (!isdigit(ch) && flag != 0))
{
flag = !flag;
printf("*%c", ch);
}
// 数字区内或字母区
else
{
printf("%c", ch);
}
last = ch;
}
// 如果数字结尾,补全末尾
if (isdigit(last))
{
printf("*");
}
return 0;
} #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void func(char arr[], int len);
int main() {
int len = 0;
char arr[101];
memset(arr, '\0', sizeof(arr));
fgets(arr, sizeof(arr), stdin);
// 去掉换行符
arr[strcspn(arr, "\n")] = '\0';
len = strlen(arr);
if (len < 1 || len > 100)
exit(-1);
func(arr, len);
return 0;
}
void func(char arr[], int len) {
if (len < 1 || len > 100)
exit(-1);
char arr_temp[200];
int j = 0; // j 指针用于 arr_temp
int i = 0; // i 指针用于原始 arr
for (i = 0; i < len; i++) {
if (len == 1) {
printf("%c", arr[i]);
break;
}
if (isdigit(arr[i])) {
arr_temp[j++] = '*'; // 在 arr_temp 中添加 '*'
arr_temp[j++] = arr[i]; // 添加当前字符
// 处理连续数字
while (i + 1 < len && isdigit(arr[i + 1])) {
i++; // 向后移动,处理下一个数字
arr_temp[j++] = arr[i]; // 添加这个数字
}
arr_temp[j++] = '*'; // 添加 '*' 结束数字部分
} else {
arr_temp[j++] = arr[i]; // 处理非数字字符
}
}
arr_temp[j] = '\0'; // 确保字符串以 null 结束
printf("%s", arr_temp); // 输出生成的字符串
} //每次保存前一个字符,在字母和数字中间加*即可。需要额外判断结尾是否为数字
#include <stdio.h>
int main() {
char c, ch = 127;
while ((c = getchar()) != EOF) {
if (c > '9' || c < '0') {
if (ch <= '9' && ch >= '0') {
printf("*");
}
printf("%c", c);
ch = c;
} else if (c <= '9' && c >= '0') {
if (ch > '9' || ch < '0') {
printf("*");
}
ch = c;
printf("%c", c);
}
if (c == '\n') {
if (ch <= '9' && ch >= '0')
printf("*\n");
break;
}
}
return 0;
} #include <stdio.h>
int main() {
char arr[100];
gets(arr);
int len = strlen(arr);
for(int i=0;i<len;i++){
if(arr[i]>='0'&&arr[i]<='9'){
printf("*");
while(arr[i]>='0'&&arr[i]<='9'){
printf("%c", arr[i]);
i++;
}
i--;
printf("*");
}else{
printf("%c", arr[i]);
}
}
return 0;
} #include <ctype.h>
#include <stdio.h>
#include <string.h>
int main() {
char buffer[128];
int len;
scanf("%s", buffer);
len = strlen(buffer);
if(isdigit(buffer[0])){
printf("*");
}
/*
找数字和字母之间的跳变沿
*/
for(int i=0;i<len;i++){
int flagP = !!isdigit(buffer[i]);
int flagA = !!isdigit(buffer[i+1]);
printf("%c", buffer[i]);
if(flagP + flagA == 1){
printf("*");
}
}
return 0;
} #include <stdio.h>
int main() {
char str[200] = {0};
char tmp;
char i = 0;
char isStart = 1;
while(scanf("%c", &tmp) != EOF) {
if(tmp == '\n'){
if (str[i] >= '0' && str[i] <= '9')
str[++i] = '*';
break;
}
if((i == 0) && (tmp >= '0' && tmp <= '9') && isStart){
str[i] = '*';
str[++i] = tmp;
isStart = 0;
continue;
}
else if((i == 0) && (tmp < '0' || tmp > '9') && isStart){
str[i] = tmp;
isStart = 0;
continue;
}
if(((str[i] >= '0') && (str[i] <= '9')) && (tmp < '0' || tmp > '9')) {
str[++i] = '*';
str[++i] = tmp;
continue;
}
if((str[i] < '0' || str[i] > '9' ) && (tmp >= '0' && tmp <= '9')) {
str[++i] = '*';
str[++i] = tmp;
continue;
}
str[++i] = tmp;
}
printf("%s\n", str);
return 0;
} 我要是会python该多好
#include <stdio.h>
#include <ctype.h>
int main()
{
char str[101] = {0}, *cur = str;
scanf("%s", str);
while (*cur) {
if (isdigit(*cur) && (cur == str || !isdigit(*(cur - 1))))
printf("*");
printf("%c", *cur);
if (isdigit(*cur) && (*(cur + 1) == 0 || !isdigit(*(cur + 1))))
printf("*");
cur++;
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
typedef struct list
{
char ch;
struct list *next;
}list;
int main()
{
list *p0,*p1,*p2;
char temp;
p2 = p1 = p0 = (list*)malloc(sizeof(list));
scanf("%c", &temp);
while (temp != '\n')
{
p1 = p2;
p1->ch = temp;
p1->next = malloc(sizeof(list));
p2 = p1->next;
scanf("%c", &temp);
}
p1->next=NULL;
p1=p0;
p2=p1->next;
if(p1->ch>='0'&&p1->ch<='9')
{
p0=malloc(sizeof(list));
p0->ch='*';
p0->next=p1;
}
while(p2!=NULL)
{
if((!(p1->ch>='0'&&p1->ch<='9')&&(p2->ch>='0'&&p2->ch<='9'))||
((p1->ch>='0'&&p1->ch<='9')&&!(p2->ch>='0'&&p2->ch<='9')))
{
p1->next=(list*)malloc(sizeof(list));
p1->next->ch='*';
p1->next->next=p2;
}
p1=p2;
p2=p2->next;
}
if(p1->ch>='0'&&p1->ch<='9')
{
p1->next=(list*)malloc(sizeof(list));
p1->next->ch='*';
p1->next->next=NULL;
}
p1=p0;
while(p1!=NULL)
{
printf("%c",p1->ch);
p1=p1->next;
}
return 0;
} #include<stdio.h>
#include<ctype.h>
#include<string.h>
int main(void)
{
//定义两个字符数组,ch用于存放原数据,temp用于存放改变后的数据
char ch[101],temp[121];
gets(ch); //获取原数据
int j = 0,i,t=0; //t用于记录连续的数字的个数
for (i = 0; ch[i]!='\0'; i++) //遍历原数组
{
if (ch[i] >= '0' && ch[i] <= '9') //当遇到数字字符时
{
t+=1; //t记录连续的数字个数,并加一
int flag=1; //记录该数字的左侧或右侧是否被改变
//判断数字字符的左侧是否为非数字
if (!isdigit(ch[i - 1]))
{
temp[j++] = '*';
temp[j++] = ch[i];
flag=0;//左侧被改变
}
//判断数字字符的右侧是否为非数字
if (!isdigit(ch[i + 1]))
{
if(t==1) //连续部分只有一个数字时
{
temp[j++]='*';
}
else {
temp[j++]=ch[i];
temp[j++]='*';
}
flag=0;//右侧被改变
}
if(flag) temp[j++]=ch[i]; //未被处理时
}
else {
temp[j++] = ch[i]; //不是数字字符时
t=0; //t归零,表示数字连续部分结束,下次重新计数
}
}
//在temp的最后一个有效字符后加上'\0',构成字符串,便于输出
temp[j] = '\0';
puts(temp);//输出结果
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
int mark = 0;
char str[101] = {'\0'};
while (~scanf("%s", str)) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (str[i] >= '0' && str[i] <= '9' && mark == 0) {
printf("*");
mark = 1;
} else if ((str[i] < '0') || (str[i] > '9') && (mark == 1)) {
printf("*");
mark = 0;
}
printf("%c", str[i]);
if (i == (len - 1) && str[i] >= '0' && str[i] <= '9') printf("*\n");
}
}
}