小心输出格式问题 借用两个数组 输出格式的逗号和只输出重复的数字!
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
char a[100];
char b[100];
int main(){
while(scanf("%s",a)!=EOF){ //循环输入
int n=strlen(a); //字符数组a的长度
bool mark; //标记
int sum=0; //表示有重复的数字的有多少个</cstdio></iostream>
for(int i=0;i<n;i++){ mark=true; for(int j=0;j<i;j++){ if(a[i]==a[j]) mark=false; } if(mark==true){ b[sum]=a[i]; //得到数组b 里面为按序输出的每一行的数字 sum++; } } for(int i=0;i<sum;i++){ int num=0; //每个数字重复次数 for(int j=0;j<n;j++){ if(a[j]==b[i]) num++; } int flag=0; //解决输出逗号问题 for(int j=0;j<n;j++){ if(a[j]==b[i]&&num>1){ flag++; if(flag==1) //当输出为此行的第一个数的时候 printf("%c:%d",b[i],j);//输出格式没有前面的逗号 else printf(",%c:%d",b[i],j);//输出为第1个以后的数要加逗号 } }if(num>1) printf("\n"); //这一步超级重要 只有重复次数大于等于两次才换行!不然会有输出一行为空 } } return 0;
}