直接循环会运行超时,发现不一定只有大小写字母,可能有其他其他情况,这里没有注意到

#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;
}