⑴ 在數據結構中用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]!='