m0_71915714 2022-07-29 10:42 采纳率: 0%
浏览 36

条件操作符--表达式必须是可修改的左值

问题背景是,写一个函数使一个数组中的奇数排在所有偶数前面

img

img


void print(int arr[],int sz)
{
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        printf("%d ", arr[i]);
    }
}
void move(int arr[], int sz)
{
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        if (!arr[i] % 2)
        {
            int j = sz-1;
            for (j = sz - 1; j > i; j--)
            {
                int tmp = 0;
                arr[j]%2==0 ? arr[j] : tmp = arr[j], arr[j] = arr[i], arr[i] = tmp;
            }
        }
    }
}
int main()
{
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    int sz = 0;
    sz = sizeof(arr) / sizeof(arr[0]);
    move(arr, sz);
    print(arr, sz);
}
  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-07-29 10:52
    关注

    if(!arr[i]%2)是有问题的,应该是if(!(arr[i]%2))
    你这个三目运算符有点莫名奇妙啊。如果arr[j]%2==0成立,那arr[j]是啥作用呢?你直接写if(arr[j]%2 != 0),然后进行数据交换不就好了吗?

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月29日

悬赏问题

  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题
  • ¥20 基于matlab的航迹融合 航迹关联 航迹插补
  • ¥15 用Matlab实现图中的光线追迹
  • ¥15 联想笔记本开机出现系统更新界面
  • ¥15 各位帮帮我 我不想重做系统
  • ¥30 微信小程序蓝牙数据透传