如何修复和调试并行数组冒泡排序程序?
How to fix and Debugging parallel array bubblesort program?
另一位编码员在没有明显原因的情况下添加了一堆指向我之前编写的代码的指针。这应该通过函数执行简单的冒泡排序。任何函数中的指针是否是必需的,尤其是年龄函数?我怎样才能让这个程序达到 运行?
#define SIZE 5
#include <stdio.h>
#include <string.h>
#include <stdio.h>
void input(char fullname[][25], int age[]);
void output(char fullname[][25], int age[]);
void bubblesortname(char fullname[][25], int *age, int size);
void bubblesortage(char fullname[], int *age, int size);
int main(int argc, char *argv[])
{
char fullname[SIZE][25];
int age[SIZE];
// promt user for names and ages
input(fullname, age);
//output unsorted names and ages
output(fullname, age);
bubblesortname(fullname,age,SIZE);
output(fullname, age);
//sorts age
bubblesortage(fullname,age,SIZE);
output(fullname, age);
return 0;
}
void input(char fullname[][25], int age[])
{
int i;
for (i = 0; i < SIZE; i++)
{
fflush(stdin);
printf("Enter a full name\n");
//scanf("%[\^n]\n", fullname[i]);
fgets (fullname[i],40, stdin);
printf("Enter the age\n");
scanf("%d", &age[i]);
}
}
void output(char fullname[][25], int age[])
{
int i;
for (i = 0; i < SIZE; i++)
printf("%s, %d\n", fullname[i], age[i]);
}
void bubblesortname(char fullname[][], int *age, int size)
{
int temp_age;
char* temp_name;
int j,i;
for (i = 0; i < SIZE - 1; ++i)
{
for (j = 0; i < SIZE - 1; ++j)
{
if (strcmp(fullname[j], fullname[j + 1]) > 0)
{
temp_age = age[i];
age[j] = age[j + 1];
age[j + 1] = temp_age;
temp_name = fullname[j];
fullname[j] = fullname[j + 1];
fullname[j + 1] = temp_name;
}
}
}
}
bubblesortage(char fullname[][], int *age, int size)
{
int j,i;
int temp_age;
char* temp_name;
char temp[25];
for (i = 0; i < size - 1; ++i)
{
for (j = 0; j < size - 1; ++j)
{
if (age[j] > age[j + 1])
{
strcpy(temp, fullname[<index1>]);
strcpy(fullname[index1], fullname[index2]);
strcpy(fullname[index2], temp);
temp_age = age[j];
age[j] = age[j + 1];
age[j + 1] = temp_age;
temp_name = fullname[j];
fullname[j] = fullname[j + 1];
fullname[j + 1] = temp_name;
}
}
}
}
Are the pointers in any of the functions necessary
如果你使用C,指针是必要的。在 C 中,字符串由指针表示。 C 中的数组也由指针表示。所以你无法避免它们。
但是如果你用c++,就没有必要了。您可以使用 std::vector
或任何其他最适合您任务的容器 class。
无论如何,没有必要多次重复冒泡排序实现。您可以像 qsort()
那样使用函数指针编写通用函数。
How can I get this program to run?
代码包含许多语法错误。您应该为 运行 修复它们。但不能保证代码能正常工作。
另一位编码员在没有明显原因的情况下添加了一堆指向我之前编写的代码的指针。这应该通过函数执行简单的冒泡排序。任何函数中的指针是否是必需的,尤其是年龄函数?我怎样才能让这个程序达到 运行?
#define SIZE 5
#include <stdio.h>
#include <string.h>
#include <stdio.h>
void input(char fullname[][25], int age[]);
void output(char fullname[][25], int age[]);
void bubblesortname(char fullname[][25], int *age, int size);
void bubblesortage(char fullname[], int *age, int size);
int main(int argc, char *argv[])
{
char fullname[SIZE][25];
int age[SIZE];
// promt user for names and ages
input(fullname, age);
//output unsorted names and ages
output(fullname, age);
bubblesortname(fullname,age,SIZE);
output(fullname, age);
//sorts age
bubblesortage(fullname,age,SIZE);
output(fullname, age);
return 0;
}
void input(char fullname[][25], int age[])
{
int i;
for (i = 0; i < SIZE; i++)
{
fflush(stdin);
printf("Enter a full name\n");
//scanf("%[\^n]\n", fullname[i]);
fgets (fullname[i],40, stdin);
printf("Enter the age\n");
scanf("%d", &age[i]);
}
}
void output(char fullname[][25], int age[])
{
int i;
for (i = 0; i < SIZE; i++)
printf("%s, %d\n", fullname[i], age[i]);
}
void bubblesortname(char fullname[][], int *age, int size)
{
int temp_age;
char* temp_name;
int j,i;
for (i = 0; i < SIZE - 1; ++i)
{
for (j = 0; i < SIZE - 1; ++j)
{
if (strcmp(fullname[j], fullname[j + 1]) > 0)
{
temp_age = age[i];
age[j] = age[j + 1];
age[j + 1] = temp_age;
temp_name = fullname[j];
fullname[j] = fullname[j + 1];
fullname[j + 1] = temp_name;
}
}
}
}
bubblesortage(char fullname[][], int *age, int size)
{
int j,i;
int temp_age;
char* temp_name;
char temp[25];
for (i = 0; i < size - 1; ++i)
{
for (j = 0; j < size - 1; ++j)
{
if (age[j] > age[j + 1])
{
strcpy(temp, fullname[<index1>]);
strcpy(fullname[index1], fullname[index2]);
strcpy(fullname[index2], temp);
temp_age = age[j];
age[j] = age[j + 1];
age[j + 1] = temp_age;
temp_name = fullname[j];
fullname[j] = fullname[j + 1];
fullname[j + 1] = temp_name;
}
}
}
}
Are the pointers in any of the functions necessary
如果你使用C,指针是必要的。在 C 中,字符串由指针表示。 C 中的数组也由指针表示。所以你无法避免它们。
但是如果你用c++,就没有必要了。您可以使用 std::vector
或任何其他最适合您任务的容器 class。
无论如何,没有必要多次重复冒泡排序实现。您可以像 qsort()
那样使用函数指针编写通用函数。
How can I get this program to run?
代码包含许多语法错误。您应该为 运行 修复它们。但不能保证代码能正常工作。