求解一道C语言二级考试 改错题 统计一维数组中0和1的个数

如题所述

题目呢?这个不难。
#include<iostream.h>
void main()
{
int n,*p;
int a=0,b=0;
cout<<"输入数组元素的个数n:";
cin>>n;
p=new int[n];
cout<<"输入数组元素:";
for(int i=0;i<n;i++)
cin>>p[i];
for(int j=0;j<n;j++)
{
if(p[j]==0)
a++;
else
b++;
}
cout<<"一维数组中0的个数:"<<a<<endl;
cout<<"一维数组中1的个数:"<<b<<endl;
}
用的是动态数组,这样就好了,如果你能帮我解决我的问题就更好了。在我的提问:
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-01
nt **a,int m);//在这里a是一个双重指针,也就是说他是一个指向指针的指针,a指向的地址必须是一个指针的地址,而程序中使用
fun(a,n)
来调用,很明显的错误,因为数组名a是一个地址,这个地址中包含有M个元素的一维数组,也就是说数组名是一个指向一组数组的地址,因此对于二维数组名,要求使用数组指针才能接收这样的地址,也就是int (*a)[M]这样的指针,指针a表示指向的是一个包含有M个元素的一维数组的地址,因此可以把二维数组名赋给这样的指针才是正确的。

修改方法有两种
第一种
void fun(int (*a)[M],int m) //把指针改为数组指针
第二种
void fun(int a[M][M],int m) //把指针改为同等大小的数组
另外,团IDC网上有许多产品团购,便宜有口碑
第2个回答  2011-03-26
我写下中间的 步骤不 大致是
char a[N] ,k=0,m=0;
for(i=0;i<N;i++)
{ if(a[i])
k++;
else
m++; } 这样输出的K 为 1的个数 M 为 0的个数
第3个回答  2011-03-30
假设这个一位数组存在
for(;a[i]!='\0';)
if(a[i])
n1++;//1的个数
else
n0++;//0的个数
第4个回答  2011-03-27
for(int i = 0;i<count; i++)
{
if(arry[i] == 0 )
sum0 ++;
else if(arry[i] == 1 )
sum1 ++;
}