<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 ); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-14 05:36:47