计算机二级C++的选择题

(17)下列函数原型声明中错误的是A)voidFun(intx=0,inty=0);B)voidFun(intx,inty);C)voidFun(intx,inty=0)... (17)下列函数原型声明中错误的是
A ) void Fun(int x=0, int y=0);
B ) void Fun(int x, int y);
C ) void Fun(int x, int y=0);
D ) void Fun(int x=0, int y);
(18)已知程序中已经定义了函数test,其原型是int test(int, int, int);,则下列重载形式中正确的是
A ) char test(int,int,int);
B ) double test(int,int,double);
C ) int test(int,int,int=0);
D ) float test(int,int,float=3.5F);
(19)有以下程序
#include<iostream>
int i = 0;
void fun()
{ {
static int i = 1;
std::cout<<i++<<',';
}
std::cout<<i<<',';
}
int main()
{
fun(); fun();
return 0;
}
程序执行后的输出结果是
A)1,2,1,2, B)1,2,2,3, C)2,0,3,0, D)1,0,2,0,
求解答,加详细解释
展开
 我来答
农民Hacker
2013-07-24 · TA获得超过519个赞
知道小有建树答主
回答量:179
采纳率:100%
帮助的人:75万
展开全部

17题:D    函数的默认参数是从右往左的

18题:D   A只有返回值不同不能算是函数重载,因为函数是在被调用后才有返回值的,调用之前不能通过返回值区别函数重载;B    调用时int可以被隐身的转换成double,所以也不是函数重载;C和int test(int ,int ,int );函数声明会调用同一个函数定义,不能通过默认值区分函数重载;

19题    D

int i=0;//全局变量

static int i=1;//静态局部变量

//第一次调用fun();

std::cout<<i++<<',';//执行这句,会先输出静态局部变量i,然后再将静态局部变量i加1

std::cout<<i<<',';//执行这句时,由于静态局部变量i不在这个作用域中,

//所以它会找全局变量,输出全局变量i

//第二次调用fun();

std::cout<<i++<<',';//执行这句,会先输出静态局部变量i,然后再将静态局部变量i加1;

//由于静态数值不会因函数调用发生改变所以输出为2,

std::cout<<i<<',';//执行这句时,由于静态局部变量i不在这个作用域中,

//所以它会找全局变量,输出0

追问
第二题你和三楼不一样,怎么回事儿呢?
还有是不是静态局部变量由于std::cout<<i++<<',';//这个语句的运行而从1变为2了?
冰太挽大宝13
2013-07-24 · 超过26用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:28.9万
展开全部
告诉别人答案而不告诉为什么,这样没什么意思,别人想知道的 是为什么 而不是答案:
1 D .原因 函数参数有默认参数的说法,要求默认参数在最后边 int Fun(int a,int b, int c= 0);这个和参数的进栈规则,你可以查查资料
2 C 函数重载的原则是 参数类型,参数个数,这 其他3个改变了返回类型,也就不是重载了.你可以看看函数编译原则
3 D 首先要说的是 变量的同名隐藏 在局部变量会隐藏全局声明的同名变量 在
fun{
{这访问到的i是局部的}
这访问到的是全局的}

第二个 就是静态变量
静态变量可以在任何可以申请的地方申请,一旦申请成功后,它将不再接受其他的同样声请。这叫作 “维持原判”。 也就是调用两次声明 其实只声明了一次 ,静态变量的内存地址不会变,两次都用的时同一块内存 所以才会打印出2 你可以去看看书
追问
第二题你和三楼不一样,怎么回事儿呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangsonglin_c
高粉答主

2013-07-24 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.7万
采纳率:83%
帮助的人:7005万
展开全部
(18)实际测试结果B、D均通过。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c320fc2
2013-07-24 · TA获得超过144个赞
知道小有建树答主
回答量:403
采纳率:0%
帮助的人:155万
展开全部
一题D、二题C、三题D
追问
答案第二题选B,其他两题对了,可以详细解释一下吗?
追答
第一题就是默认参数这块的东西,从右往左设,没啥好解释的,第三题注意大括号产生的作用域就可以了,至于第二题选B。。。费解中,同求高手解释。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式