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 展开
A:c=(c-'A')%26+'a'
B:c=('A'+c)%26-'a'
对这两个选项都不理解,请高手解释它能实现吗?
答案是B 展开
展开全部
实现任意大小写字母转换。代码如下:
#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);
}
展开全部
我作如下解释:(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码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为英文有26个字母,字符变量c-‘A’,就是这个字符变量与‘A’的差,然后%26,得到该字符在字母表中的位置,其实%26可不用,而对于B选项,‘A’=65,如果字符变量中存储的是‘S’,那么c+‘A’就大于130,对此%26是错的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得c=c-'A'+'a'就行了
我不明白为什么还会有%26
你可以放到程序里试一下
~~~~~~~~~~~~~~
我测试过了 c = c-'A'+'a';是可以的
而且A选项也是可以的,因为c-'A'执行后,一定是小于26的,所以这个%26加不加没什么区别(唯一的不同就是使事情复杂化)
我不明白为什么还会有%26
你可以放到程序里试一下
~~~~~~~~~~~~~~
我测试过了 c = c-'A'+'a';是可以的
而且A选项也是可以的,因为c-'A'执行后,一定是小于26的,所以这个%26加不加没什么区别(唯一的不同就是使事情复杂化)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询