给定一个合法的命题公式,编写一个程序,提取命题公式中的所有以单个小写字母(‘a’~‘z’)表示的命题变元,并按命题变元字母的升序顺序,输出命题变元字典。
【输入】
本题单组测试数据,测试数据为单独占一行的表示命题公式的字符串,字符串的长度N不超过100,且命题公式中的命题变元符号均为小写字母(‘a’~‘z’)。
【输出】
测试数据输出一行,该行中按命题变元字母升序顺序输出。
【输入样例】
r∨p↔q
【输入样例】
pqr
可以在遍历输入的字符串时,将小写字母全部复制到另一个字符数组,然后再按字母从小到大的顺序排序这些字符即可。
代码如下:
#include <stdio.h>
#include <string.h>
int main(void){
char str[102]; // 存储输入的字符数组
char result[102]; // 存储最终结果的字符数组
int i=0,j=0;
scanf("%s",str); // 获取输入
while(str[i]!='\0'){ // 遍历输入的命题字符串
if(str[i]>='a'&&str[i]<='z'){ // 如果字符串中当前字符为小写字母,则复制到result字符数组中
result[j]=str[i];
j++;
}
i++;
}
result[j]='\0'; // 结尾添加一个空字符
// 按字母升序排序 结果字符串
for(int i=0;i<strlen(result)-1;i++){
for(int j=i+1;j<strlen(result);j++){
if(result[i]>result[j]){
char ch = result[i];
result[i] = result[j];
result[j] = ch;
}
}
}
// 打印结果
printf("%s",result);
return 0;
}