输入一个句子,将其中单词按照字典排序

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
    char ch[50][51],tmp[15];//ch是用来储存被分隔好的单词的,tmp用于临时存储单词 
    char s[50];//s用于存储输入的句子 
    int n=0,i,j,m,len;
    gets(s);//输入句子 
    len=strlen(s);
    for(i=0;i<=len;i++){
        if(!isalpha(s[i])){//isalpha这个函数在ctype.h里,如果不是字母就返回一个0 
        //在此处,遇到非字母的肯定是另一个单词了 
            if(m>0){//m>0意味着这里至少有一个字母 
                tmp[m]='\0';//让第m+1的成为'\0',分隔单词 
                strcpy(ch[n],tmp);// 存储单词到tmp里 
                n++;//让下一个单词有位置可以存储 
                m=0;//m置零,重新计数 
            }
        }
        else{
            tmp[m]=s[i];//如果是字母那m就加一,意味着单词字母加一, 
            m++;//存储字母,最后要多空出来一个位置给'\0'用于分割单词 
        }
    }
    for(i=0;i<n-1;i++){
        for(j=0;j<n-1-i;j++){//没什么好说的,冒泡排序 
            if(strcmp(ch[j],ch[j+1])>0){//要是ch[j]>ch[j+1]就往前排 
                char t[20];//下面就是交换了 
                strcpy(t,ch[j]);
                strcpy(ch[j],ch[j+1]);
                strcpy(ch[j+1],t);
                }
        }
    }
    for(i=0;i<n;i++){
        puts(ch[i]);//输出 
    }
    return 0;
}

非常感谢您的问题。关于您的问题,我可以回答: 您可以使用Java语言的Collections.sort()方法来对输入的英文单词按照字典排序。具体实现过程可以使用一个JFrame作为图形界面,其中包括一个JTextArea作为输入单词的文本域,以及一个JButton作为字典排序按钮。在点击字典排序按钮后,我们可以通过程序来获取输入的单词,并将其存储在一个List中,然后对该List进行字典排序。最终,我们可以将排序后的单词输出到另外一个JTextArea中。 以下是一个示例代码,您可以参考: ```java import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; public class WordSorter extends JFrame { private static final long serialVersionUID = 1L; private JTextArea inputTextArea, outputTextArea; private JButton sortButton, clearButton; public WordSorter() { super("Word Sorter"); initComponents(); } private void initComponents() { inputTextArea = new JTextArea(10, 50); outputTextArea = new JTextArea(10, 50); sortButton = new JButton("Sort"); sortButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { sortWords(); } }); clearButton = new JButton("Clear"); clearButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { inputTextArea.setText(""); outputTextArea.setText(""); } }); JPanel buttonPanel = new JPanel(); buttonPanel.add(sortButton); buttonPanel.add(clearButton); add(inputTextArea, BorderLayout.WEST); add(outputTextArea, BorderLayout.EAST); add(buttonPanel, BorderLayout.SOUTH); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); } private void sortWords() { String input = inputTextArea.getText(); String[] words = input.split("\\s+"); // split by whitespace List<String> wordList = new ArrayList<String>(); for (String word : words) { if (!"".equals(word.trim())) { wordList.add(word); } } Collections.sort(wordList); StringBuilder sb = new StringBuilder(); for (String word : wordList) { sb.append(word + "\n"); } outputTextArea.setText(sb.toString()); } public static void main(String[] args) { new WordSorter(); } } ``` 注意,上述代码中使用了正则表达式"\s+"来将输入的英文单词按照空格进行分隔。如果需要支持其他的分隔符,可以将该正则表达式替换成相应的分隔符。另外,如果您需要在排序时忽略大小写,可以使用Collections.sort()方法的第二个参数,即一个Comparator对象,来实现自定义排序方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值