Ⅰ c語言中漢字如何進行排序
C語言中,漢字是按照字元串來處理的,一個漢字佔用2個位元組,漢字的排序就是按照漢字的編碼進行排序(不是拼音),而是半個漢字的ASCII碼進行排序的。
所以在輸出漢字的時候,如果按照位元組輸出,而不按照字元串輸出的話,就會出現亂碼。
具體漢字的編碼,就不是那麼容易的了。編碼一般以0x開頭,表示是用一個十六進制數表示的。
Ⅱ c語言姓名首字母排序問題
按照C語言語法,main函數須為void類型;另外,你所編輯的程序段沒有輸入。就排序方式來講你所用的是函數的址傳遞及字元串比較大小的函數,這點沒有錯誤;就理解而言strcmp函數的確可以實現你所需的功能,其大小的比較式按ASCⅡ碼值進行的比較,不知道你有沒有意識到。
Ⅲ C語言:將輸入的字元串按首字母順序排列。
#include<stdio.h>
#include<string.h>
void sort(char *a[]);
void print(char *a[]);
int main()
{
char *a[] ={"ceo","define","basic","abc","empty"};
printf("原來的序列是: ");
print(a);
sort(a);
printf(" 排序後的序列是: ");
print(a);
printf(" ");
return 0;
}
void sort(char *a[])
{
int i,j;
char *temp;
for(i=0;i<4;i++)//注意是i<4
{
for(j=0;j<4;j++)//注意是j<4,因為下面要+1和後面的那個字元串比較
{
if(strcmp(a[j],a[j+1])>0)//字元串比較:>0表示前面的字元串比後面的大則交換
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
void print(char *a[])
{
int i;
for(i=0;i<5;i++)
{
printf("%s ",a[i]);
}
}
運行效果:
(3)c語言首字怎麼排序擴展閱讀:
return 0的用法:
return的作用是結束正在運行的函數,並返回函數值。return後面可以跟一個常量,變數,或是表達式。
函數的定義一般是這樣的,例如:
inta(inti)//第一個int是函數的返回值的類型,也就是return後面跟的值的類型,a是函數的名稱,括弧里的是傳遞給函數的參數,int是參數的類型,i是參數的名字
{
...//省略函數體內容
returnb;//b必須與函數頭的返回值一致(此處為int型)
}
簡單函數舉例:
intaddOne(intb)
{
returnb+1;
}
該函數的作用是取得一個數,將這個數加上1,再將結果返回
調用時這樣:
intresult=addOne(2);//此時result的值為3
函數括弧里的參數也可以為變數或能算出值的表達式
以上就是一個基本的函數,一般的函數都有返回值,也就是return後面跟的值,返回值可以為各種數據類型,如:int,float,double,char,a[](數組),*a(指針),結構或類(c++)
但不是所有函數都有返回值,如果某個函數無返回值,那麼返回值的位置則為「void」關鍵字,此時函數體中無返回值,即無return的值。但是函數中也可出現return,即一個空的return句子,其作用是使函數立即結束,如voidprint()//括弧中為空表示無傳遞參數、
{
printf("a");
printf("b");
return;//函數執行到此處結束
printf("c");
}//該函數只執行到return語句處,即屏幕上輸出的為"ab"
Ⅳ c語言用數組做通訊錄 怎樣將聯系人的姓名首字母排序 並且輸出 求大俠
排序部分
for(j=0;j<n-1;j++)
{
for(i=0;i<n-1-j;i++)
{
if((strcmp(wds[i],wds[i+1]))>0)//每個數組元素都是字元串
{
t=wds[i];
wds[i]=wds[i+1];
wds[i+1]=t;
}//冒泡排序
}
}
輸出部分
for(k=0;i<n;k++)
{
puts(wds[i]);
}
Ⅳ c語言一個文本內所有單詞按首字母排序
先將文本里的所有單詞賦值給二維字元串變數string[i][j],取每個的單詞的首字母例如string[i][0]進行比較排序,排序演算法網上多得是,可以自己找一種做
for(i=0;i<9;i++) /* 冒泡法排序 */
for(j=0;j<10-i-1;j++)
if(a[j]>a[j+1])
{t=a[j];/* 交換a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
}
Ⅵ 如何用C語言實現一串中文姓名的排序(首字筆畫或者字母)
數組的第一位設置成筆畫數,第二位設置成首字母,排序時根據需要選擇,輸出時從第三位輸出。
char *name="4w王";
Ⅶ 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:給分+好評
Ⅷ c語言排序的方法
排序主要分為以下幾種。
1.冒泡排序:通過循環比較前後數的大小進行交換。最後使得數組有序。
2.快速排序:首先將第一個數作為一個基準,然後循環,將前半部分大於該數的與後半部分小於該數的進行交換,使得以該數為分界線,前面的小於該數,後面的大於該數,然後分前後兩部分繼續。