當前位置:首頁 » 編程語言 » c語言字元字典序排序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言字元字典序排序

發布時間: 2022-09-20 00:37:20

c語言字元串排序

#include<stdio.h>

#include<string.h>

#define SIZE 91

#define LIM 31

#define HALT""

void stsrt(char*strings[],int num);

int main(void)

{

char input[LIM][SIZE];

char*ptstr[LIM];

int ct=0;

int k=0;

printf("input up to%d lines,and I will sort them. ",LIM);

printf("To stop,press the enter key at a line's start. ");

while(ct<LIM&&gets_s(input[ct],100)!=NULL&&input[ct][0]!='')

{

ptstr[ct]=input[ct];

ct++;

}

stsrt(ptstr,ct);

puts(" here's the sorted list: ");

for(k=0;k<ct;k++)

{

puts(ptstr[k]);

}

puts(" here's the list: ");

for(k=0;k<ct;k++)

{

puts(input[k]);

}

return 0;

}

void stsrt(char*strings[],int num)

{

char*temp;

int top,seek;

for(top=0;top<num-1;top++)

{

for(seek=top+1;seek<num;seek++)

{

if(strcmp(strings[top],strings[seek])>0)

{

temp=strings[top];

strings[top]=strings[seek];

strings[seek]=temp;

}

}

}

(1)c語言字元字典序排序擴展閱讀:

printf函數使用注意事項

1、域寬

%d:按整型數據的實際長度輸出。

如果想輸出指定寬度可以指定域寬,%md-->m域寬,列印出來以後,在控制台上,顯示m位;

如果我們要列印的數的位數如果超過我們設定m則原樣輸出;

如果我們要列印的數的位數如果小於我們設定的位數,則補空白,具體如下:

如果m為正數,則左對齊(左側補空白);

如果m為負數,則右對齊(右側補空白)。

2、轉義字元

如果想輸出字元"%",則應該在「格式控制」字元串中用連續兩個%表示。

如:printf("%f%%",1.0/3);輸出結果:0.333333%。

㈡ C語言題:將一組字元串按字典順序輸出。(通過函數調用完成)

將一組字元串按字典順序輸出的源代碼如下:

#include <stdio.h>

int main ()

{

char name[40] ; //聲明一個叫name的儲存空間,數組的元素數目是40

printf("what is your name ? ");//轉化說明字元/n換行

scanf("%s,name");//輸入一個字元串,使用了%s的轉化修飾符,表示輸入字元串

printf("hello,%s. ",name);//輸出字元串

return 0;

}

(2)c語言字元字典序排序擴展閱讀

1、兩個字元串,如果兩個字元串相等,則返回0;若str1大於str2(對於大於的理解,是指從兩個字元串的第一個字元開始比較,若兩個字元相同,則繼續比較,若發現兩個字元不相等。

2、對於將數字轉換為字元串,c標准中並沒有定義。c標准中沒有定義的原因我覺得是數字轉成字元串可以使用sprintf格式化輸出函數來完成。

㈢ C語言:設計一個函數,其功能是對數組name中指向的字元串按字典順序排序

#include<stdio.h>
#include<string.h>
void main()
{
void sort(char *s[],int n);
static char *name[5]={"basic","fortran","cobol","pascal","c"};
int i;
sort (name,5);
printf("新排序字元串:\n");
for (i=0;i<5;i++)
puts(name[i]);
}
void sort(char *s[],int n){
char *t;
int i,j,k;
for (i=0;i<n-1;i++){
k=i;
for (j=i+1;j<n;j++)
if (strcmp(s[k],s[j])>0) k=j;
if (k!=i)
t=s[i],s[i]=s[k],s[k]=t;
}
}

㈣ C語言編程解決字元串數組字典排序

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

constintMAXLEN=100;
constintMAXSIZE=10;

voidsort(chartitle[][MAXLEN],intn){//排序
inti,j,k;
chartstr[MAXLEN];
for(i=0;i<n-1;++i){
k=i;
for(j=i+1;j<n;++j){
if(strcmp(title[k],title[j])>0)
k=j;
}
if(k!=i){
strcpy(tstr,title[k]);
strcpy(title[k],title[i]);
strcpy(title[i],tstr);
}
}
}

voidshow(chars[][MAXLEN],intn){
inti;
for(i=0;i<n;++i)
printf("%s",s[i]);
puts("");
}

intmain(void){
chars[MAXSIZE][MAXLEN];
inti;
for(i=0;i<MAXSIZE;++i){
printf("string(%02d/%d):",i+1,MAXSIZE);
fgets(s[i],MAXLEN,stdin);
}
printf("排序前: ");
show(s,MAXSIZE);
sort(s,MAXSIZE);
printf("排序後: ");
show(s,MAXSIZE);
return0;
}

㈤ C語言 字元串數組字典排序

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

constintMAXLEN=100;
constintMAXSIZE=10;

voidsort(chartitle[][MAXLEN],intn){//排序
inti,j,k;
chartstr[MAXLEN];
for(i=0;i<n-1;++i){
k=i;
for(j=i+1;j<n;++j){
if(strcmp(title[k],title[j])>0)
k=j;
}
if(k!=i){
strcpy(tstr,title[k]);
strcpy(title[k],title[i]);
strcpy(title[i],tstr);
}
}
}

voidshow(chars[][MAXLEN],intn){
inti;
for(i=0;i<n;++i)
printf("%s",s[i]);
puts("");
}

intmain(void){
chars[MAXSIZE][MAXLEN];
inti;
for(i=0;i<MAXSIZE;++i){
printf("string(%02d/%d):",i+1,MAXSIZE);
fgets(s[i],MAXLEN,stdin);
}
printf("排序前: ");
show(s,MAXSIZE);
sort(s,MAXSIZE);
printf("排序後: ");
show(s,MAXSIZE);
return0;
}

㈥ c語言什麼叫按字典序排序

就是說,將多個字元串的同一位置的字元按照26個字母的順序進行比對。a最小,z最大。

a < b;

aa < ab; 因為第二位置上,前面字元串是a,後面字元串是b,所以是小於關系,以此類推。

㈦ C語言中如何將10個字元串進行排序

#include<stdio.h>

#include<string.h>

int main()

{

int j,k,i,t,n;

char s[10][10],b[10][10];

for(i=0;i<10;i++)

{

scanf("%s",s[i]);

}

n=strlen(s[1]);

k=0;

for(i=0;i<9;i++)

{

for(j=0;j<9-i;j++)

if(strcmp(s[j],s[j+1])>0)

{

for(k=0;k<n;k++)

b[j][k]=s[j][k];

for(k=0;k<n;k++)

s[j][k]=s[j+1][k];

for(k=0;k<n;k++)

s[j+1][k]=b[j][k];

}

}

for(i=0;i<10;i++)

{

printf("%s ",s[i]);

}

return 0;

}

運行效果:

(7)c語言字元字典序排序擴展閱讀:

scanf函數用法:

scanf("輸入控制符",輸入參數);

功能:將從鍵盤輸入的字元轉化為「輸入控制符」所規定格式的數據,然後存入以輸入參數的值為地址的變數中。

用scanf()函數以%s格式讀入的數據不能含有空白符時,所有空白符都被當做數據結束的標志。所以題中函數輸出的值只有空格前面的部分。

如果想要輸出包括空格在內的所有數據,可以使用gets()函數讀入數據。gets()函數的功能是讀取字元串,並存放在指定的字元數組中,遇到換行符或文件結束標志時結束讀入。換行符不作為讀取串的內容,讀取的換行符被轉換為字元串結束標志''。

㈧ c語言中如何通過函數按字典順序排列輸入的十個字元串

如果使用的是冒泡排序,那麼和整數排序唯一的不同就是這個部分:

if(a[j]>a[j+1])
swap(a[j],a[j+1]);

那麼在字元串排序的時候,需要用到一個庫函數叫strcmp(char a[],char b[]);

這個函數在<cstring>庫中[或者c語言中在<string.h>庫中]

這個函數的用法就是輸入字元串a,b,判斷a,b的字典序大小.

若a的字典序小返回負值

若a的字典序和b相同返回0

若a的字典序大於b的字典序返回正數

然後你將上面冒泡的部分改一下的話就是:

if(strcmp(a[j],a[j+1])>0)
swap(a[j],a[j+1]);

這樣的話就可以實現冒泡排序了.


如果你使用的是系統快排的話,你可以用string,也可以定義一個結構體

structNode{
charch[1000];
}s[12];

boolcmp(constNode&A,constNode&B){
returnstrcmp(A.ch,B.ch)<0;
}

intmain(){
...
sort(s+1,s+10+1,cmp);
...
}

這樣的話也是可以實現的.

㈨ C語言中字典排序是什麼意思

按照字典的順序
即按照字母表的順序,由A-Z
如 Aaa 在Baa之前 , Aaa在Aab之前
同理,Aa在Aaaaa之前(一個為另一個前綴時,短的靠前)

㈩ C語言中說的按字典順序是什麼意思

就是說,將多個字元串的同一位置的字元按照26個字母的順序進行比對。a最小,z最大。

a < b;

aa < ab; 因為第二位置上,前面字元串是a,後面字元串是b,所以是小於關系,以此類推。