用于气泡排序的C程序,至少使用4个函数。(输入,输出,计算,主)
printf
中没有scanf
或compute
。printf
中没有scanf
或main
compute
。compute
不应调用output
。 我还不太了解指针和函数。
#include <stdio.h>
void input(int* size, int* arr[])
{
printf("Enter the size of the array: ");
scanf("%d",size);
printf("Enter the elements of the array\n");
for(int i = 0;i < *size; i++)
{
scanf("%d", arr[i]);
}
}
void swap(int *x,int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
void bubble_sort(int arr[100],int size)
{
for(int i = 0;i < size - 1;i++)
{
for(int j = 0;j < size - 1 - i;j++)
{
if(arr[j] > arr[j+1])
{
swap(&arr[j],&arr[j+1]);
}
}
}
}
void output(int size,int* arr)
{
printf("Sorted array\n");
for(int i = 0;i < size;i++)
{
printf("%d",arr[i]);
}
}
int main()
{
int* input_values[50];
int size;
input(&size, input_values);
bubble_sort(size,*input_values);
output(size, *input_values);
return 0;
}
没有错误,但显示了细分错误。如何解决此问题?
答案 0 :(得分:0)
所以您的问题在这里:
scanf(" %d", arr[i]);
您必须将其更改为:
scanf(" %d", &arr[i]);
这是主要问题,但还有很多其他问题。 另外,您还必须更改
中的参数顺序bubble_sort(size,*input_values);
到
bubble_sort(input_values,size);
和
output(size, *input_values);
到
output(size, input_values);
为了使它完全起作用,我还更改了
scanf("%d", &arr[i]);
到
scanf(" %d", &arr[i]);
答案 1 :(得分:0)
实际上,您的代码充满了错误,例如使用scanf
以及使用指针和数组,以下是您可以查看和比较代码的可行版本:
#include <stdio.h>
void input(int* size, int arr[])
{
char chr;
printf("Enter the size of the array: ");
scanf( "%d%c", size, &chr );
printf("Enter the elements of the array\n");
for(int i = 0;i < *size; i++)
{
scanf("%d%c", &arr[i], &chr);
}
}
void swap(int *x,int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
void bubble_sort(int* size,int arr[])
{
for(int i = 0;i < *size - 1;i++)
{
for(int j = 0;j < *size - 1 - i;j++)
{
if(arr[j] > arr[j+1])
{
swap(&arr[j],&arr[j+1]);
}
}
}
}
void output(int* size,int arr[])
{
printf("Sorted array\n");
for(int i = 0;i < *size;i++)
{
printf("%d",arr[i]);
}
}
int main()
{
int input_values[50];
int s = 0;
int* size = &s;
input(size, input_values);
bubble_sort(size,input_values);
output(size, input_values);
return 0;
}