C语言:数组中的值在0-9范围,统计每个整数的个数。结果有错误;代码如下

#include<stdlib.h>

void arrin(int a[])
{ int i;
for(i=0;i<50;i++)
a[i]=rand()%10;
}
void arrout(int b[])
{ int i;

for(i=0;i<50;i++)
{ printf("%d:",b[i]);
if((i+1)%10==0)

printf("\n");
}
}
void sum(int c[],int d[])
{ int i;
for(i=0;i<50;i++)
d[c[i]]++;
}
void arrout2(int *e)
{ printf("\n");
int i;
for(i=0;i<10;i++)
printf("%d:",e[i]);
}
void main()
{
int x[50],y[10];
arrin(x);arrout(x);
sum(x,y);
arrout2(y);
}

arrout2的结果不对为何

第1个回答  2011-07-29
#include<stdlib.h>
#include<math.h>
int x[50],y[10];
void arrin(int a[])
{ int i;
for(i=0;i<50;i++)
a[i]=rand()%10;
}

int abc(int b[])
{
int i;
for(i=0;i<50;i++)
switch(b[i])
{case 0:
y[0]++;break;
case 1:
y[1]++;break;
case 2:
y[2]++;break;
case 3:
y[3]++;break;
case 4:
y[4]++;break;
case 5:
y[5]++;break;
case 6:
y[6]++;break;
case 7:
y[7]++;break;
case 8:
y[8]++;break;
case 9:
y[9]++;break;
default:
break;
}
}

void count(int c[])
{int i;
for(i=0;i<10;i++)
switch(c[i])
{case 0:
printf("0共%d个\n",c[i]);break;
case 1:
printf("1共%d个\n",c[i]);break;
case 2:
printf("2共%d个\n",c[i]);break;
case 3:
printf("3共%d个\n",c[i]);break;
case 4:
printf("4共%d个\n",c[i]);break;
case 5:
printf("5共%d个\n",c[i]);break;
case 6:
printf("6共%d个\n",c[i]);break;
case 7:
printf("7共%d个\n",c[i]);break;
case 8:
printf("8共%d个\n",c[i]);break;
case 9:
printf("9共%d个\n",c[i]);break;
default:
break;
}
}

int main()
{
arrin(x);
abc(x);
count(y);
system("pause");

}本回答被提问者采纳
第2个回答  推荐于2018-04-24
arrout2的结果不对为何?
因为y[10]没有初始化,我加了两行代码就可以了

#include<stdio.h>
#include<stdlib.h>

void arrin(int a[])
{
int i;
for(i=0;i<50;i++)
a[i]=rand()%10;
}

void arrout(int b[])
{
int i;

for(i=0;i<50;i++)
{
printf("%d:",b[i]);
if((i+1)%10==0)
printf("\n");
}
}

void sum(int c[],int d[])
{
int i;
for(i=0;i<10;i++)
d[i]=0;
for(i=0;i<50;i++)
d[c[i]]++;
}

void arrout2(int *e)
{
printf("\n");
int i;
for(i=0;i<10;i++)
printf("%d:",e[i]);
}

void main()
{
int x[50],y[10];
arrin(x);
arrout(x);
sum(x,y);
arrout2(y);
}本回答被网友采纳
第3个回答  2011-07-27
为什么你写的代码这么长 我记得这个题目几行代码就可以搞定的啊!追问

牛人,您来写一个

相似回答