C语言中的排序数组
我试图用C语言对数组大小进行排序,在这里发布之前,我已经对它进行了一些测试(我把测试语句留在了C语言中)。 我只得到一次正确答案,但它会将较高的值移到错误的数组中,即使我使用了IF语句 如果你们运行这个程序,对你们来说是有意义的C语言中的排序数组,c,arrays,if-statement,C,Arrays,If Statement,我试图用C语言对数组大小进行排序,在这里发布之前,我已经对它进行了一些测试(我把测试语句留在了C语言中)。 我只得到一次正确答案,但它会将较高的值移到错误的数组中,即使我使用了IF语句 如果你们运行这个程序,对你们来说是有意义的 #include <stdio.h> # define size 3 int sum(); main() { int a[size] = { 4, 2, 3 }; int temp, i, j, x; for (j = 0; j
#include <stdio.h>
# define size 3
int sum();
main() {
int a[size] = { 4, 2, 3 };
int temp, i, j, x;
for (j = 0; j < size; j++){
for (i = 1; i < size; i++){
for (x = 0; x < size; x++){
printf("%d", a[x]); //testing statement;
}
printf("\n");
if (a[j] > a[i]){
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
for (x = 0; x < size; x++){
printf("%d", a[x]);
}
getch();
}
#包括
#定义尺寸3
int sum();
main(){
inta[size]={4,2,3};
内部温度,i,j,x;
对于(j=0;ja[i]){
温度=a[j];
a[j]=a[i];
a[i]=温度;
}
}
}
对于(x=0;x
更改
for (i = 1; i < size; i++){
for(i=1;i
差不多
for (i = j + 1; i < size; i++) {
(i=j+1;i{
这样,您就可以将元素再次与
if(a[j]>a[i])进行比较了{
当您将i
重置为1
时,哪一个可以将它们移回?问题是什么?@e0k在数组中移动元素的要求不满足时,程序为什么要移动元素?请注意,您的打印不包括新行(因此数字都混在一起)并且永远不要识别正在打印的数组的哪个元素(因此很难知道打印是如何相关的)。您需要解决这个问题:printf(“a[%d]=%d\n”,x,a[x])
例如,尽管可能会有无止境的变化。最好是在一行上转储数组;它在处理小数字的小数组时工作得很好。至于移动问题,很可能是您的内部循环应该从i+1
索引;现在,您将比较a[2]
使用a[1]
并将a[2]
移动到a[1]
如果a[2]
大于a[1]。谢谢你的工作,但是我更感兴趣的是为什么答案是有效的。我比知识更需要解决问题。你能给我一个快速的解释为什么你的解决方案有效吗?我没有工作。@ BHJAT我已经试过了,考虑一下当你允许<代码> I <代码>时,在左手边和右边的是什么。在if
中j
的左侧。