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
钱四拍前面,或者说钱四 < 李三