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

2025-01-02 02:33:10
推荐回答(4个)
回答1:

在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。

回答完毕!

回答2:

#include
#include
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< return 0;
}
你的程序有问题。char &c为引用,所以fun中strlen(s)是数组长度c=s[5/2]=s[2];
因为是&c引用,所以ch=c=s[2];输出C,这个是讲引用“&”的应用

回答3:

strlen(s) 为5(ABCDE)

strlen(s)/2为2

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

因此为C

回答4:

一楼讲得比较到位,
但char ch=str[];这句有错哈,不信编译一下试试。
请改成char ch;