<pre name="code" class="cpp">/*
* 题目:输出数组中重复出现的数组(0-9)
*
* 输入:输入一串数字,中间以逗号隔开,如3,2,2,3,5,6,7,8,9
* 输出:输出数组中重复出现的数字(数字间以空格隔开),输出顺序按原数组中的先后顺序,输出3,2
*/
#include<stdio.h>
#include<string.h>
#define N 256
/*
* 定义一个结构体:数字和数字个数
*/
struct CountNum
{
int n;
int count;
};
int main(void)
{
struct CountNum ao[N]; /* 输出数组 ao */
int i, ai[N], Num = 0; /* 输入数组 ai ,Num 输入的数字个数 */
char str[N];
int len, j, k = 1;
/* 输出数组初始化 */
for( i = 0; i< N; i++)
{
ao[i].n = 0;
ao[i].count = 0;
}
<span style="white-space:pre"> </span>/* 将数字转换成字符输入,然后把它强制转换成数字,并统计其数目 */
gets(str);
len = strlen(str);
for( i = 0; i < len; i++)
{
if(str[i] >= '0' && str[i] <= '9')
{
ai[Num] = (int)(str[i] - '0');
Num++;
}
}
/* 将第一个数字赋值给输出数组a[0],便于后面进行比较 */
ao[0].n = ai[0];
ao[0].count = 1;
/*
* 依次将后面输入的数字与前面的第一个数字进行比较,
* 若是相同则其相应的count加1,若是不同将其存入后一个数组,再次进入判断时将其count加1
*/
for( i = 1; i < Num; i++ )
{
for ( j = 0 ; j < k ; j++)
{
if( ao[j].n == ai[i])
{
ao[j].count++;
break;
}
else if( ao[j].n != ai[i] && j == k - 1 )
{
ao[k].n = ai[i];
k++;
}
}
}
for( i= 0; i < k; i++)
{
if( ao[i].count >= 2 )
printf("%d ", ao[i].n );
}
}版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/cowena/article/details/47780121