-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