gpt4 book ai didi

c - 循环初始化变量未正确分配

转载 作者:太空宇宙 更新时间:2023-11-04 08:22:50 24 4
gpt4 key购买 nike

我遇到了一个很奇怪的问题。我正在用 c 创建一个快速排序程序,每当我尝试在 for 循环中设置 i=start 时,它都没有正确分配。自己看看:

#include <stdio.h>
int n=0;
void display(int *arr)
{
int i;
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}

void swap(int *arr,int x, int y)
{
arr[x]=arr[x]+arr[y];
arr[y]=arr[x]-arr[y];
arr[x]=arr[x]-arr[y];
}

int partition(int *arr,int start,int end)
{
int i,pindex;
pindex=start;
for(i=start;i<end;i++);
{ printf("i=%d,start=%d,end=%d;",i,start,end); |
if(arr[i]<=arr[end])
{
swap(arr,i,pindex);
display(arr);
pindex++;
}
}
swap(arr,pindex,end);
display(arr);
return pindex;
}

void quicksort(int *arr,int start,int end)
{
int pindex;
if(start<end)
{
pindex=partition(arr,start,end);
printf("---------------------\n");
quicksort(arr,start,pindex-1);
quicksort(arr,pindex+1,end);
}
}

int main(int argc, char const *argv[])
{
int arr[51];
int i;
printf("Enter number of elements: ");
scanf("%d",&n);
printf("Enter elements:\n");
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
system("cls");
printf("\n Current array:\n ");
display(arr);
printf("\n Sorted array:\n ");
quicksort(arr,0,n-1);
display(arr);
return 0;
}

现在当我运行它时,我总是被分配到结束而不是开始。示例输出:

Current array:
1 7 4 2

Sorted array:
i=3,start=0,end=3;2 7 4 1
2 1 4 7
---------------------
i=3,start=2,end=3;2 1 7 4
2 1 7 0
---------------------
2 1 7 0

我被难住了。请帮忙。

最佳答案

在这一行中:

for(i=start;i<end;i++);    

去掉末尾的分号。

关于c - 循环初始化变量未正确分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32661288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com