C语言 字母大小写转换 怎么实现
为什么以下语句实现不了?#include<stdio.h>voidmain(){charx;inty,z;scanf("%c",&x);y='x';if(y<='a'&&...
为什么以下语句实现不了?
#include<stdio.h>
void main()
{
char x;
int y,z;
scanf("%c",&x);
y='x';
if (y<='a'&&y>='Z') z='y'-('a'-'A');
else z='y'+32;
printf("%c\n",z);
} 展开
#include<stdio.h>
void main()
{
char x;
int y,z;
scanf("%c",&x);
y='x';
if (y<='a'&&y>='Z') z='y'-('a'-'A');
else z='y'+32;
printf("%c\n",z);
} 展开
8个回答
2014-04-07
展开全部
你还有语法(主要对语法使用的理解,编译器是能过的)问题:(代码格式也有点小问题)
y='x'; /* 这句实际上是在初始 y 为 'x' 这个字符的 ascii 值 */
if (y<='a'&&y>='Z') /* 由于前一条赋值,这一条件等同于
if('x'<='a'&&'x'>='Z') 条件总为假,所以下一条永远不会执行 */
z='y'-('a'-'A'); /* 这条给 z 赋的值,会始终为 'Y' 的 ascii 值 */
else
z='y'+32; /* 'y'这个字符再加 32('a'和'A'之差)都已经超出 ascii 基础 0~127 的范围了 */
/* 下面是按你的逻辑,把重新写了写的,当然还有逻辑错误,
* 主要就是区间问题,这个拿个 ascii 表查一下数一下就 oh yeah 了。 */
y=x;
if (y<='a'&&y>='Z')
z = y-('a'-'A');
else
z = y+32;
展开全部
这样写会更清楚点,你的错误就在判断语句哪里。有不懂的可以问我
#include<stdio.h>
int main()
{
char x;
int y,z;
scanf("%c",&x);;
if (x>='a'&&x<='z')
z=x-'a'+'A';
else
z=x-'A'+'a';
printf("%c\n",z);
getchar();
getchar();
return 0;
}
#include<stdio.h>
int main()
{
char x;
int y,z;
scanf("%c",&x);;
if (x>='a'&&x<='z')
z=x-'a'+'A';
else
z=x-'A'+'a';
printf("%c\n",z);
getchar();
getchar();
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的本意是想把x赋给y,但是y='x'这句话是把x这个字母的ASCII赋给了y,所以达不到想要的效果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
。。。。本来是没问题的,只是你的x y z别加上单引号啊。。。把xyz的单引号去了,只留abc的应该没问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把
y='x';
if (y<='a'&&y>='Z') z='y'-('a'-'A');
else z='y'+32;
两句改成z=x^0x20;就妥了。
y='x';
if (y<='a'&&y>='Z') z='y'-('a'-'A');
else z='y'+32;
两句改成z=x^0x20;就妥了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询