一道C++题目,求详细解答

为什么答案是c下列程序的输出结果是C。#include<iostream>#include<cstring>usingnamespacestd;voidfun(const... 为什么答案是c
下列程序的输出结果是C。
#include<iostream>
#include<cstring>
using namespace std;
void fun(const char *s,char&c){c=s[strlen(s)/2];}
int main(){
char str[]="ABCDE";
char ch=str[];
fun(str,ch);
cout<<ch;
return 0;
}
展开
 我来答
lkdmg163
2013-11-27 · 超过26用户采纳过TA的回答
知道答主
回答量:98
采纳率:100%
帮助的人:66.7万
展开全部
在fun中,数组S等于main中的str,即s[]="ABCDE"

c = s[strlen(s)/2]中,strlen(s)的值为5,5/2=2.5,但两个数都是整型,所以结果强制转换为整形,即strlen(5)/2=2。

那么c = s[strlen(2)/2]即为c = s[2];根据s[]="ABCDE",s[0]='A',s[1]='B',s[2]='C',s[3]='D',s[4]='E';

fun返回的是char &c,所以main中cout出的ch值为C。

回答完毕!
sitanfufly
2013-11-27 · TA获得超过232个赞
知道小有建树答主
回答量:437
采纳率:0%
帮助的人:244万
展开全部
#include<iostream>
#include<cstring>
using namespace std;
void fun(const char *s,char&c){c=s[strlen(s)/2];}
int main(){
char str[]="ABCDE";
char ch;
fun(str,ch);
cout<<ch;
return 0;
}
你的程序有问题。char &c为引用,所以fun中strlen(s)是数组长度c=s[5/2]=s[2];
因为是&c引用,所以ch=c=s[2];输出C,这个是讲引用“&”的应用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qmg1023
2013-11-27 · TA获得超过888个赞
知道小有建树答主
回答量:804
采纳率:0%
帮助的人:879万
展开全部
strlen(s) 为5(ABCDE)

strlen(s)/2为2

即取第三个字符(下标从0开始)

因此为C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pengguismile
2013-11-27 · TA获得超过687个赞
知道小有建树答主
回答量:332
采纳率:100%
帮助的人:115万
展开全部
一楼讲得比较到位,
但char ch=str[];这句有错哈,不信编译一下试试。
请改成char ch;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式