-1
好吧,用戶輸入名稱和年齡。輸出需求按升序打印。我已經完成了冒泡排序,但我不知道如何跟蹤名稱的年齡。一種排序方法比另一種排序方法更好還是更簡單?使用C中的子程序排序並行數組的最佳或最有效的方法?
好吧,用戶輸入名稱和年齡。輸出需求按升序打印。我已經完成了冒泡排序,但我不知道如何跟蹤名稱的年齡。一種排序方法比另一種排序方法更好還是更簡單?使用C中的子程序排序並行數組的最佳或最有效的方法?
而不是使用一堆數組,您可以將所需的所有東西放入struct
,製作一組structs
。例如:
struct user {
char name[100];
int age;
};
struct user user_array[100];
或者,如果你不想改變整個代碼,只是做一個交換功能somwhere,並在您的排序算法,而不是直接交換的元素,只需要調用一個交換功能。例如,假設你有
char name[100][100];
int age[100];
的交換功能將類似於
void swap_users(int a, int b, char ** name, int * age)
{
int age_tmp;
char *name_tmp;
age_tmp = age [a]; age [a] = age [b]; age [b] = age_tmp;
name_tmp = name[a]; name[a] = name[b]; name[b] = name_tmp;
}
而且你的排序算法看起來像:
void some_sorting_algorithm()
{
// do something ...
// do something ...
// maybe some loop? ...
swap_users(x, y, name, age);
// continue the loop or doing something
}
PS:希望我理解你的問題正確。
我喜歡這個交換功能,但我不知道我理解它。你能解釋星號嗎?指針? – IdislikeCalot
聲明中的星號表示它是指向類型的指針。從技術上講,數組是一個指針。例如,'int * age' - > age是一個指向整數的指針,'int age [100]' - > age也是一個指向整數'char ** name' - >的指針,所以name是一個指向指針的指針char(在聲明中'char name [100] [100]' - > name也是指向char的指針)。 – FalconUA
建議:寧可使用100和100的名字大小和user_array大小,使用2個不同的常量:更容易讓新人跟隨你的好例子/ – chux