gpt4 book ai didi

c - C 中指针的冒泡排序无法正常工作

转载 作者:行者123 更新时间:2023-11-30 14:59:26 24 4
gpt4 key购买 nike

我创建了一个带有指针的程序,该程序运行良好,但冒泡排序无法正常运行。有人可以帮助我并表明我做错了什么吗?仅使用数组时没有这个问题,但不知怎的,它在指针上却不能很好地工作。

#include <stdio.h>
#include <ctype.h>

main()
{
// Initializing pointer arrays
int i;
int ctr = 0;
char ans;
char * movies[5] = {"John Wick 2", "Kong: Skull Island", "Justice League",
"Mummies", "Thor: Ragnarok"};
int movierate[5];
int outer, inner, didSwap, temprate;
char * tempmovies = "This will be used to sort rated movies";

printf("***Oscar Movie Rating***\n");
printf("Time to rate this years best picture.\n");
for(i = 0; i < 5; i++)
{
printf("\nHave you seen %s?", movies[i]);
scanf(" %c", &ans);
if((toupper(ans)) == 'Y')
{
printf("Please rate the movie on a scale from 1-10. ");
scanf(" %d", &movierate[i]);
ctr++;
continue;
}
else
{
movierate[i] = -1;
}
}
for(outer = 0; outer < 4; outer++)
{
didSwap = 0;
for(inner = outer; inner < 5; inner++)
{
if(movierate[inner] > movierate[outer])
{
tempmovies = movies[inner];
temprate = movierate[inner];
movies[inner] = movies[outer];
movierate[inner] = movierate[outer];
movies[outer] = tempmovies;
movierate[outer] = temprate;
didSwap = 1;
}
}
if(didSwap == 0);
{
break;
}
}
for(i = 0; i < ctr; i++)
{
printf("\n%s rated a %d!", movies[i], movierate[i]);
}
return (0);
}

最佳答案

你的问题是这段代码:

if(didSwap == 0);
{
break;
}

考虑对这些数字进行排序:10 1 2 3 4

由于 10 是最大的数字,因此第一个外循环中不会有任何交换。因此,您将跳出外循环并保留其余数字未排序。

所以尝试删除上面的代码。

关于c - C 中指针的冒泡排序无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42745084/

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