编程小白想实现大小写转换,这段代码有什么错误啊,找不到

#include
void main()
{
char a[40];
int i;
i=0;
scanf("%s",a);
while(a[i] !=0)
{
if(a[i]>='a' && a[i]<='z')
{
a[i]-=32;
i++;
continue;
}
if(a[i]>='A' && a[i]<='Z')
{
a[i]+=32;
i++;
continue;
}
i++;
}
for(i=0;a[i]!=0;i++)
{
printf("%s",a);
}
printf("\n");
}

while()条件有问题

 #include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main(){
    char a[40];
    int i;
    i = 0;
    scanf("%s", a);
    while (a[i] != '0')     //char与int比较是比较ASCII码
    {
        if (a[i] >= 'a' && a[i] <= 'z')
        {
            a[i] -= 32;     //既然每次都有i++,可以考虑整合起来

        }
        else if (a[i] >= 'A' && a[i] <= 'Z')
        {
            a[i] += 32;
        }
        i++;
    }
    printf("%s", a);
    printf("\n");
}