C语言的题目求解!~

#include<stdio.h>charfun(char*c){if(*c<='Z'&&*c>='A')*c-='A'-'a';return*c;}main(){cha... #include <stdio.h>
char fun ( char *c )
{if ( *c<='Z' && *c>='A')
*c -= 'A'-'a';
return *c;
}
main ()
{char s[81], *p=s;
gets( s );
while( *p )
{ *p =fun ( p );
putchar( *p );
p++;}
printf("\n");
}若运行时从键盘上输入open THE DOOR<回车>,程序输出结果是
A)OpenThe Door B)OPENtHE dOOR
C)OPENTHE DOOR D)open the door
求详细过程~
展开
 我来答
郝在益
2013-09-15 · TA获得超过2079个赞
知道小有建树答主
回答量:1496
采纳率:54%
帮助的人:604万
展开全部
你都能发百度了,怎么不知道运行一遍了?
运行一遍不就知道结果了啊
追问
我知道运行一遍就行,可是我要考试啊,考试的时候上哪运行一遍?
追答

这是一个把大写变为小写的程序。

大写变小写其实很简单,加上36就行了。

在这里也就是-('A'-'a');

程序员数学分析
2013-09-15 · 资深java程序员分析机器学习中的数学原理
程序员数学分析
采纳数:46 获赞数:145

向TA提问 私信TA
展开全部
输出结果是:
open the door

解释:
char fun ( char *c )
{if ( *c<='Z' && *c>='A') //如果*c在{'A', 'B', ..., 'Z'}中,
*c -= 'A'-'a'; //则将*c变成对应的小写字母 'A'-'a'意思就是相应的大写字母与小写字母的差值
//能这么写是因为{'A', 'B', ..., 'Z'}和{'a', 'b', ..., 'z'}每一个对应的大小写差值都一样的(因为ABC...在Ascii表中是连续的,abc在ascii表中也是连续的。
//注意'A'-'a'是负数
return *c;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SAOHUIHUIHUI
2013-09-15
知道答主
回答量:22
采纳率:0%
帮助的人:19.2万
展开全部
答案选D
分析:
从main函数开始执行,读取输入,在while循环中调用fun函数,fun中*c -= 'A'-'a'一句将给进的参数由大写改为小写,因为ascii中大写排在小写之前,故 'A'-'a'为负数,但是*c减去负数即加上正数,故转换为小写,故整个程序将输入的字符串中含有的大写字母转换成小写字母。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kxykk
2013-09-15 · TA获得超过232个赞
知道小有建树答主
回答量:143
采纳率:50%
帮助的人:89.1万
展开全部
答案是:D
函数fun是将大写字母变成小写字母
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式