#include<stdio.h>
int main()
{
for(;;)//本循环未指定循环次数,可以无限循环
{
int n,i,j;
printf("Please enter n:\n");
scanf("%d",&n);
struct item
{
int Wi;
int Pi;
}a[n],t;
printf("Please enter mass and amount:\n");
for(i=0;i<n;i++)
{
scanf("%d %d",&a[i].Wi,&a[i].Pi);
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j].Wi>a[j+1].Wi)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("The array of mass rising is: \n");
for(i=0;i<n;i++)
{
printf("%dg %dyuan\n",a[i].Wi,a[i].Pi);
}
}
return 0;
}
已经编好按质量升序排序的代码,我想在if里面套if来实现质量相同按价格降序,但是程序运行结果出现错误。试问该在哪里加上什么样的代码实现质量相同按价格降序?
现有n件物品,每件物品有质量和价格两种属性。需要将物品按质量升序排序,若质量相同则按价格降序排序
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- qzjhjxj 2022-05-23 23:14关注
修改如下,供参考:
#include<stdio.h> int main() { for(;;)//本循环未指定循环次数,可以无限循环 { int n,i,j; printf("Please enter n:\n"); scanf("%d",&n); struct item { int Wi; int Pi; }a[10],t; printf("Please enter mass and amount:\n"); for(i=0;i<n;i++) { scanf("%d %d",&a[i].Wi,&a[i].Pi); } for(i=0;i<n-1;i++) { for(j=0;j<n-i-1;j++) { if(a[j].Wi>a[j+1].Wi) { t=a[j];a[j]=a[j+1];a[j+1]=t; } else if(a[j].Wi == a[j+1].Wi && a[j].Pi < a[j+1].Pi) { t=a[j];a[j]=a[j+1];a[j+1]=t; } } } printf("The array of mass rising is: \n"); for(i=0;i<n;i++) { printf("%dg %dyuan\n",a[i].Wi,a[i].Pi); } } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 Revit2020下载问题
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
- ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
- ¥15 Oracle中如何从clob类型截取特定字符串后面的字符