当前位置:首页 » 编程语言 » 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:给分+好评