编写程序 实现从键盘上输入两个字符串,将它们合并后,按ASCII码从小到大排序在屏幕输出
,相同的字符仅输出一次。
我是先将两个字符串连接,然后冒泡排序,
最后不知道 相同的字符仅输出一次 将如何实现呢
这题还有别的方法吗??????????代码 谢啦
//编写程序 实现从键盘上输入两个字符串,将它们合并后, //按ASCII码从小到大排序在屏幕输出, //相同的字符仅输出一次。
#include <stdio.h> #include <string.h> #include <stdlib.h>
#define MAXSTRINGSIZE 100
void sort(char arry[],int n); void output(char arry[],int n);
void sort(char arry[],int n) { int i,j,k; char temp; for(i=0;i<n;i++) { k=i; for(j=i+1;j<n;j++) { if(arry[j]<arry[k]) k=j; } if(k!=i) { temp=arry[k]; arry[k]=arry[i]; arry[i]=temp; } } }
void output(char arry[],int n) { int i,j; int counter; for(i=0;i<n;) { printf("%5d",arry[i]); counter=1; for(j=i+1;j<n;j++) { if(arry[i]==arry[j]) { counter++; } else { break; } } i=i+counter; } printf("\n"); }
void main() { char str1[MAXSTRINGSIZE]; char str2[MAXSTRINGSIZE]; char *str; int string_1_length; int string_2_length; int string_length; puts("please enter the first string:"); gets(str1); puts("please enter the second string:"); gets(str2); string_1_length=strlen(str1); string_2_length=strlen(str2); str=(char *)malloc((string_1_length+string_2_length+1)*sizeof(char)); if(!str) exit(2); strcpy(str,str1); strcat(str,str2); string_length=strlen(str); sort(str,string_length); output(str,string_length); }