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

c語言拼音字母排序

發布時間: 2023-03-30 01:33:39

⑴ 在數據結構中用c語言怎麼編寫用單鏈表將26個字母排序的程序

#include <stdio.h>
#include <stdlib.h>

//申明鏈表
typedef struct node
{
char num;
struct node *next;
}list;

void Bubble_sort(list *L);//鏈表的冒泡排序
void Dis_list(list *L);//遍歷單鏈表

int main()
{
//建表
list *r,*s,*p;
int n=26;//存儲數據的個數
s=NULL;
for(int i='Z';i>='A';i--)
{
r=(list *)malloc(sizeof(list));
r->num = i;
if(!s){s=r;p=s;}
p->next=r;
p=r;
}
p->next=NULL;
printf("排序前:\t");
Dis_list(s);
//排序
Bubble_sort(s);
printf("排序後:\t");
Dis_list(s);
return 0;
}

void Dis_list(list *L)
{
list *r;
r=L;
while(r!=NULL)
{
printf("%c\t",r->num);
r=r->next;
}
printf("\n");
}

void Bubble_sort(list *L)
{
list *r,*s;
char temp;
for(r=L;r;r=r->next)
{
for(s=r;s;s=s->next)
{
if(r->num>s->num)
{
temp=r->num;
r->num=s->num;
s->num=temp;
}
}
}
}

⑵ c語言輸入N個姓名拼音,找出按字母順序排在最前的拼音

調試了一下,問題在字元串操作。

最簡單的辦法是使用系統提供的字元串操作函數。

修改代碼和注釋如下:

#include<stdio.h>

#include<string.h>//增加字元串操作支持

#defineN5

intmain()

{

charcs[N][20],temp[20]="0";//定義時初始化字元串數組

inti,p,maxLen;

printf("inputnames: ");

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

gets(cs[i]);

printf(" ");

//temp[20]="0";//字元串操作不能直接賦值,使用strcpy函數

for(i=1;i<N;i++)

{//對二維數組的行進行循環

//if(cs[i]<temp)

if(strcmp(cs[i],temp)<0)//字元串比較使用strcmp函數

strcpy(temp,cs[i]);//字元串賦值,使用strcpy函數

}

printf("Thenameis:%s ",temp);

return0;

}

在VC6編譯通過,如下圖:

供參考。

⑶ c 語言怎麼對中文字元進行拼音排序

ansi GB2312里一級漢字是按拼音排序的,襲橡搏其他的漢字按部首/筆劃排序
所以能按拼音排序的漢字只有3000多個,直接用strcmp()較拍祥就可以了
你提出的這幾個字都是一級字型檔里的字,所以用strcmp()就可以實現按拼音排序

但是如果你用的是Unicode,由於unicode里的漢字按筆劃順序排序,所如源以沒有辦法實現按拼音排序。

⑷ 如何用C語言給字母排序

這個其實就是排序,因為char類型跟int類型一樣的也是數字,可以比較大小的,然後輸出就可以了。

⑸ 在c語言中我想對漢字字元串按拼音進行排序,可以直接利用strcmp函數來進行排序嗎

ansi GB2312里一級漢字是按拼音排序的,其他的漢字按部首/筆劃排序。所以能按拼音排序的漢字只有3000多個,直接用strcmp()比較就可以了。但是如果用的是Unicode,由於Unicode里的漢字按筆劃順序排序,所以沒有辦法實現按拼音排序。

代碼如下:

#include<stdio.h>

#include<string.h>

intmain()

{

chara[5]="王華",b[5]="張麗",c[5]="李強";

chart[5];

if(strcmp(a,b)>0)

{

strcpy(t,a);

strcpy(a,b);

strcpy(b,t);

}

if(strcmp(a,c)>0)

{

strcpy(t,a);

strcpy(a,c);

strcpy(c,t);

}

if(strcmp(b,c)>0)

{

strcpy(t,b);

strcpy(b,c);

strcpy(c,t);

}

printf("%s %s %s ",a,b,c);

return0;

}

(5)c語言拼音字母排序擴展閱讀

C語言 strcmp() 函數用於對兩個字元串進行比較(區分大小寫)。

頭文件:string.h

語法/原型:int strcmp(const char* stri1,const char* str2);

