初级的c语言问题 求解答

问题遇到的现象和发生背景 出现了奇怪的乱码现象,求解答。输入helLo 3133 YOunG enGineER(无报错

 #include 
 #include 
 #include 

int main()
{
    char t[110];
    printf("Input a zifu:");
    gets(t);
    int i = 1;
    if (t[0] !=' ' && t[0] >= 'a')

        t[0] = t[0] - 32;

    while (t[i] != '\0') 
    {
        if (t[i - 1] == ' ' && t[i] >= 'a') 
        {
            t[i] = t[i] - 32;
        }
        else if(t[i - 1] !=' ' && t[i] >= 'A')
            t[i] = t[i] +32;
        else if(t[i-1]!=' '&&t[i]>='a')
            t[i]=t[i];
    
        else if(t[i]<='9'&&t[i]>='0') 
            t[i] = t[i]-1;   
        i++;
    }
    printf("%s", t);
    system ("pause");
}



用代码块功能插入代码,请勿粘贴截图

else if(t[i - 1] !=' ' && t[i] >= 'A')
t[i] = t[i] +32;
这有问题的,你应该限定t[i]>='A' && t[i]<='Z'
否则当t[i-1]!=' '时,t[i]如果是小写字符,也会加32,就成乱码了
修改后输出就OK了

img

你想要输出啥样的呢。