编写一程序实现:从键盘输入一个字符串,将其中的大写字母变成小写字母,小写字母变成大写字母,非字母的字符保持不变,输出变换后字符串。

(1) 用字符数组表示存储字符串(字符串最大为100);
(2) 使用scanf函数逐个输入字符保存在字符数组中;
(3) 使用printf函数逐个输出字符数组中的字符。

#include <stdio.h>
#include <string.h>
int main()
{
char a[100];
int i=0;
for(i=0;a[i]!='\0';i++)
scanf("%c",&a[i]);
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='A'&&a[i]<='Z')
a[i]=a[i]+32;
else if(a[i]>='a'&&a[i]<='z')
a[i]=a[i]-32;
else continue;
}
for(i=0;a[i]!='\0';i++)
printf("%c",a[i]);
return 0;
}

结果为什么只有3个字符,一直搞不懂,求解

for(i=0;a[i]!='\0';i++)
scanf("%c",&a[i]);
改成gets(a);