參數 str1 和 str2 是參與比較的兩個字元串。

strcmp() 會根據 ASCII 編碼依次比較 str1 和 str2 的每一個字元,直到出現不到的字元,或者到達字元串末尾(遇見)。

返回值:

如果返回值 < 0,則表示 str1 小於 str2。

如果返回值 > 0,則表示 str2 小於 str1。

如果返回值 = 0,則表示 str1 等於 str2。

⑹ 用C語言將4個學生的姓名按拼音首字母從大到小排序並顯示.

一個學生的這樣搞:

姓名分開,成兩個字元串。

分別排序,形成新的字元串,然後輸出。


其他學生一樣的方法。

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

#defineSTU_NAME_MAX_LEN20
charstu_name[][STU_NAME_MAX_LEN]=
{
"ikercassilas",
"luissuarez",
"cristianoronaldo",
"lionlmessi"
};

voidmain()
{
intstu_count=sizeof(stu_name)/sizeof(stu_name[0]);
inti,j,k;
for(i=0;i<stu_count;i++)
{
charfirstname[STU_NAME_MAX_LEN];
charfamilyname[STU_NAME_MAX_LEN];
intblankpos=0;

//將姓名分開
memset(firstname,0,STU_NAME_MAX_LEN);
memset(familyname,0,STU_NAME_MAX_LEN);
for(j=0;j<sizeof(stu_name[i]);j++)
{
if(stu_name[i][j]=='')
{
blankpos=j;
break;
}
}
memcpy(firstname,&stu_name[i][0],blankpos);
memcpy(familyname,&stu_name[i][blankpos+1],sizeof(stu_name[i])-blankpos-1);
printf("old:%s%s ",firstname,familyname);

//排序
for(j=0;firstname[j]!='';j++)
{
for(k=j+1;firstname[k]!='';k++)
{
if(firstname[j]<firstname[k])
{
charctemp=firstname[j];
firstname[j]=firstname[k];
firstname[k]=ctemp;
}
}
}
for(j=0;familyname[j]!='';j++)
{
for(k=j+1;familyname[k]!='';k++)
{
if(familyname[j]<familyname[k])
{
charctemp=familyname[j];
familyname[j]=familyname[k];
familyname[k]=ctemp;
}
}
}
printf("new:%s%s ",firstname,familyname);
}
}

⑺ C語言怎麼對英文字母排序

