1. c語言程序設計 姓名排序
k==i 說明排序前k,i指向一個人的id,排序後還是指向一個人,所以沒必要交換
strcmp(name[k],name[j])>0 strcmp 字元串比較函數,
這是一個選擇排序演算法,每趟求出最大人名的下標,並交換
2. 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;
}
3. c語言關於姓名排序程序
void paixu_xingming(Student stud[],int n)
{
int p,q,i;
Student temp;
for(p=0;p<n-1;p++)
{
i=p;
for(q=p+1;q<n;q++)
{
if(strcmp(stud[i].name,stud[q].name)>0) /*選擇法按姓名排序*/
{
temp=stud[i];
stud[i]=stud[q];
stud[q]=temp;
}
}
}
4. c語言姓名首字母排序問題
按照C語言語法,main函數須為void類型;另外,你所編輯的程序段沒有輸入。就排序方式來講你所用的是函數的址傳遞及字元串比較大小的函數,這點沒有錯誤;就理解而言strcmp函數的確可以實現你所需的功能,其大小的比較式按ASCⅡ碼值進行的比較,不知道你有沒有意識到。
5. 如何用C語言實現一串中文姓名的排序(首字筆畫或者字母)
數組的第一位設置成筆畫數,第二位設置成首字母,排序時根據需要選擇,輸出時從第三位輸出。
char *name="4w王";
6. 求高人指教,C語言中,漢字姓名怎麼按字典順序排列
字典是按照拼音排序的,沒有現成的拼音排序功能。
你可以自己做鍵值表對應啊。就是做數據,把百家姓和其拼音組合對應的表,可以用文件存儲,也 可以用資料庫存儲,或者乾脆直接寫在代碼了,用結構數組或鏈表載入。
然後需要排序的時候,直接用結構數組或鏈表排序啊。
如果你除了姓,連名字都要算在排序中,那你得把整個漢字字典的文字都做成鍵值表,別人起名字用什麼字,誰能知道。那你這就純粹是數據問題了。
我剛才試了一下網路搜索,網路文庫里有現成的漢字拼音對照表,你可以試試,全不全我就不知道了。
7. 利用c語言編制輸入姓名後按字母順序排列
試了試,可以排序啊。有幾個簡單的錯誤不知道是不是因為你提問時打錯了。第一個,printf提示是不能直接用漢語的吧。還有就是if(strcmp(name[min],name[j]>0))括弧加的不大對,if(strcmp(name[min],name[j])>0)然後,我輸入就可以了。什麼內存錯誤,沒有發現。如果有問題,請及時補充。
8. c語言按中文姓名排序問題
#include <stdio.h>
void sort_name(Staff *p) {
int i,j,max;
Staff b;
for(i = 0;i < T - 1;i++) { // 應該是T - 1,不是T
max = i;
for(j = i + 1;j < T;j++) {
if(strcmp((p + max)->name,(p + j)->name) > 0)
max = j;
}
if(max != i) {
b = *(p + max);
*(p + max) = *(p + i);
*(p + i) = b;
}
} // 這兒添加了"}"
for(i = 0;i < T;i++) {
printf("%s ",(p + i)->id);
printf("%s ",(p + i)->name);
printf("%s ",(p + i)->sex);
printf("%d %d %d ",(p + i)->data.year,(p + i)->data.month,(p + i)->data.day);
printf("%.2lf ",(p + i)->post_wage);
printf("%.2lf ",(p + i)->subsidies);
printf("%.2lf ",(p + i)->withholding);
putchar('\n');
}
}
9. C語言 數組存放名字並排序
#include<stdio.h>
#include<string.h>
#include<math.h>
struct st{//這是自定義的一個結構體,下面是兩個成員;
char a[22];//名字儲存在a數組中;
int b; //分數儲存在b中;
};
int main()
{//struct st 不要忘了,否則c[111]就是一個沒有定義的無效數組;
struct st c[111];//這是對結構體的引用;c數組中每個單位都包括上面的兩個成員;
int n,t;
char d[111];
scanf("%d",&n);//輸入n位人數;
getchar();//在輸入一個數字之後按回車再輸入字元,不加getchar();後面輸出的字元會丟失;進而編譯錯誤;別問我為什麼知道,都在「淚」里;
for(int i=0;i<n;i++)//循環賦值
{
scanf("%s%d",c[i].a,&c[i].b);
}
for(int i=0;i<n;i++)//先來一冒泡排序;
{
for(int j=0;j<n-i-1;j++)
{
if(c[j].b>c[j+1].b)//比較結構體成員b的大小;
{
t=c[j].b;
c[j].b=c[j+1].b;//上面條件成立,數值交換;
c[j+1].b=t;
strcpy(d,c[j].a);//strcpy(a,b)字元復制粘貼函數,b→a;字元串不能用=賦值;
strcpy(c[j].a,c[j+1].a);//上面if成立成績b對應的名字交換;
strcpy(c[j+1].a,d);
}
}
}
printf(" ");
for(int i=0;i<n;i++)//循環列印排序後的人名和成績;
{
printf("%s %d ",c[i].a,c[i].b);
}
return 0;
}
根據你的描述,這是大致代碼;可能有些瑕疵,你根據原題再做修改,希望能幫到你;望採納;
10. C語言將姓名按百家姓排序。
做一個百家姓數組,比如arr[100] = {"趙「,」錢「,」孫「,」李「..};
然後姓名比較:比如 李三, 錢四
那麼在arr[100] 中查找李, 小標是3,
同理查找錢,小標是1,
1 < 3
錢四拍前面,或者說錢四 < 李三