直接循环会运行超时,发现不一定只有大小写字母,可能有其他其他情况,这里没有注意到
#include<stdio.h> #include<string.h> int main(){ char str[1005]; while(scanf("%s",str)!=EOF){ for(int i=0;i<strlen(str);){ if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')){ printf("%c",str[i]); i++; }else if(str[i]>='0'&&str[i]<='9'){ printf("*"); while(str[i]>='0'&&str[i]<='9'){ printf("%c",str[i]); i++; } printf("*"); } } printf("\n"); } return 0; }
正确程序,修改一下if和else的条件就可以了:
#include<stdio.h> #include<string.h> int main(){ char str[10005]; while(scanf("%s",str)!=EOF){ for(int i=0;i<strlen(str);){ if(str[i]>='0'&&str[i]<='9'){ printf("*"); while(str[i]>='0'&&str[i]<='9'){ printf("%c",str[i]); i++; } printf("*"); }else{ printf("%c",str[i]); i++; } } printf("\n"); } return 0; }