当前位置:首页 » 编程语言 » c语言对单词排序

c语言对单词排序

发布时间: 2022-09-18 13:32:07

A. c语言:输入6个英文单词,要求按从小到大排序,并输出。如下图所示:

#include <stdio.h>
#include <string.h>
int main()
{
char string[10][50], temp[50];
printf("请输入6个单词:\n");
for(int i = 0; i < 6; i++)
scanf("%s", string[i]);
/*冒泡排序*/
for(int i = 0; i < 5; i++ )
for(int j = i+1; j < 6; j++)
if(strcmp(string[i], string[j]) == 1)//比较字符串大小,可以用strcmp
{
strcpy(temp, string[i]) ;//交换要strcpy
strcpy(string[i], string[j]) ;
strcpy(string[j], temp) ;
}
//输出
printf("输出排好序的6个单词:\n");
for(int i = 0; i < 6; i++ )
puts(string[i]);
return 0;
}

PS:若有不明白的地方,可以追问

B. c语言单词排序

程序第一次运行时,会创建一个“word.txt”(不包括引号)的文本文件,然后要求输入单词。若要退出,请不要点DOS窗口的小叉叉,输入d即可。因为程序在结束之前,对数组中的单词重新排序,并存储到文件中。 #include "stdio.h"---
#include "stdlib.h" ---为exit()函数提供原型; #include "string.h"---字符串处理函数原型; #include "ctype.h"---字符处理函数原型; #define ROWS 256
#define COLS 32---定义“字典”的大小:可存放256个单词,每个单词的长度不超过31
static FILE *fp;---定义文件指针:内部链接,文件作用域;
static char a[ROWS][COLS];---定义数组:内部链接,文件作用域;该数组的作用是将文件的内容复制进来,并加以处理。因为处理数组比处理文件方便。
char get_option(void);---接收用户的选项,防止误操作。若输入“a;”(不包括引号),那么将视为选项a
int b(int count);---完成选项b的作用--接收新单词;
void c(char *pt[], int count);---完成选项c的作用--通过指针对数组排序,实际数组元素位置未改变;
int check(char arr[], int count);---对输入的单词进行分辨,若输入 ni hao ,将视为单词 ni ,并且提示并剔除重复的单词;
void storage(char *pt[], int count);---在程序结束之前重新排序存储数组中的单词到文件中。
#include "stdio.h" #include "stdlib.h" #include "string.h" #include "ctype.h" #define ROWS 256 #define COLS 32 static FILE *fp;
static char a[ROWS][COLS]; char get_option(void); int b(int count);
void c(char *pt[], int count); int check(char arr[], int count); void storage(char *pt[], int count); int main(void) {
int i,count; int start;
char *pt[ROWS]; char ch, len; char input;
if((fp=fopen("words.txt","a+"))==NULL) {
fputs("不能打开或建立文件!\n",stderr); exit(1); }
fseek(fp,0L,SEEK_END); start=(int)ftell(fp)/32; count=start; rewind(fp);
if(fread(a,32*sizeof(char),start,fp)==0) { i=0;
puts("开始创建词库");
puts("请输入单词(每行一个)");
puts("在新行输入END结束输入:"); while(i<ROWS&&scanf("%s", a[i])==1) {
fflush(stdin);
if(strncmp(a[i],"END",3)==0) {
count+=i; break;
}
if(check(a[i], i)) continue; i++; } }
puts("\t\t*********************欢迎使用字典排版系统*******************\n\n");
puts(" MENU "); puts("您要做些什么?");
puts("a. 显示已有的单词 b. 添加新单词"); puts("c. 对已有的单词进行排序 d. 退出");
puts("\n\n\t\t**********************************************************\n"); while((input=get_option())!='d')
{
if(input=='a') { puts("已有的单词:"); for(i=0;i<count;i++)
{
printf(" "); puts(a[i]); } }
if(input=='b')
{
puts("开始创建词库");
puts("请输入新的单词(每行一个)"); puts("在新行输入END结束输入: "); count=b(count); }
if(input=='c') {
puts("对单词进行排序:"); c(pt, count);
for(i=0;i<count;i++) {
printf(" "); puts(pt[i]); } }
puts("还要做些什么?"); }
storage(pt,count); fclose(fp);
puts("谢谢使用,再见!");
return 0; }
char get_option(void) {
char ch;
while((ch=getchar())<'a'||ch>'d') {
while((ch=getchar())!='\n') ;
puts("请输入a,b,c或者d."); }
fflush(stdin);
return ch; }
int b(int count) { int i;
i=count;
while(i<ROWS&&scanf("%s", a[i])==1) {
fflush(stdin); if(check(a[i], i)) continue;
if(strncmp(a[i],"END",3)==0) {
count=i; break; } i++; }
return count; }
void c(char *pt[], int count) { int i,j;
char *temp;
for(i=0;i<ROWS;i++) pt[i]=a[i];
for(i=0;i<count;i++) for(j=i+1;j<count;j++) {
if(strcmp(pt[i],pt[j])>0) {
temp=pt[i]; pt[i]=pt[j]; pt[j]=temp; } } }
int check(char arr[], int count) { int i;
int flag=0;
for(i=0;i<strlen(arr);i++) if(isalpha(arr[i])==0) {
printf("%s不是一个单词.\n",arr); flag=1; break; }
for(i=0;i<count;i++)
if(strncmp(a[i],a[count],strlen(a[count])+1)==0) {
puts("重复的单词!"); flag=1; }
return flag; }
void storage(char *pt[], int count) { int i,j;
char ptr[ROWS][COLS];
c(pt, count);
for(i=0;i<count;i++)
for(j=0;pt[i][j]!='\0';j++) ptr[i][j]=pt[i][j];
fp=fopen("words.txt","w+"); rewind(fp);
fwrite(ptr,32*sizeof(char),count,fp); }

