一道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;
} 展开
下列程序的输出结果是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;
} 展开
4个回答
展开全部
在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。
回答完毕!
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。
回答完毕!
展开全部
#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,这个是讲引用“&”的应用
#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,这个是讲引用“&”的应用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
strlen(s) 为5(ABCDE)
strlen(s)/2为2
即取第三个字符(下标从0开始)
因此为C
strlen(s)/2为2
即取第三个字符(下标从0开始)
因此为C
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一楼讲得比较到位,
但char ch=str[];这句有错哈,不信编译一下试试。
请改成char ch;
但char ch=str[];这句有错哈,不信编译一下试试。
请改成char ch;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询