我想做一个人名和它的名字的简单排名列表。该列表按照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
奇怪的是,名字现在正确显示,但他们没有排序。 –