华为OJ平台试题 ——字符串:输出数组中重复的数组

来源:互联网 发布:wamp apache无法启动 编辑:程序博客网 时间:2024/05/18 12:30
<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 );}}


                                             
0 0
原创粉丝点击