我想做一個人名和它的名字的簡單排名列表。該列表按照Id排序,按升序排列。如何在C中輸出正確名稱的排序列表?
我輸入的輸入是:
Enter: Id Name (5 time)
9 Ace
5 Bob
6 Cindy
7 Dean
2 Erik
我希望得到的輸出是
Sorted id is...
2 Erik
5 Bob
6 Cindy
7 Dean
9 Ace
目前的結果我得到的是
Sorted id is...
2 ABCDErik
5 BCDErik
6 CDErik
7 DErik
9 Erik
下面是我的代碼目前正在使用。這是一個冒泡排序功能:
int sorting(int n, int *array)
{
int temp;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < (n - i - 1); j++)
{
if (array[j] > array[j + 1])
{
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
而我的主要程序:
int main()
{
int i, j, temp;
int num = 5;
int *id = (int *) malloc(sizeof(int) * 5);
char *name = malloc(sizeof(char) * 10);
printf("Enter: Id Name (5 time) \n");
for (i = 0; i < num; i++)
{
scanf("%d %s", &id[i], &name[i]);
}
sorting(num, id);
printf("Sorted id is...\n");
for (i = 0; i < num; i++)
{
printf("%d \t %s \n", id[i], &name[i]);
}
free(id);
free(name);
return 0;
}
有沒有一種方法,使「鏈接」,其ID正確的名稱?
是stringcount和MAXLEN是固定的數字還是他們varried? –
malloc你可以使用可變緩衝區大小 其他兩個應該是固定大小,雖然gcc允許在堆棧上動態分配數組,就像你在代碼中做的那樣。 – bbonev
奇怪的是,名字現在正確顯示,但他們沒有排序。 –