从键盘读入一个由字母构成的串(不大于30个字符)。
从该串中取出3个不重复的字符,求所有的取法。
取出的字符,要求按字母升序排列成一个串。
不同的取法输出顺序可以不考虑。
例如:
输入:
abc
则输出:
abc
输入:
abcd
则输出:
abc
abd
acd
bcd
输入:
abcaa
则输出:
abc
要求考生把所有类写在一个文件中。
调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。请不要使用package语句。
另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
解题思路: 先将相同的字母去重,然后跑一边三重循环将所有情况输出。
1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 5 using namespace std; 6 7 int main () 8 { 9 char s1[40],s2[40]; 10 int i,j,i1,i2,i3; 11 while (gets(s1)!=NULL) 12 { 13 int len = strlen(s1); 14 sort(s1,s1+len); // 从小到大排序 15 s2[0] = s1[0]; j = 1; 16 for (i = 1; i < len; i ++) // 去掉相同的字母 17 if (s1[i] != s1[i-1]) 18 s2[j ++] = s1[i]; 19 20 s2[j] = 0; 21 for (i1 = 0; i1 < j-2; i1 ++) // 三重循环 模拟取字母的过程 22 for (i2 = i1+1; i2 < j-1; i2 ++) 23 for (i3 = i2+1; i3 < j; i3 ++) 24 printf("%c%c%c\n",s2[i1],s2[i2],s2[i3]); 25 } 26 return 0; 27 }
时间: 2024-09-28 16:16:45