C语言 大小写字母转换

2024-12-25 15:18:20
推荐回答(5个)
回答1:

#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 {
c=a(s[i]);
printf("%c",c);
}

return 0;
}

回答2:

#include
void main()
{
char c1,c2; // 定义两个字符c1,c2
c1=getchar(); //从键盘输入一个大写字母,放在c1
printf("%c,%d\n",c1,c1);//输出 你输入的那个大写字母 以及他的ascii
c2=c1+32; //将大写的转换成小写的
printf("%c,%d\n",c2,c2);输入小写字母
}

回答3:

你那样写就等于把97当做字符看,跟a本来代表的数值为97有区别。把char
a=‘97’改为int
a=97;或者是改为char
a='a'。希望能帮你解决问题。

回答4:

#include
void main()
{
char a,A;
scanf("%c",&a);
if( (a>='a') && (a <= 'z') )
A=a-32;
else if( (a >= 'A') && (a <= 'Z') )
A=a+32;
else
A = 'A';
printf("%c\n",A);
return 0;
}
说明:你原来的地方有两处错误,第一,scanf( "%c", &a );中,&是取地址操作符,也就是只有你这样做,输入的字符才能被编译器根据取到的地址,把字符值送进内存里去。所以if(&a>='a')
是错误的,应该改为a而不是&a。第二,逻辑错误,只有你写的if中得条件,没考虑其他的异常处理,怎么可以?逻辑思考要完整些

回答5:

改成下面这样:
#include
void main() //空返回函数不用return
{
char a,A;
scanf("%c",&a);
if(a>='a') //这里把&a改成a 地址和int不能比较
A=a-32;
else
A=a+32;

printf("%c\n",A);

}