C语言中关于大小写字母转换

已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应的小写字母的语句是()A:c=(c-'A')%26+'a'B:c... 已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应的小写字母的语句是( )
A:c=(c-'A')%26+'a'
B:c=('A'+c)%26-'a'
对这两个选项都不理解,请高手解释它能实现吗?
答案是B
展开
 我来答
叫声姐姐666
推荐于2017-09-27 · TA获得超过915个赞
知道答主
回答量:191
采纳率:50%
帮助的人:25.7万
展开全部
实现任意大小写字母转换。代码如下:
#include<stdio.h>
void main()
{
char x='a';
printf("请您输入任意大写字母或者小写字母x:\n");
scanf("%c",&x);
if( x>='A' && x<='Z')
{
x=x+32;
}
else
if( x>='a' && x<='z')
{
x=x-32; 
}      
printf("%c\n",x); 
}
小写字母转换成大写字母的代码如下:
#include<stdio.h>
void main()
{
char inputch,outputch;
printf("please input one charater:");
scanf("%c",&inputch);
outputch=inputch-32;
printf("result:%c to %c\n",inputch,outputch);
}
3
大写字母转换成小写字母的代码如下:
#include<stdio.h>
void main()
{
char inputch,outputch;
printf("please input one charater:");
scanf("%c",&inputch);
outputch=inputch+32;
printf("result:%c to %c\n",inputch,outputch);
}
dongge522522
2010-05-19
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
我作如下解释:(c-‘A’)这是先要运行的,是把c的ASCII码减去65;然后对26取余;再加上 a的ASCII码 。结果就是c的大写字母对应的小写字母的ASCII码! 拿一个具体的例子来说:我要求B的小写字母的ASCII码,先将B的ASCII码减去A的即:66-65=1,然后对26取余,结果还是1,再加上a的ASCII码97,得98,它就是b的ASCII码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
85955389
推荐于2017-10-12 · TA获得超过3946个赞
知道小有建树答主
回答量:728
采纳率:100%
帮助的人:848万
展开全部
因为英文有26个字母,字符变量c-‘A’,就是这个字符变量与‘A’的差,然后%26,得到该字符在字母表中的位置,其实%26可不用,而对于B选项,‘A’=65,如果字符变量中存储的是‘S’,那么c+‘A’就大于130,对此%26是错的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
修身养性_David
2010-05-19 · TA获得超过1788个赞
知道小有建树答主
回答量:554
采纳率:33%
帮助的人:279万
展开全部
我觉得c=c-'A'+'a'就行了
我不明白为什么还会有%26
你可以放到程序里试一下

~~~~~~~~~~~~~~
我测试过了 c = c-'A'+'a';是可以的
而且A选项也是可以的,因为c-'A'执行后,一定是小于26的,所以这个%26加不加没什么区别(唯一的不同就是使事情复杂化)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wssiqi
2010-09-15 · TA获得超过751个赞
知道小有建树答主
回答量:582
采纳率:100%
帮助的人:599万
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式