已知某公司設計部人員如下表所示,請選用一種存盤結構將其進行存盤,并選用一種排序演算法按照工號為關鍵字進行遞增排序。
工號 性別 姓名
23 男 投訓
12 男 宜豐
45 女 張小花
18 男 李超
18 女 萬思思
77 女 吳方
4 男 劉一明
96 男 鄧偉
大佬們該題是資料結構好像要用索引表或者鏈接表,但是我不知道該怎么寫,求助大佬們感謝萬分
uj5u.com熱心網友回復:
用你屬性的,陣列就好,沒有說一定要鏈表uj5u.com熱心網友回復:
用個結構體陣列就可以typedef struct staff { //定義結構體
int id;
char gender[8];
char name[20];
} STA;
STA stas[]={ //定義一個陣列
{23, “男”, “投訓”},
{12, “男”, “宜豐”},
...
{96, “男”, “鄧偉”}
};
uj5u.com熱心網友回復:
感謝大佬。。
uj5u.com熱心網友回復:
十分感謝大佬
uj5u.com熱心網友回復:
大佬如果需要用里面的數字比較大小排序該怎么做呢?
uj5u.com熱心網友回復:
定義個臨時結構體,然后用學號排序
STA temp;
然后回圈排序
if (stas[i].id < stas[i+1])
{
temp = stas[i];
stas[i] = stas[i+1];
stas[i+1] = temp;
}
uj5u.com熱心網友回復:
用個結構體陣列就可以
typedef struct staff { //定義結構體
int id;
char gender[8];
char name[20];
} STA;
STA stas[]={ //定義一個陣列
{23, “男”, “投訓”},
{12, “男”, “宜豐”},
...
{96, “男”, “鄧偉”}
};
大佬如果需要用里面的數字比較大小排序該怎么做呢?
定義個臨時結構體,然后用學號排序
STA temp;
然后回圈排序
if (stas[i].id < stas[i+1])
{
temp = stas[i];
stas[i] = stas[i+1];
stas[i+1] = temp;
}
大佬我有個問題,他們里面有字串,不會影響比較嘛,感謝


uj5u.com熱心網友回復:
不影響啊,符合條件的直接交換結構體了uj5u.com熱心網友回復:
不影響啊,符合條件的直接交換結構體了
okk謝啦大佬
uj5u.com熱心網友回復:
不影響啊,符合條件的直接交換結構體了
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct staff{//定義結構體
int id ;
char gender[8];
char name[20];
}STA;
STA stas[]={//定義一個陣列
{23,"男","投訓"},
{12,"男","宜豐"},
{45,"女","張小花"},
{18,"男","李超"},
{18,"女","萬思思"},
{77,"女","吳方"},
{4,"男","劉一明"},
{96,"男","鄧偉"}
};
int main(){
STA temp;
int i;
for(i=0;i<=7;i++)
{
if(stas[i].id>stas[i+1].id)
{
temp=stas[i];
stas[i]=stas[i+1];
stas[i+1]=temp;
}
printf("%c\n",stas[i] );
}return 0;
}
大佬我這個代碼錯了他輸出只輸出了數字





uj5u.com熱心網友回復:
把你的代碼修改了一下,參考
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//定義結構體
typedef struct staff
{
int id ;
char gender[8];
char name[20];
}STA;
//定義一個陣列
STA stas[]={
{23,"男","投訓"},
{12,"男","宜豐"},
{45,"女","張小花"},
{18,"男","李超"},
{18,"女","萬思思"},
{77,"女","吳方"},
{4,"男","劉一明"},
{96,"男","鄧偉"},
};
int main()
{
STA temp;
int i,j;
for(i=0; i<8; i++)
{
for (j=0; j<8-1-i; j++)
{
if(stas[j].id>stas[j+1].id)
{
temp=stas[j];
stas[j]=stas[j+1];
stas[j+1]=temp;
}
}
}
printf("\n學號\t性別\t姓名\n");
for (i=0; i<8; i++)
{
printf("%d\t%s\t%s\n",stas[i].id, stas[i].gender, stas[i].name);
}
return 0;
}
uj5u.com熱心網友回復:
把你的代碼修改了一下,參考
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//定義結構體
typedef struct staff
{
int id ;
char gender[8];
char name[20];
}STA;
//定義一個陣列
STA stas[]={
{23,"男","投訓"},
{12,"男","宜豐"},
{45,"女","張小花"},
{18,"男","李超"},
{18,"女","萬思思"},
{77,"女","吳方"},
{4,"男","劉一明"},
{96,"男","鄧偉"},
};
int main()
{
STA temp;
int i,j;
for(i=0; i<8; i++)
{
for (j=0; j<8-1-i; j++)
{
if(stas[j].id>stas[j+1].id)
{
temp=stas[j];
stas[j]=stas[j+1];
stas[j+1]=temp;
}
}
}
printf("\n學號\t性別\t姓名\n");
for (i=0; i<8; i++)
{
printf("%d\t%s\t%s\n",stas[i].id, stas[i].gender, stas[i].name);
}
return 0;
}
感謝大佬

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/44309.html
標籤:C語言
上一篇:關于c語言long long型別
下一篇:qt實作 函式繪制
