请教用C语言实现一维数组中一个值连续出现的次数,详情请进

daoke 2004-08-22 01:01:29
需求:
有一个一维数组如 10,2,30,30,30,4,4,5,5,6,7,77,7,7,7,7,7,8,8,8,8,8,9,9,10,10,10
现在要将数组中相邻且相同的数据统计出来,只出现一次记为1,出现2记为2,如上面的数组统计的结果为 1,1,3,2,2,1,1,1,5,5,2,3其第一个1代表10连续出现一次,第二个1代表2连续出现一次,3代表30连续出现三次,以次类推

我想请教高手,这个算法用C语言怎么实现怎比较好,谢谢啦,在线等待中!!!!!
...全文
344 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
daoke 2004-08-23
  • 打赏
  • 举报
回复
我自己昨天搞定了,^_^,谢谢你们的答复
herryhuang 2004-08-22
  • 打赏
  • 举报
回复
上面的参数说明:inArr: 需要处理的数组,inArrSize:需要处理的数组的元素个数,outArr:输出数组,输出数组每个元素的值是1到n,如果碰到了元素的值为0,说明输出到这里结束了。
herryhuang 2004-08-22
  • 打赏
  • 举报
回复
void func(int inArr[], int inArrSize, int outArr[])
{
int inArrOffset, outArrOffset, lastValue;

inArrOffset = outArrOffset = 0;

outArr[outArrOffset] = 1;

lastValue = inArr[inArrOffice];

while(++inArrOffset < inArrSize)
{
if(inArr[inArrOffset] == lastValue)
outArr[outArrOffset] += 1;
else
{
outArr[++outArrOffset] = 1;
lastValue = inArr[inArrOffset];
}
}
outArr[++outArrOffset] = 0; // End of the output array;
}
ntxs 2004-08-22
  • 打赏
  • 举报
回复
cnt = 1; //连续出现的次数
for (int i = 1; i < 数组元素个数 ; i++)
{
if (a[i - 1] == a[i])
cnt++;

else
{
printf a[i - 1];
printf cnt;
cnt = 1;

}
if (i == 元素个数 -1)//处理最后一个元素
{

printf a[i];
printf cnt;
}

}
ntxs 2004-08-22
  • 打赏
  • 举报
回复
cnt = 1; //连续出现的次数
for (int i = 1; i < 数组元素个数 ; i++)
{
if (a[i - 1] == a[i])
{
cnt++;
if (i == 元素个数 -1)
{

printf a[i];
printf cnt;
}
}
else
{
printf a[i - 1];
printf cnt;
cnt = 1;
if (i == 元素个数 -1)
{

printf a[i];
printf cnt;
}

}
}
  • 打赏
  • 举报
回复
应该很好比较吧,设定计数器,前后比较,相同的话,计数器就递增啊。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