C++求改错

/*第4题:
编写函数,函数功能是:统计整数n的各位上出现数字1、2、3的次数。要求输入输出均在主函数中完成。
样例输入:123114350
样例输出:3 1 2
*/
#include<iostream.h>
int t(int n,int x,int y,int z)
{
char a[3];
while(n!=0)
{
int m,x=0,y=0,z=0;
m=n%10;
n=n/10;
if(m==1)
x++;
else if(m==2)
y++;
else if(m==3)
z++;
}
a[0]=x;
a[1]=y;
a[2]=z;
return a[3];
}
int main()
{
int n,x,y,z;
cin>>n;
cout<<t(n,x,y,z)<<endl;
}

/*第4题:
编写函数,函数功能是:统计整数n的各位上出现数字1、2、3的次数。要求输入输出均在主函数中完成。
样例输入:123114350
样例输出:3 1 2
*/
#include<iostream>
using namespace std;

void t(int n, int& x, int& y, int& z)
{
int m;
x = 0;
y = 0;
z = 0;
while (n != 0)
{
m = n % 10;
n = n / 10;
if (m == 1)
x++;
else if (m == 2)
y++;
else if (m == 3)
z++;
}
}
int main()
{
int n, x, y, z;
cin >> n;
t(n, x, y, z);
cout << x << " " << y << " " << z << endl;
}

追问

 这步为什么这么写,是取地址吗,在主函数中为什么直接就能输出3个数

追答void t(int n, int& x, int& y, int& z);
                 ^       ^       ^   参数传引用
这样去理解,传递进来的x, y, z在修改的时候,会连同传递进来的参数一起修改
所以在t()里面修改x, y, z就会修改main()里面的x y z.
所以在main里面可以直接输出那3个数

温馨提示:答案为网友推荐,仅供参考
相似回答