根本就是.現代的英文字母就是拉丁字母
古代沒有拼音,就使用反切,就是用兩個認識會念的字,取第一個的聲母,取第二個的韻母,拼合起來就行了.
古代,中國的回族兄弟不學漢字,學習阿拉伯語,但他們用阿拉伯文的字母來拼寫口語(漢語),所以這是中國最早的拼音。
元朝,蒙古統治者用改變了的藏文的字母來拼寫漢語等語言,叫八思巴字。雖然不是專門拼寫漢語的,但是,也算漢語拼音的一種吧。
明朝,西方傳教士用拉丁字母拼寫漢語,是中國最早的拉丁字拼音。
清末明初,出現了用簡單的古字表現漢語語音的拼音方式。民國年間,政府制定了「注音字母」,就是這個系統的集中表現。現在台灣依然使用。但是,同時也出現了拉丁字的拼音運動,而且,跟左翼人士的政治運動結合很密切。
共和國成立後,立即由政府制定了「漢語拼音方案」,就是現在使用的這一套方案。聯合國也承認的。
**《現代漢語拼音方案》的出籠 **
1949年中華人民共和國成立後,就馬上著手研製拼音方案。1949年10月成立了民間團體「中國文字改革協會」,協會設立「拼音方案研究委員會」,討論拼音方案採用什麼字母的問題。
在1951年,毛澤東就指出:「文字必須改革,必須走世界文字共同的拼音方向」。但是,究竟採用什麼形式的拼音方案,他本人也是經過了反復斟酌的。毛澤東到蘇聯訪問時,他曾經問斯大林,中國的文字改革應當怎麼辦;斯大林說,中國是一個大國,可以有自己的字母。毛澤東回到北京之後,指示中國文字改革研究委員會制訂民族形式的拼音方案。同時,上海的新文字研究會停止推廣北方拉丁化新文字,等待新方案的產生。
1955年10月15日,全國文字改革會議在北京舉行。葉籟士在發言中說:「從1952年到1954年這個期間,中國文字改革研究委員會主要進行漢字筆畫式拼音方案的研究工作,經過了三年的摸索,曾經擬定幾種草案,都放在《漢語拼音方案草案初稿》(漢字筆畫式)里頭」。這次會議上印發給代表們六種拼音方案的草案,有四種是漢字筆畫式的,一種是拉丁字母式的,一種是斯拉夫字母式的。會議之後,當時的中國文字改革委員會主任吳玉章向毛澤東報告,他說,民族形式方案搞了三年,難以得到大家都滿意的設計,不如採用拉丁字母。毛澤東同意採用拉丁字母,並在中央開會通過。
在中國制定拼音方案的時候,蘇聯已經不再搞拉丁化,改為搞斯拉夫化,把所有的拉丁化民族文字一律改成了斯拉夫字母。蒙古人民共和國也把蒙古字母改成了斯拉夫字母。50年代,中國向蘇聯一邊倒,有人主張採用斯拉夫字母,跟蘇聯在文字上結盟。蘇聯派到中國的語言學家謝爾久琴柯也提出使用斯拉夫字母的建議。據說,蘇聯的一位副總理來中國訪問時,曾經向陳毅副總理說,希望中蘇兩國都採用相同的字母。陳毅副總理回答說,中國文化必須跟東亞和東南亞聯系,東亞和東南亞都習慣用拉丁字母。這樣,中國才沒有採用斯拉夫字母。如果我國當時採用了斯拉夫字母,我們今天使用計算機將會遇到更多的困難。中國政府當時在字母選擇上的決策,是非常正確的。
1956年1月20日,毛澤東在知識分子問題會議上,發表了贊成拉丁字母的講話。他說,「吳玉章同志的發言講的很好。關於文字改革的意見,我很贊成。在將來採用拉丁字母,你們贊成不贊成呀?我看,在廣大群眾里頭,問題不大;在知識分子里頭,有些問題。中國怎麼能用外國字母呢?但是,看起來還是採用這種外國字母比較好。吳玉章同志在這方面說得很有理由。因為這種字母很少,只有二十幾個,向一面寫,簡單明了。我們漢字在這方面實在比不上。比不上就比不上,不要以為漢字那麼好。有幾位教授跟我說,漢字是『世界萬國』最好的一種文字,改革不得。假使拉丁字母是中國人發明的,大概就沒有問題了。問題就出在外國人發明,中國人學習。但是,外國人發明中國人學習的事情是早已有之的。例如阿拉伯數字,我們不是久已通用了嗎?拉丁字母出在羅馬那個地方,為世界大多數國家所採用。我們用一下,是否就大有賣國的嫌疑呢?我看不見得。凡是外國好的東西,對我們有用的東西,我們就是要學,就是要統統拿過來,並且加以消化,變成自己的東西。我們中國歷史上,漢朝就是這么做的,唐朝也是這么做的。漢朝和唐朝,都是我國歷史上很有名很強盛的朝代。他們不怕吸收外國的東西,有好的東西就歡迎。只要態度和方法正確,學習外國的好東西,對自己是大有好處的。」(轉引自鄭林曦《論語說文》)。
此期間,群眾中也創制了不少的文字方案,寄到中國文字改革委員會。根據統計資料,從1950年到1955年8月31日全國文字改革工作會議為止,寄來的方案有655個,從1955年8月31日到1958年2月漢語拼音方案公布為止,寄來的方案有1000多個,從1958年2月到1980年文化大革命結束為止,寄來的方案有1667個。群眾設計的各種各樣的文字方案總共有3300多個。這種創製造文字方案的積極性,在中國文化的發展歷史上是空前的。這充分說明了語言規劃的社會性。
1955年2月,中國文字改革委員會設立了「拼音方案委員會」,開始設計漢語拼音方案,提出了《漢語拼音方案(草案)》。1956年2月12日,中國文字改革委員會發表《漢語拼音方案(草案)》,公開徵求意見。這個草案共有31個字母,其中有5個新字母(無點的i;長腳的n;帶尾的z,c,s),以便實現「一字一音」,不用變讀和雙字母。草案發表後在全國范圍內引起熱烈的討論,甚至海外華僑和留學生也提出了自己的意見。
1955年10月,國務院成立「漢語拼音方案審定委員會」,經過一年的工作,於1957年10月提出《修正草案》,11月1日由國務院全體會議第60次會議作為新的《漢語拼音方案(草案)》通過,提請全國人民代表大會審議,1958年2月11日,第一屆全國人民代表大會第五次會議正式批准《漢語拼音方案》。1958年秋季開始,《漢語拼音方案》作為小學生必修的課程進入全國小學的課堂。《漢語拼音方案》是拼寫規范化普通話的一套拼音字母和拼寫方式,是中華人民共和國的法定拼音方案。這個方案吸取了以往各種拉丁字母式拼音方案,特別是國語羅馬字和拉丁化新文字拼音方案的優點,它是我國三百多年拼音字母運動的結晶,是六十年來中國人民創造拼音方案經驗的總結,比任何歷史上一個拉丁字母式的拼音方案都更加完善和成熟。
《漢語拼音方案》有如下特點:
①只用國際通用的26個字母,不增加新字母;
②盡量不用附加符號(只用了兩個附加符號);
③盡量不用變讀;
④採用y,w和隔音符號「'」來隔音;
⑤採用四個雙字母zh, ch, sh, ng;
⑥採用四個聲調符號來表示陰平、陽平、上聲、去聲四個調類;
⑦採用拉丁字母通用的字母表順序,並確定了漢語拼音字母的名稱。
周恩來在《當前文字改革的任務》的報告中說:「現在公布的漢語拼音方案,是在過去的直音、反切以及各種拼音方案的基礎上發展出來的。從採用拉丁字母來說,它的歷史淵源遠則可以一直追溯到350多年以前,近則可以說是總結了60年來我國人民創制漢語拼音方案的經驗。這個方案,比起歷史上存在過的以及目前還在沿用的各種拉丁字母的拼音方案來,確實更加完善。」
《漢語拼音方案》自製訂以來,得到迅速的推廣和應用。主要有如下方面。
①用於給漢字注音:從1958年秋季開始,全國小學的語文課本採用漢語拼音給漢字注音,接著,中學教科書、字典、詞典以及通俗讀物、掃盲課本也採用漢語拼音注音。《人民日報》等用漢語拼音字母給難字注音。1958年10月,中央工商行政管理局和中國文字改革委員會聯合發出通知,要求各種商標圖樣和商品包裝上加註漢語拼音字母。郵電局名、鐵路站名、氣象站名、城市街道名也都使用漢語拼音標注。1982年6月19日國家標准局發布了國家標准《中文書刊名稱漢語拼寫法》,規定國內出版的中文書刊在封面、或首頁、或封底、或版權頁上加註漢語拼音書名、刊名。
②用於教學普通話:《漢語拼音方案》公布後,陸續出版了利用漢語拼音編寫的普通話教材、讀物、字表、字典、詞典,促進了普通話的推廣和普及。在對外漢語教學中,《漢語拼音方案》已經成為外國人學習漢語進行全面訓練的不可缺少的工具。
③用於字典、詞典的注音、排序,書刊的索引。75卷的《中國大網路全書》採用漢語拼音排序,正文的每一個條目都註上了漢語拼音。
④作為我國少數民族創制和改革文字的共同基礎。我國已經有壯族、苗族、侗族、哈尼族、僳僳族、佤族、黎族、納西族、土族等少數民族採用漢語拼音字母相一致的字母形式。
⑤用於不便使用或不能使用漢字的領域:《漢語拼音方案》為盲文的點字和聾啞人的手語的制定提供了依據。漢語拼音還可用於手旗通訊、燈光通信中,用同漢語拼音字母對應的手旗訊號或燈光符號來傳遞信息。在電子計算機輸入漢字方面,拼音輸入法是一種最為普及的輸入方法。
1977年,聯合國地名標准化會議決定採用《漢語拼音方案》作為拼寫中國地名的國際標准。1978年9月,國務院轉發了《關於改用漢語拼音方案作為我國人名地名羅馬字母拼寫法的統一規范的報告》。1982年8月1日,國際標准化組織(ISO)文獻工作技術委員會決議採用漢語拼音作為世界文獻工作中拼寫中國專有詞語的國際標准,標准號:ISO7098-1982。《漢語拼音方案》已經從中國標准發展成為國際標准。
漢語拼音目前還是拼寫漢字的輔助工具.

