一道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以上说法都不对 展开
#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以上说法都不对 展开
3个回答
展开全部
首先程序肯定是错误的,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;
}
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;
}
展开全部
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
B、如果将语句swap(&a,&b)的参数改为a,b,函数的功能不能将a和b值交换
C、在swap()函数中的形参p和q可以定义为引用swap(int &p,int &q),这样就行了
所以选D
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
D。
因为是引用传递,该函数可以完成变量的交换。
因为是引用传递,该函数可以完成变量的交换。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |