C语言数组问题,求解答

#include<stdio.h>
int main()
{
int i,j;
char str[80];
printf("请输入字符串");
gets(str);
for(i=0;str[i]!='\0';i++)
{
if(str[i]>='a'&&str[i]<='z')
{
for(j=i+1;str[j]!='\0';j++)
str[j-1]=str[j];
i--;
}
}
puts(str);
}

img

题目是删去小写字母,保留数字,为什么我写的这个最后一个数会出现几次

修改如下,供参考:

#include<stdio.h>
int main()
{
    int i,j;
    char str[80];
    printf("请输入字符串");
    gets(str);
    for(i=0;str[i]!='\0';) //修改 i++
    {
        if(str[i]>='a'&&str[i]<='z')
        {
           for(j=i+1;str[j]!='\0';j++)
               str[j-1]=str[j];
            str[j-1] = '\0';//i--; //修改
        }else        //修改
              i++;   //修改
    }
    puts(str);
    return 0;
}