计算机二级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,
求解答,加详细解释 展开
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,
求解答,加详细解释 展开
4个回答
展开全部
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了?
展开全部
告诉别人答案而不告诉为什么,这样没什么意思,别人想知道的 是为什么 而不是答案:
1 D .原因 函数参数有默认参数的说法,要求默认参数在最后边 int Fun(int a,int b, int c= 0);这个和参数的进栈规则,你可以查查资料
2 C 函数重载的原则是 参数类型,参数个数,这 其他3个改变了返回类型,也就不是重载了.你可以看看函数编译原则
3 D 首先要说的是 变量的同名隐藏 在局部变量会隐藏全局声明的同名变量 在
fun{
{这访问到的i是局部的}
这访问到的是全局的}
第二个 就是静态变量
静态变量可以在任何可以申请的地方申请,一旦申请成功后,它将不再接受其他的同样声请。这叫作 “维持原判”。 也就是调用两次声明 其实只声明了一次 ,静态变量的内存地址不会变,两次都用的时同一块内存 所以才会打印出2 你可以去看看书
1 D .原因 函数参数有默认参数的说法,要求默认参数在最后边 int Fun(int a,int b, int c= 0);这个和参数的进栈规则,你可以查查资料
2 C 函数重载的原则是 参数类型,参数个数,这 其他3个改变了返回类型,也就不是重载了.你可以看看函数编译原则
3 D 首先要说的是 变量的同名隐藏 在局部变量会隐藏全局声明的同名变量 在
fun{
{这访问到的i是局部的}
这访问到的是全局的}
第二个 就是静态变量
静态变量可以在任何可以申请的地方申请,一旦申请成功后,它将不再接受其他的同样声请。这叫作 “维持原判”。 也就是调用两次声明 其实只声明了一次 ,静态变量的内存地址不会变,两次都用的时同一块内存 所以才会打印出2 你可以去看看书
追问
第二题你和三楼不一样,怎么回事儿呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(18)实际测试结果B、D均通过。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一题D、二题C、三题D
追问
答案第二题选B,其他两题对了,可以详细解释一下吗?
追答
第一题就是默认参数这块的东西,从右往左设,没啥好解释的,第三题注意大括号产生的作用域就可以了,至于第二题选B。。。费解中,同求高手解释。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询