C语言大小写字母转换流程图,

如题所述

第1个回答  2019-02-22
#include
#include
char a(char b[10])
{char c;
int i;
for(i=0;i<10;i++)
{
if(b[i]>='a' && b[i]'a' <'A'?
c=b[i]+32; //怎么都是加32,没有减的?
if(b[i]>='A' && b[i]<='Z') //即使上面都对了,把小写转换成大写了,在这句又会把大写转换成小写,应该用else if
c=b[i]+32; //怎么都是加32,没有减的?
return c;
}
}

main() //习惯不好,最好用int main(void) 原因以后学到再说
{char s[10]; //定义最大字符串长度,但get(s)输入的字符串长度不一定为10啊,所以你循环一直用10是不正确的
char c;
int i;
char a(char b[10]); //从这里看出你的子函数处理的是一个字符串,但下面你对这个字符串处理10次想干嘛?
gets(s); //想一个字符一个字符的处理就应该定义为char a(char b);
for(i=0;i<10;i++)
{
c=a(s); //c一个字符,a(s)处理的是一个字符串,处理一个字符串返回一个字符???
printf("%c",c);
}
}

修改版:
#include
#include
char a(char b)
{
if(b>='a' && b<='z')
{
b=b-32;
}

else if(b>='A' && b<='Z')
{
b=b+32;
}

return b;
}

int main(void)
{
char a(char b);

char s[10];
char c;
int i;

gets(s);
for(i=0;i<strlen(s);i++)
{
c=a(s[i]);
printf("%c",c);
}

return 0;
}
第2个回答  2019-10-13
就是ascii码的加减,
字母的大写和小写的ascii码的差值是一样的。
相似回答