c++ 分离整数小数部分菜鸟问题

2025年03月01日 08:30
有5个网友回答
网友(1):

用指针传递需要重写的参数是C语言留传下来的风格.
C和C++的函数参数是按值拷贝传递的.如果传
int a,float b做此函数参数的话,传入的参数不会改变.所以C是用指针的.
而C++一般用引用,省去每次传递参数时要使用取地址符,另一方面指针本身是很危险的,能不用就最好不用.

网友(2):

void splitfloat(float x, int intpart, float fracpart)
值传递
void splitfloat(float x, int *intpart, float *fracpart)
也是值传递,不过传的是地址
void splitfloat(float x, int &intpart, float &fracpart)
引用传递

使用第一种传递时,splitfloat(x,n,f); 仅仅是把n和f的值传过去,对n和f本身没有影响
使用第二种传递时,splitfloat(x,&n,&f);将n和f的地址传进去,可对 n和f进行修改
使用第三种传递时,splitfloat(x,n,f); 改变引用也可对n和f进行修改

第二个问题的话,参照一楼,定义一个结构体

网友(3):

用引用就ok了
#include

using
namespace
std;
void
splitfloat(float
x,
int
&intpart,
float
&fracpart)
{
intpart=int(x);
fracpart=x-intpart;
}
int
main()
{
int
i,
n;
float
x,
f;
cout<<"Enter
three(3)
floating
point
numbers"
<<
endl;
for
(i
=
0;
i
<
3;
i++)
{
cin
>>
x;
splitfloat(x,n,f);
cout<<"Integer
Part
is
"<<
n
<<"
Fraction
Part
is
"<}
}

网友(4):

一定想用返回值做的话,可以定义一个结构:
struct Partition{
int intpart;
float fracpart;
};
然后把函数的返回值设为Partiton型变量

网友(5):

用引用就ok了

#include
using namespace std;
void splitfloat(float x, int &intpart, float &fracpart)
{
intpart=int(x);
fracpart=x-intpart;
}
int main()
{
int i, n;
float x, f;
cout<<"Enter three(3) floating point numbers" << endl;
for (i = 0; i < 3; i++)
{
cin >> x;
splitfloat(x,n,f);
cout<<"Integer Part is "<< n <<" Fraction Part is "< }
}