设一个数组,每个元素都是不超过两位数的正整数,试编程统计该数组全部数字0,1,2,..9各出现多少次。

要求:int a[]={5,26,98,77,1,27,30};
提示:定义一个数组b[10],存放a数组中数字0~9出现的次数,即b[0]存放0出现的次数,b[1]存放1出现的次数.....,该数组元素的初值均为0.

//一楼的算法好像有点不对,比如a=10;则b[1]++;但是下边的又是b[9]++;我写了一个,你试下,不懂可直接问我,
#include<stdio.h>
#include<malloc.h>
void main()
{
int *a,b[10]={0},n,i;
printf("请输入这个数组的大小:");
scanf("%d",&n);
a=(int*)malloc(n*sizeof(int));
printf("请输入这个数组de元素:");
for(i=0;i<n;i++)
{scanf("%d",&a[i]);
if (a[i] >= 10)
{
b[a[i]/10]++;
b[a[i]%10]++;
}
else
b[a[i]]++;}
printf("the times are:\n");
for(i=0;i<10;i++)
printf("%d ",b[i]);
free(a);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-23
题也不说清除,我就当A数组中的数的大小不超过100来写了。
for(int i = 0; i < 7; i++ )
{
int b[10] = {0}
if (a >= 10)
{
b[a/10]++;
b[a - a/10]++;
}
else
b[a]++;
}
第2个回答  2012-05-08
#include<iostream.h>
void main()
{
int a[]={5,26,98,77,1,27,30};
int n=sizeof(a)/sizeof(int);
int b[10]={0};
for(int i=0;i<n;i++)
{
if(a[i]>=10)
{
b[a[i]/10]++;
b[a[i]%10]++;
}
else
b[a[i]]++;}
for(int j=0;j<10;j++)
cout<<b[j]<<endl;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网