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

c語言中文排序

發布時間: 2022-02-15 13:18:16

c語言簡單排序

//希望我的回答對你的學習有幫助
//第一題
#include<stdio.h>
voidmain()
{
inti,j,t1,t2;
inta[10],b[10];
for(i=0,j=1;i<10;i++,j++)
{
scanf("%d",&a[i]);
b[i]=j;
}
for(intk=0;k<10;k++)
for(intl=k+1;l<=9;l++)
{
if(a[k]>a[l])
{
t1=a[l];a[l]=a[k];a[k]=t1;
t2=b[l];b[l]=b[k];b[k]=t2;
}
}
for(i=0;i<10;i++)
{
printf("%d",a[i]);
if(i<9)
printf("");
}
printf(" ");
for(i=0;i<10;i++)
{
printf("%d",b[i]);
if(i<9)printf("");
}
printf(" ");
}

② C語言中中文排序的問題請教!

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

intnumber;
charkey[100];
constchar*ErrorInputInfo="輸入錯誤,請重新輸入:";

intcaidan(inta,intb,constchar*str=ErrorInputInfo)
{
intn,m,i,len;
while(1)
{
m=1;
len=strlen(key);
for(i=0;i<len;i++)
{
if(isdigit(key[i])==0)
{
m=0;
break;
}
}
if(m==0)
{
printf("輸入錯誤,請輸入數字,請重新輸入: ");
scanf("%s",key);
}
else
{
n=atoi(key);
if(n>b||n<a)
{
printf("%s ",str);
scanf("%s",key);
}
elsebreak;
}
}
returnn;
}


structworker/*定義員工結構體*/
{
intnub;
charname[20];
charsex[8];
floatgz;
charbeizhu[10];
}yg[100],ls;

voidadd()//添加員工
{
FILE*fp;
printf("請輸入員工信息:姓名,性別,工資,備注,工號將自動生成 ");
scanf("%s%s%f%s",yg[number].name,yg[number].sex,&yg[number].gz,yg[number].beizhu);
yg[number].nub=number+1;
fp=fopen("員工資料庫.txt","a+");
if(fp)
{
fprintf(fp,"%d %s %s %f %s ",yg[number].nub,yg[number].name,yg[number].sex,yg[number].gz,yg[number].beizhu);
fclose(fp);
++number;
}
else
{
printf("打開文件錯誤,添加記錄失敗! ");
}
}

intzairu()//載入歷史數據
{
inti;
FILE*fp=fopen("員工資料庫.txt","r");
if(fp)
{
for(i=0;!feof(fp);i++)
fscanf(fp,"%d%s%s%f%s",&yg[i].nub,yg[i].name,yg[i].sex,&yg[i].gz,yg[i].beizhu);
fclose(fp);
--i;
printf("成功讀取%d條記錄! ",i);
returni;
}
else
{
printf("打開文件錯誤,讀取失敗! ");
return0;
}
}

voidchakan(intn=500)//查看員工列表
{
inti;
if(0>n||n>number)
{
for(i=0;i<number;i++)
{
if(i==0)printf("工號 姓名 性別 工資 備注 ");
printf("%d %s %s %f %s ",yg[i].nub,yg[i].name,yg[i].sex,yg[i].gz,yg[i].beizhu);
}
}
elseprintf("%d %s %s %f %s ",yg[n].nub,yg[n].name,yg[n].sex,yg[n].gz,yg[n].beizhu);

}

voidbaocun()
{
inti;
FILE*fp=fopen("員工資料庫.txt","w");
if(fp)
{
for(i=0;i<number;i++)
fprintf(fp,"%d%s%s%f%s ",yg[i].nub,yg[i].name,yg[i].sex,yg[i].gz,yg[i].beizhu);
fclose(fp);
}
elseprintf("打開文件錯誤!保存文件失敗! ");
}

voidxiugai()//修改員工信息
{
intn,m;
printf("請輸入要修改的員工工號:");
scanf("%s",key);
n=caidan(1,number,"員工工號不存在,請重新輸入:")-1;
chakan(n);
printf("請輸入要修改的項目:1姓名2性別3工資4備注:");
scanf("%s",key);
m=caidan(1,4);
switch(m)
{
case1:
printf("輸入新的姓名:");
scanf("%s",yg[n].name);
break;
case2:
printf("輸入新的性別:");
scanf("%s",yg[n].sex);
break;
case3:
printf("輸入新的工資:");
scanf("%f",&yg[n].gz);
break;
case4:
printf("輸入新的備註:");
scanf("%s",yg[n].beizhu);
break;
}

baocun();
}


