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

把姓名按照字母順序排序c語言

發布時間: 2023-07-08 12:49:41

㈠ 用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語言編制輸入姓名後按字母順序排列

試了試,可以排序啊。有幾個簡單的錯誤不知道是不是因為你提問時打錯了。第一個,printf提示是不能直接用漢語的吧。還有就是if(strcmp(name[min],name[j]>0))括弧加的不大對,if(strcmp(name[min],name[j])>0)然後,我輸入就可以了。什麼內存錯誤,沒有發現。如果有問題,請及時補充。

㈢ 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語言怎麼用姓名(漢字)進行排序

排序後輸出的:(是以字母表從小到大排)
#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;
}

㈤ 如何用C++實現對姓名按拼音排序

這里的要點在ASCII值,每個字母都有對應的ASCII值,所以只需比較姓名的ASCII值就可以了(如果按照abc的順序排列就是按照ASCII值從小到大排列),
#include <string.h>
#include <iostream.h>
void main()
{

char str[4][10]={"ccc","aaa","bbb","ddd"};//定義四個字元串
char *p[4];
for(int y=0;y<4;y++)
{
p[y]=str[y];
}
for(int i=0;i<3;i++)
{
for(int j=i+1;j<4;j++)
{
char temp[10];
if(*p[i]>*p[j])//比較str[i]和str[j]的ASCII值大小
{
temp[10]=*p[i];//將str[i]賦給temp[10]
*p[i]=*p[j];
*p[j]=temp[10];
}
}

}
for(int k=0;k<4;k++)
cout<<str[k]<<endl;
}