C. c语言 输出单词的顺序


#include<stdio.h>
#include<string.h>

intmain(intargc,char**argv)
{
intgroup_number=0;
scanf("%d",&group_number);

char***input;
input=newchar**[group_number];
int**order;
order=newint*[group_number];

int*sample_number;
sample_number=newint[group_number];

for(inti=0;i<group_number;i++)
{
scanf("%d",&sample_number[i]);

input[i]=newchar*[sample_number[i]];
for(intj=0;j<sample_number[i];j++)
{
input[i][j]=newchar[100];
}
for(intj=0;j<sample_number[i];j++)
{
scanf("%s",input[i][j]);
}
order[i]=newint[sample_number[i]];
for(intj=0;j<sample_number[i];j++)
{
order[i][j]=j;
}
//按照预定的规则进行排序
for(intj=0;j<sample_number[i]-1;j++)
{
boolchange=false;
for(intk=sample_number[i]-1;k>=1+j;k--)
{
if(strlen(input[i][k])>strlen(input[i][k-1]))
{
inttemp;
temp=order[i][k];
order[i][k]=order[i][k-1];
order[i][k-1]=temp;
}
elseif(strlen(input[i][k])==strlen(input[i][k-1]))
{
intlen=strlen(input[i][k]);
boolequal_change=false;
for(intq=0;q<len;q++)
{
if(input[i][k][q]<input[i][k-1][q])
{
equal_change=true;
break;
}
}
if(equal_change)
{
inttemp;
temp=order[i][k];
order[i][k]=order[i][k-1];
order[i][k-1]=temp;
}
}

}
if(!change)
{
break;
}
}
}

//输出结果
for(inti=0;i<group_number;i++)
{
printf("Case%d: ",i+1);
for(intj=0;j<sample_number[i];j++)
{
printf("%s ",input[i][order[i][j]]);
}

delete[]order[i];
for(intj=0;j<sample_number[i];j++)
{
delete[]input[i][j];
}
delete[]input[i];
}

delete[]input;
delete[]order;
delete[]sample_number;

}

D. c语言 单词先按长度排序再按字母表排序

用两次冒泡排序,
第一次先排序长度,
第二次排序时,只有在两个字符串长度相等的情况下,再进行字典序排序。
代码如下:
for (i = 0; i < N - 1; i++){
for (j = 0; j < N - i - 1; j++){
if (strlen(wordLib[j]) < strlen(wordLib[j + 1])){
strcpy(tmpword, wordLib[j]);
strcpy(wordLib[j], wordLib[j + 1]);
strcpy(wordLib[j + 1], tmpword);
}
}
}
for (i = 0; i < N - 1; i++){
for (j = 0; j < N - i - 1; j++){
if ((strlen(wordLib[j]) == strlen(wordLib[j + 1])) && (strcmp(wordLib[j], wordLib[j + 1]) > 0)){
strcpy(tmpword, wordLib[j]);
strcpy(wordLib[j], wordLib[j + 1]);
strcpy(wordLib[j + 1], tmpword);
}
}
}

E. C语言 单词排序(命令行参数)

#include <iostream>

#include <fstream>

#include <vector>

#include <string>

#include <algorithm>

#include <iterator>

using namespace std;


int main(int argc, char *argv[])

{

if (argc != 3) {

cout<<"need two param example: sort file.in file.out"<<endl;

}

ifstream in(argv[1]);

ofstream out(argv[2]);


//read in and sort

istream_iterator<string> it_file(in);

istream_iterator<string> end_of_stream;

vector<string> vec(it_file, end_of_stream);

sort(vec.begin(), vec.end());


//output

ostream_iterator<string> output(out, " ");

unique_(vec.begin(), vec.end(), output);


in.close();

out.close();

return 0;

}


F. 提取英文句子中的单词并排序输出 c语言

#include<stdio.h>
#include<string.h>

intGetWords(char*sentence,char*words[]);
voidSortStrings(char*strs[],intcount);