voidchazhao()//按關鍵字查找員工
{
intn,m,i,t=0;
floatmin,max;
printf("請選擇查找類型:1工號2姓名3性別4工資5備注 ");
scanf("%s",key);
n=caidan(1,5);

switch(n)
{
case1:
printf("請輸入要查找的工號: ");
scanf("%s",key);
m=caidan(0,100,"員工號應小於100,請重新輸入:");

for(i=0;i<number;i++)
{
if(m==yg[i].nub)
{
chakan(i);
t++;
}
}
if(t==0)printf("該工號不存在 ");
elseprintf("共找到%d位符合條件的員工 ",t);
break;
case2:
printf("請輸入要查找的姓名: ");
scanf("%s",key);
for(i=0;i<number;i++)
{
if(!strcmp(key,yg[i].name))
{
chakan(i);
t++;
}
}
if(t==0)printf("該姓名不存在 ");
elseprintf("共找到%d位符合條件的員工 ",t);
break;
case3:
printf("請輸入要查找的性別: ");
scanf("%s",key);
for(i=0;i<number;i++)
{
if(!strcmp(key,yg[i].sex))
{
chakan(i);
t++;
}
}
if(t==0)printf("該性別不存在 ");
elseprintf("共找到%d位符合條件的員工 ",t);
break;
case4:
printf("請輸入要查找的工資區間min~max: ");
scanf("%f%f",&min,&max);
for(i=0;i<number;i++)
{
if(yg[i].gz>=min&&yg[i].gz<=max)
{
chakan(i);
t++;
}
}
if(t==0)printf("該工資區間沒有員工存在 ");
elseprintf("共找到%d位符合條件的員工 ",t);
break;
case5:
printf("請輸入要查找的備注信息: ");
scanf("%s",key);
for(i=0;i<number;i++)
{
if(!strcmp(key,yg[i].beizhu))
{
chakan(i);
t++;
}
}
if(t==0)printf("該備注信息不存在 ");
elseprintf("共找到%d位符合條件的員工 ",t);
break;
}
}

#defineSORT(X)do{for(i=0;i<number;i++){pos=i;for(j=i+1;j<number;j++)if(##X##)pos=j;if(pos!=i)ls=yg[pos],yg[pos]=yg[i],yg[i]=ls;}}while(0)


voidpaixu()
{
intn,m,i,j,pos;
printf("請選擇排序欄位:1工號2姓名3性別4工資5備注:");
scanf("%s",key);
n=caidan(1,5);
switch(n)
{
case1:
printf("請選擇:1正序2倒序:");
scanf("%s",key);
m=caidan(1,2);
if(m==1)SORT(yg[pos].nub>yg[j].nub);
elseSORT(yg[pos].nub<yg[j].nub);
break;
case2:
printf("請選擇:1正序2倒序:");
scanf("%s",key);
m=caidan(1,2);
if(m==1)SORT(strcmp(yg[pos].name,yg[j].name)==1);
elseSORT(strcmp(yg[pos].name,yg[j].name)==-1);
break;
case3:
break;
case4:
printf("請選擇:1正序2倒序:");
scanf("%s",key);
m=caidan(1,2);
if(m==1)SORT(yg[pos].gz>yg[j].gz);
elseSORT(yg[pos].gz<yg[j].gz);
break;
case5:
break;
}
chakan();
}

voidmain()
{
charkey1[100];
intm=0;
number=zairu();
while(m!=6)
{
printf("主菜單:1添加員工2查看員工列表3修改員工信息4查找員工5排序6退出程序 ");
scanf("%s",key);
m=caidan(1,6);
switch(m)
{
case1:
do
{
add();
printf("添加員工成功,是否繼續添加(y/n) ");
scanf("%s",key1);
while(strlen(key1)>1||(key1[0]!='y'&&key1[0]!='n'))
{
printf("輸入錯誤,請重新輸入! ");
scanf("%s",key1);
}
}
while(key1[0]!='n');
break;
case2:
chakan();
break;
case3:
xiugai();
break;
case4:
chazhao();
break;
case5:
paixu();
break;
}
}
}

③ 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語言中漢字如何進行排序

C語言中,漢字是按照字元串來處理的,一個漢字佔用2個位元組,漢字的排序就是按照漢字的編碼進行排序(不是拼音),而是半個漢字的ASCII碼進行排序的。
所以在輸出漢字的時候,如果按照位元組輸出,而不按照字元串輸出的話,就會出現亂碼。
具體漢字的編碼,就不是那麼容易的了。編碼一般以0x開頭,表示是用一個十六進制數表示的。

