一道C++题目,求详解

下面程序应能对两个整型变量的值进行交换。以下正确的说法是(D)。#include<iostream.h>voidswap(intp,intq){intt;t=p;p=q;... 下面程序应能对两个整型变量的值进行交换。以下正确的说法是(D)。
#include<iostream.h>
void swap(int p,int q)
{int t;
t=p;
p=q;
q=t;}
void main()
{int a=10,b=20;
cout<<a<<" "<<b;
swap(&a,&b);
cout<<a<<" "<<b;}
A该程序完全正确
B该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可
C该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可
D以上说法都不对
展开
 我来答
百度网友9047224
2013-12-22 · TA获得超过300个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:85.6万
展开全部
首先程序肯定是错误的,swap(&a,&b)和swap(int p,int q)中不能将int*传递给int。
B项中swap(a,b)传递的只是a,b的副本并未对a,b的值起到交换作用。
C改变后,交换的只是p,q指向的地址位置,但没有改写a,b地址中的内容。
正确程序如下;
#include<iostream.h>

void swap(int *p,int *q)
{int t;
t=*p;
*p=*q;
*q=t;}
void main()
{int a=10,b=20;
cout<<a<<" "<<b<<endl;
swap(&a,&b);
cout<<a<<" "<<b;
}
建暮灬0P
2013-12-22 · 超过24用户采纳过TA的回答
知道答主
回答量:148
采纳率:0%
帮助的人:46.8万
展开全部
A、swap(int p,int q)定义的时候用的是整型变量,不是指针变量,而在使用的时候不应该是swap(&a,&b)
B、如果将语句swap(&a,&b)的参数改为a,b,函数的功能不能将a和b值交换
C、在swap()函数中的形参p和q可以定义为引用swap(int &p,int &q),这样就行了
所以选D
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2013-12-22 · TA获得超过8607个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3404万
展开全部
D。
因为是引用传递,该函数可以完成变量的交换。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式