关于C++的一些题目,不明白请大神解释下

32.下面程序的运行结果是A。#include<iostream.h>voidfun(int&a,int&b){intp;p=a;a=b;b=p;}voidexchang... 32.下面程序的运行结果是 A 。
#include<iostream.h>
void fun(int &a,int &b)
{ int p;
p=a;a=b; b=p;
}
void exchange(int &a,int &b,int&c)
{
if(a<b)fun(a,b);
if(a<c)fun(a,c);
if(b<c)fun(b,c);
}
void main()
{
inta,b,c;
a=12;
b=639;
c=78;
exchange(a,b,c);
cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl;
}
A)a=639,b=78,c=12 B)a=12,b=639,c=78 C)a=639,b=12,c=78 D)a=78,b=12,c=639

43.下面变量和函数说明:
#include<iostream.h>
char ch='*';
void sub(int x,int y,char ch,double *z)
{
switch(ch)
{
case '+':*z=x+y;break;
case '-':*z=x-y;break;
case '*':*z=x*y;break;
case '/':*z=x/y;break;
}
}
下面合法的函数调用语句是 B 。
A) sub(10,20,ch,y); B)sub(1.2,3.2,'+',&z);
C)sub(sub(1,2,'+',&y),sub(3,4,'+',&x),'-',&y); D) sub(a,b,&x,ch);

47.下面程序的输出结果 B 。
#i nclude<iostream.h>
int fun(char *s)
{
char *p=s;
while(*p!='\0')
p++;
return (p-s);
}
void main()
{
cout<<fun("ABCDEF")<<endl;
}
A)3 B)6 C)8 D)0

55.考虑下面的函数原型:void testDefaulParam(int a,int b=7,char z='*');
下面函数调用中不合法的 C 。
A)testDefaulParam(5); B)testDefaulParam(5,8);
C)testDefaulParam(5,'#'); D)testDefaulParam(0,0,'*');

59.下面程序的输出结果为 B 。
#i nclude<iostream.h>
void prt(int *x,int *y,int *z)
{
cout<<+ + *x<<","<<+ + *y<<","<<*(z++)<<endl;
}
int a=10;
int c=20;
int b=40;
void main()
{
prt(&a,&b,&c);
prt(&a,&b,&c);
}
A)11,42,31 12,21,41 B)11,41,20 12,42,20
C)11,21,40 11,21,41 D)11,41,21 12,42,22
展开
 我来答
小黑跳大不解释
2014-09-03 · TA获得超过432个赞
知道小有建树答主
回答量:428
采纳率:0%
帮助的人:374万
展开全部
32. 选A。。。。func的作用是交换两个数 exchange的作用是排序 把最大数赋值给a 次大给b 最小给c

43 B。。。函数声明里面 int x,int y,char ch,double *z, 对于A y是不满足的 要求传入的是一个地址 对于C sub的返回值是void 所以最后传入的是 sub(void, void, '-',&y) 也不合法 同理D 也不对 第四个参数要求传入一个地址

47 函数的作用是指针p从字符串开始 一直移动到末尾的 '\0’ 为止 然后相减得到字符串除了'\0'之外的长度

ABCEDF 这个字符串 除了\0'之外 长度就是6

55 第二个参数和第三个参数都有默认值 所以 调用的时候可以不对第二个参数和第三个参数传值
C 中 第二个参数是一个字符 和函数原型不符
追问
32.exchange函数参数是int&a,应该是指针类型的,为什么调用时可以直接用a做参数

47.我有些不明白怎么理解 *s ,把“ABCDEF”做参数,*s到底指向哪里?是不是和数组差不多?
55.关于默认参数想问下是不是应该先设置右边的在设置左边的?
追答
32 这是关于C++里面函数值传递 还是 引用传递的 讨论 建议你自己上网看看。。。这个问题不弄清楚 后面都没法学了。。。。

47. char *s 就是代表一个字符串。。。char *p=s;就是指p只想s的初始位置 对于字符串ABCDEF来说 就是指向A

55 默认参数 永远都是从左到右。。。。就像C选项里面。 他的本意是想把第二个参数用作默认参数 然后把‘#’ 当做第三个参数 像这样: testDefaulParam(5, 默认参数, '#');
这样做是不合法的 编译器遇到 testDefaulParam(5,'#');时 会默认为你设置了第一个和第二个参数的值 而把第三个当做默认参数
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式