⑤ c語言的兩種排序

1、選擇排序法

要求輸入10個整數,從大到小排序輸出

輸入:2 0 3 -4 8 9 5 1 7 6

輸出:9 8 7 6 5 3 2 1 0 -4

代碼:

#include&lt;stdio.h&gt;

int main(int argc,const char*argv[]){

int num[10],i,j,k,l,temp;

//用一個數組保存輸入的數據

for(i=0;i&lt;=9;i++)

{

scanf("%d",&num&lt;i&gt;);

}

//用兩個for嵌套循環來進行數據大小比較進行排序

for(j=0;j&lt;9;j++)

{

for(k=j+1;k&lt;=9;k++)

{

if(num[j]&lt;num[k])//num[j]&lt;num[k]

{

temp=num[j];

num[j]=num[k];

num[k]=temp;

}

}

}

//用一個for循環來輸出數組中排序好的數據

for(l=0;l&lt;=9;l++)

{

printf("%d",num[l]);

}

return 0;

}

2、冒泡排序法

要求輸入10個整數,從大到小排序輸出

輸入:2 0 3-4 8 9 5 1 7 6

輸出:9 8 7 6 5 3 2 1 0-4

代碼:

#include&lt;stdio.h&gt;

int main(int argc,const char*argv[]){

//用一個數組來存數據

int num[10],i,j,k,l,temp;

//用for來把數據一個一個讀取進來

for(i=0;i&lt;=9;i++)

{

scanf("%d",&num&lt;i&gt;);

}

//用兩次層for循環來比較數據,進行冒泡

for(j=0;j&lt;9;j++)

{

for(k=0;k&lt;9-j;k++)

{

if(num[k]&lt;num[k+1])//num[k]&lt;num[k+1]

{

temp=num[k];

num[k]=num[k+1];

num[k+1]=temp;

}

}

}

//用一個for循環來輸出數組中排序好的數據

for(l=0;l&lt;=9;l++)

{

printf("%d",num[l]);

}

return 0;

}

(5)c語言中文排序擴展閱讀:

return 0代表程序正常退出。return是C++預定義的語句,它提供了終止函數執行的一種方式。當return語句提供了一個值時,這個值就成為函數的返回值。

return語句用來結束循環,或返回一個函數的值。

1、return 0,說明程序正常退出,返回到主程序繼續往下執行。

2、return 1,說明程序異常退出,返回主調函數來處理,繼續往下執行。return 0或return 1對程序執行的順序沒有影響,只是大家習慣於使用return(0)退出子程序而已。

⑥ c語言怎樣按照中文姓名的首字母排序求詳細解釋!

有相應字母表比較好辦,不然不好搞

⑦ c語言排序

上述的過程有點小錯誤。下面我更正一下。

i=0,j=3,middle=3,執行quicksort函數如下:
i=0時:p[i]=2<3,i++;3=3,停止,此時i=1 ;p[j]=1<3,停止,此時j=3;
=》交換得 2 1 4 3,i++,j--
此時i=2,j=2.p[i]=4>3,停止,此時i=2 ;p[j]=4>3,j--,j=1,p[j]=1<3,停止,此時i=2,j=1,因為(i>j),所以不交換,得2 1 4 3
此時i=2,j=1,將其分(left,j)和(i,right)兩部分,分別進行快速排序
即 2 1 排序,4 3 排序。分別依照程序步驟對這兩組數進行排序,可得
1 2 和 3 4,再結合上面的原有順序,即可有 1 2 3 4 的正確排序。

⑧ C語言或C++可以對漢字排序么

不容易。

用 GB2312_1980 國標碼,比較雙位元組數值大小。

常用字的數值小於不常用字。
常用字按ABCD漢語拼音次序排列的。好辦。

不常用字按筆劃多少排列的。姓名里有不常用字。麻煩在這里。

⑨ c語言按中文姓名排序問題

如果結構體對應的輸出都對的話,那基本沒錯,只有個花括弧括錯了,你排序的花括弧把輸出也括進去了!

⑩ c語言怎麼用姓名(漢字)進行排序

排序後輸出的:(是以字母表從小到大排)
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s[4]={"大軍","阿姨","弟弟","妹妹"},t;
for(int i=0;i<4;i++)
{
for(int j=i;j<4;j++)
{
if(s[i]>s[j])
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
}
for(i=0;i<4;i++)
cout<<s[i]<<endl;
return 0;
}