c语言题,输入HeLLo,输出结果为hEllO,下面是我写的程序,编译没错,但就是运行出错,帮忙看看,改哪?

#include<stdio.h>
#include<string.h>
void main()
{char str[10];
int i;
gets(str[i]);
for(i=0;i<=10;i++)
{if(str[i]>=65&&str[i]<=90)
printf("%s",strlwr(str));
else if(str[i]>=90&&str[i]<=122)
printf("%s",strupr(str));
else continue;
}

}

    get(str)不是get(str[i])

    strlwr的用法不对,你是每次都把整个字符串输出了

    你的循环变量从0到10,但是你的字符串长度有10个吗

    assii码不对,'a'是97不是90,你不记得就不要写assii码,直接写str[i]>'a'&&str[i]<'z'

    改正后代码如下,请采纳

     

    #include<stdio.h>
    #include<string.h>
    void main()
    {
     char str[10];
     int i;
     gets(str);
     for(i=0;i<strlen(str);i++)
     {
      if(str[i]>=65&&str[i]<=90)
       printf("%c",str[i]+32);
      else if(str[i]>=97&&str[i]<=122)
       printf("%c",str[i]-32);
     }
     printf("\n");
    }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-12

#include<stdio.h>

void main()

{char str[100];

int i;

gets(str);

for(i=0;str[i];i++)

{if(str[i]>=65&&str[i]<=90)str[i]+=32;

else if(str[i]>=90&&str[i]<=122)str[i]-=32;

}

puts(str);

}

第2个回答  2015-05-12
gets(str[i]);改为gets(str)
第3个回答  2015-05-12
gets(str),不是gets(str[i])追问

我改了之后,输入HoLL,还是运行错误

追答

还有就是for循环中因为数组的长度不是10,所以导致访问越界,应该是for(i = 0; i < strlen(str); i++)

本回答被提问者采纳