intmain()
{
charstr[200];
intnWords=0;
char*words[20];
inti;

printf("inputastring:");
gets(str);
nWords=GetWords(str,words);
SortStrings(words,nWords);
puts("output:");
for(i=0;i<nWords;i++)
{
puts(words[i]);
}
return0;
}
intGetWords(char*sentence,char*words[])
{
/******start******/
inti=0;
char*p;
p=strtok(sentence,",.");
while(p!=NULL)
{
words[i]=p;
i++;
p=strtok(NULL,",.");

}

returni;
/******end******/
}
voidSortStrings(char*strs[],intcount)
{
/******start******/
char*p;
inti,j,k;
for(i=0;i<count;i++){
for(j=i+1;j<count;j++)
{
if(strcmp(strs[i],strs[j])>0)
{
p=strs[i];
strs[i]=strs[j];
strs[j]=p;
}
}
}
/******end******/
}

G. c语言 英文单词排序(函数版)

说明:原题目中的const要删除,否则过不了编译。因为const了就不能排序了…… #include #include "string.h"int GetWords(char *sentence, char *words[]);void SortStrings(char *strs[], int count);//const int main(int argc,char *argv[]){ char str[200]; int nWords = 0; char *words[20]; int i; printf("input a string: "); gets(str); nWords = GetWords(str,words); SortStrings(words, nWords); puts("output:"); for(i=0;i0) k=j; if(k-i) p=strs[i],strs[i]=strs[k],strs[k]=p; } /******end******/} 执行结果如下:

H. C语言题,提取英文句子的单词并排序输出。

说明:原题目中的const要删除,否则过不了编译。因为const了就不能排序了……

#include<stdio.h>
#include"string.h"
intGetWords(char*sentence,char*words[]);
voidSortStrings(char*strs[],intcount);//const
intmain(intargc,char*argv[]){
charstr[200];
intnWords=0;
char*words[20];
inti;
printf("inputastring:");
gets(str);
nWords=GetWords(str,words);
SortStrings(words,nWords);
puts("output:");
for(i=0;i<nWords;i++)
puts(words[i]);
return0;
}
intGetWords(char*str,char*words[]){
/******start******/
inti,j,ln=strlen(str);
for(i=0;i<ln;i++)
if(str[i]==''||str[i]=='.')
str[i]='';
for(i=0;str[i]=='';i++);
for(j=0,words[j++]=str+i;i<ln;i++)
if(str[i]=='')
words[j++]=str+i+1;
returnj;
/******end******/
}
voidSortStrings(char*strs[],intcount){//const
/******start******/
inti,j,k;
char*p;
for(i=0;i<count-1;i++){
for(k=i,j=k+1;j<count;j++)
if(strcmp(strs[k],strs[j])>0)
k=j;
if(k-i)
p=strs[i],strs[i]=strs[k],strs[k]=p;
}
/******end******/
}

执行结果如下:

I. C语言编程:英文单词怎么按A~~z的方法排序

/*字符串冒泡排序,以输入的字符串为空格为结束*/
#include <stdio.h>
#include <string.h>
#define MAXNUM 5
#define MAXLEN 20
main()
{
char s1[MAXNUM][MAXLEN],max[MAXLEN];
int num=MAXNUM,i,j,exchange;

for (i=0;i<num;i++)
{
printf("请输入第%d个单词:\n",i+1);
gets(s1[i]);
}

for (i=0;i<num;i++) //按冒泡排序法排序
{
exchange=0;
for(j=0;j<num;j++)
if (strcmp(s1[j],s1[j+1])>0)
{
strcpy(max,s1[j]);
strcpy(s1[j],s1[j+1]);
strcpy(s1[j+1],max);
exchange=1;
}

if(!exchange)
break;
}
printf("按大小输出单词:\n");
for (i=0;i<num;i++)
printf("%s\n",s1[i]);
}

J. C语言编程…按字母顺序给五个单词排序,麻烦大神们看看我错哪儿了,怎么运行出来是这样

	for(j=0;j<4;++j)
{
for(i=0;i<5-j-1;++i)
{
if(strcmp(a[i],a[i+1])>0)
{
strcpy(temp,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],temp);
}
}
}

热点内容
压缩气翻译 发布:2025-01-11 19:42:51 浏览:743
安卓如何正确卡枪 发布:2025-01-11 19:29:57 浏览:749
米家小相机存储卡 发布:2025-01-11 19:22:30 浏览:698
我的世界如何输地图密码 发布:2025-01-11 19:13:21 浏览:225
php表单注册 发布:2025-01-11 18:43:02 浏览:161
虚拟存储功能 发布:2025-01-11 18:43:01 浏览:888
ninjaandroid 发布:2025-01-11 18:26:10 浏览:527
华为的编译器可以用几个软件 发布:2025-01-11 18:18:18 浏览:620
python中的turtle 发布:2025-01-11 18:06:08 浏览:399
罗布乐思账号密码手机号多少 发布:2025-01-11 18:00:55 浏览:403