⑻ C語言程序 按中文拼音的首字母排序 要求程序中有兩個函數。

/**已經修改如下.
*@author:banxi1988
*@date:2010-12-9
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M 5 /**同學的人數 如果你想多輸入些廳察簡的話自己改吧. */

void input(char *name[],int n);
void sort(char *name[],int n);

int main(int argc, char **agrv){
char *name[M]; /**保存學生的名字.*/
int i= 0;
input(name,M);
sort(name,M);

printf("名字按拼扮褲音排列輸出如下:\n");
for(i=0;i<M;i++)
{
printf("%s\t",name[i]);
}//for:
printf("\n");

return 0;
}//

void input(char *name[],int n){
char str[20]; /**拼音的長度. 20-1 ,自己改 */
int i;
printf("沒物請輸入 %d 個學生的名字(請用拼音) :\n",M);

/** 這里也比較關鍵,好好領會.**/
for(i=0; i < n; i++)
{
scanf("%s",str);
name[i] = (char *)malloc(sizeof(char)*(strlen(str)));
strcpy(name[i],str);

}//for:
}//input

void sort(char *name[],int n){
/**冒泡法實現排序****************/
char *tmp;
int i,j;
for(i=0;i<n;i++)
{
for(j=1;j<n-i;j++)
{
/***兩個名字位置交換,將較大的名字放到數組的前面.*/
if(strcmp(name[j],name[j-1])<0)
{
tmp=name[j-1];
name[j-1]= name[j];
name[j]=tmp;
}
}//inner for
}//outer for

}//sort

