如何基于具有int值的同一数组按升序对字符数组进行排序?

基本上,用户将输入一个从1到10的唯一id号和一个用户名,他可以按任何顺序输入。我一直试图做的是将唯一的id号和用户名链接在一起,以升序打印出来,但它能够对id号进行排序,但不会对标记到id号的用户名进行排序

输入:
你的身份证是什么3.
你的名字叫什么?萝拉

你的身份证是什么2.
你的名字叫什么?普雷斯顿

你的身份证是什么1.
你的名字叫什么?基利安

预期输出:
身份证号码:1
你的名字:基里安

身份证号码:2
你的名字:普雷斯顿

身份证号码:3
你的名字:萝拉

给定输出:
身份证号码:1
你的名字:萝拉

身份证号码:2
你的名字:普雷斯顿

身份证号码:3
你的名字:基里安

作废myGameDetails(){
内部温度,i,j,k,温度;
如果(计数器>0){
对于(j=0;j<计数器;++j){
用于(k=j+1;k<计数器;++k){
if(userDetails[j].ID>userDetails[k].ID){
temp=userDetails[j].ID;
userDetails[j].ID=userDetails[k].ID;
userDetails[k].ID=temp;
}
}
}
用于(i=0;i<计数器;++i){
printf(“ID按升序排列\n”)
printf(“ID:%d\n”,userDetails[i].ID);
printf(“您的姓名:%s”,userDetails[i].name);
}
}
}

代码具有比较的ID

if(userDetails[j].ID>userDetails[k].ID)

如果在排序条件中,名称是ID的次要名称,则当ID相同时,也可以通过在上使用strcmp()来测试。name成员:

if(userDetails[j].ID>userDetails[k].ID||
(userDetails[j].ID==userDetails[k].ID&
strcmp(userDetails[j].Name,userDetails[k].Name)>0){

如果.ID是次要的,则调用strcmp()并保存其结果

int-scmp=strcmp(userDetails[j].Name,userDetails[k].Name);
如果(scmp>0||
(scmp==0&userDetails[j].ID>userDetails[k].ID)){

发表评论