编写函数,函数功能是:统计整数n的各位上出现数字1、2、3的次数。要求输入输出均在主函数中完成。

#include<iostream.h>
int cs(int a[20],int n)
{int m=0,i;
for(i=0;a[i]!=0;i++)
{if(a[i]==n) m++;}
return m;
}
int main()
{int a[20],m,n,j;
cin>>a[20];
m=cs(a[20],1);
n=cs(a[20],2);
j=cs(a[20],3);
cout<<m<<" "<<n<<" "<<j;
return 0;}

C:\Documents and Settings\Administrator\桌面\Cpp1.cpp(11) : error C2664: 'cs' : cannot convert parameter 1 from 'int' to 'int []'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
C:\Documents and Settings\Administrator\桌面\Cpp1.cpp(12) : error C2664: 'cs' : cannot convert parameter 1 from 'int' to 'int []'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
C:\Documents and Settings\Administrator\桌面\Cpp1.cpp(13) : error C2664: 'cs' : cannot convert parameter 1 from 'int' to 'int []'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
Cpp1.obj - 3 error(s), 0 warning(s)

你这样做计算的是20个数里面有几个1,2,3,不是算的位数上有几个1,2,3,这样写是:

int cs(int iNum,int iChar)
{
int iCount = 0;
while(iNum)
{
if(iChar == iNum%10)
{
iCount++;
}
iNum/=10;
}
return iCount;
}

int main()
{
int a,m,n,j;
cin>>a;
m=cs(a,1);
n=cs(a,2);
j=cs(a,3);
cout<<m<<" "<<n<<" "<<j;
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-15
#include<iostream.h>
int cs(int a[20],int n)
{int m=0,i;
for(i=0;i<20;i++)//判断条件 表示数组下表<20 也就是把存的数全部判断完后结束
{if(a[i]==n) m++;}
return m;
}
int main()
{int a[20],m,n,j;
for(int i=0;i<20;i++)
cin>>a[i];//整形数组要一个一个的输入,以后要这样写
m=cs(a,1);//传的是地址,只要数组名就可以了
n=cs(a,2);//同上
j=cs(a,3);//同上
cout<<m<<" "<<n<<" "<<j;
return 0;}本回答被提问者和网友采纳
相似回答