#include<stdio.h>
#include<stdlib.h>
int main()//程序目的:将所有数字中奇数从大到小排序,偶数从小到大排序,奇数在前,偶数在后
{
int n, * p,i=0,j=0,k=0,temp,min=0;
scanf_s("%d", &n);
p =(int*) malloc(sizeof(int) * n);
if (p == NULL) exit(0);
for (i = 0; i < n; i++)
scanf_s("%d", p + i);
for(i=0;i<n;i++)
for (j = 0; j < n - i-1; j++)
if((p+j)<*(p+j+1))
{
temp = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = temp;
}//冒泡排序将所有数由大到小排序
for (i=n-1; i >= 0; i--)
{
if ((p + i) % 2 == 0) min = (p + i);
break;
}//记录最小的偶数
printf("%d", min);
i = 0; j = 0;
while((p + i) != min)//不是最小偶数时执行以下程序
{
if(*(p + i) % 2 == 0)//如果是偶数将其移动到目标位置其余所有数前移
{
for (j = i; j < n-k-i - 1; j++)
{
temp = *(p + j);
*(p + j) = *(p + j + 1);
(p + j + 1) = temp;
}
k++;
}
if ((p + i) % 2 != 0) i++;//如果是奇数,跳到下一个数
}
for (i = 0; i < n; i++)
printf("%d ", *(p + i));
free(p);
return 0;
}
我这个代码哪里不对了呢,求解答
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- a5156520 2022-03-07 19:24关注
应该是排序偶数的那一段代码,出了问题,发现偶数就把他交换到下一个数,似乎不能达到排序偶数的目的,改了一下,如下:
#include<stdio.h> #include<stdlib.h> int main()//程序目的:将所有数字中奇数从大到小排序,偶数从小到大排序,奇数在前,偶数在后 { int n, * p,i=0,j=0,k=0,temp,min=0; scanf("%d", &n); p =(int*) malloc(sizeof(int) * n); if (p == NULL) exit(0); for (i = 0; i < n; i++) scanf("%d", p + i); for(i=0;i<n;i++) for (j = 0; j < n - i-1; j++) if(*(p+j)<*(p+j+1)) { temp = *(p + j); *(p + j) = *(p + j + 1); *(p + j + 1) = temp; } //冒泡排序将所有数由大到小排序 // for (i=n-1; i >= 0; i--) // { // if (*(p + i) % 2 == 0) min = *(p + i); // break; // }//记录最小的偶数 // // printf("%d", min); // i = 0; j = 0; for(i=0;i<n;i++){ if(*(p+i)%2==0){ for(j=n-1-k;j>=0;j--){ if(*(p+j)%2==0){ *(p+j)=*(p+i); break; } } } } // while(*(p + i) != min)//不是最小偶数时执行以下程序 // { // if(*(p + i) % 2 == 0)//如果是偶数将其移动到目标位置其余所有数前移 // { // for (j = i; j < n-k-i - 1; j++) // { // temp = *(p + j); // *(p + j) = *(p + j + 1); // *(p + j + 1) = temp; // } // k++; // } // // if (*(p + i) % 2 != 0) // i++;//如果是奇数,跳到下一个数 // } // for (i = 0; i < n; i++) printf("%d ", *(p + i)); free(p); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 stm32代码移植没反应
- ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
- ¥100 连续两帧图像高速减法
- ¥15 组策略中的计算机配置策略无法下发
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
- ¥50 mac mini外接显示器 画质字体模糊