/***** 測試結果:
請輸入 5 個學生的名字(請用拼音) :
abc cano java perl banxi
名字按拼音排列輸出如下:
abc banxi cano java perl

***/

⑼ C語言 字母排列

1、該排序演算法是選擇排序演算法

2、在i位置為大寫字母時進行第二層遍歷

3、如果判斷不為大寫字母,不需要j++之後continue,否則會跳過一個字母

修改後代碼如下,修改位置注釋給出:

//1072字母排列
#include<stdio.h>
#include<string.h>


intmain()
{
chara[65];
inti,j,b,min;

gets(a);//讀取一行內容
b=strlen(a);

//冒泡排序法,i為前面的字元,j為後一個字元
for(i=0;i<b-1;i++)
{
if(a[i]<'A'||(a[i]>'Z')||a[i]=='')continue;/////judge
for(j=i+1;j<b;j++)
{
if(a[j]<'A'||(a[j]>'Z')||a[j]=='')
{
//j++;//delete
continue;
}
if(a[i]>a[j])//從小到大排序,小的排左邊,大的排右邊
{
min=a[j];
a[j]=a[i];
a[i]=min;
}
}
}

for(i=0;i<b;i++)
printf("%c",a[i]);
return0;
}

⑽ c語言程序 中文按首字母排序

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

#define MAX_NAME 20 //最大名字長度
#define MAX_NUM 100 //最大學生人數

void sort_bubble(char (*pc)[MAX_NAME],int n)//排序函數
{
int i,j;
char str[MAX_NAME];
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(pc[i],pc[j])>0)
{
strcpy(str,pc[i]);
strcpy(pc[i],pc[j]);
strcpy(pc[j],str);
}
}
}
}

void display_name(char (*pc)[MAX_NAME],int n)//顯示這n個姓名
{
int i;
for(i=0;i<n;i++)
{
printf("%s\n",pc[i]);
}
}
int main()
{
int i=1,n;
char str[MAX_NUM][MAX_NAME];
printf("請輸入學生總數:");
scanf("%d",&n);
while(i<=n)
{
printf("請輸入第%d個學生姓名:",i);
scanf("%s",str[i++-1]);
}
printf("排序前的學生名單如下:\n");
display_name(str,n);
sort_bubble(str,n);
printf("排序後的學生名單如下:\n");
display_name(str,n);
return 0;
}
說明:
1:採用的是冒泡排序,用快速排序當然快些,但我忘了
2:已驗證通過,結果正確。
3:隨意輸入人數和姓名,只要數組不越界就沒有問題!
4:兩個函數:排序和顯示
5:給分+好評