时间限制:1Sec内存限制:128MB通过:84提交:134
题目描述
输入一个字符串str1,把其中的连续非数字的字符子串换成一个‘*’,存入字符数组str2 中,所有数字字符也必须依次存入 str2 中。输出str2。
输入
输入为一行字符串str1,其中可能包含空格。字符串长度不超过80个字符。
输出
输出处理好的字符串str2。
样例输入
$Ts!47&s456 a23 +B9k
样例输出
47456239*
#include<stdio.h>
#include <string.h>
int main()
{
char str[100];
char strstr[100];
//scanf("%s",str);
gets(str);
int n=strlen(str);
int i;
int m=0;
if(str[0]>='0' && str[0]<='9')
strstr[m++]=str[0];
else
strstr[m++]='*';
for(i=1;i<n;i++)
{
if(str[i]>='0' && str[i]<='9')
{
strstr[m++]=str[i];
}
else
{
if(strstr[m-1]!='*')
{
strstr[m++]='*';
}
}
}
for(i=0;i<m;i++)
{
printf("%c",strstr[i]);
}
printf("\n");
return 0;
}
我的代码,失败
#include<bits/stdc++.h>
using namespace std;
int main()
{
char str1[105],str2[105];
gets(str1);
int len,s1=0;
len=strlen(str1);
for(int i=0;i<len;i++)
{
if(str1[i]>='1'&&str1[i]<='9')
{
str2[s1++]=str1[i];
}
else
{
for(int j=i;j<len;j++)
{
if(str1[j]>='1'&&str1[j]<='9')
{
i=j-1;
break;
}
}
str2[s1++]='*';
}
}
for(int i=0;i<s1;i++)
{
printf("%c\n",str2[i]);
}
}