轻功水上漂zz 2024-08-16 18:05 采纳率: 59.4%
浏览 4
已结题

c语言数组小问题求解

为啥这个只有i==j被赋值为1了呀,不应该是所有都为1嘛??

img

  • 写回答

1条回答 默认 最新

  • 一直免费一直爽 2024-08-16 18:05
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    问题出在这段代码:

    a[i][j]=(i/j)*(j/i);
    

    在C语言中,/ 运算符表示整数除法,即结果为整数,小数部分会被舍去。因此,当 ij 不相等时,(i/j)(j/i) 的结果都为0,所以最终的乘积也为0。只有当 ij 相等时,(i/j)(j/i) 的结果才为1,所以只有对角线上的元素被赋值为1。

    如果你希望所有元素都被赋值为1,可以修改代码如下:

    a[i][j]=(i%j==0)*(j%i==0);
    

    这样,只有当 ij 相等时,(i%j==0)(j%i==0) 的结果才为1,所以最终的乘积也为1。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月24日
  • 已采纳回答 8月16日
  • 创建了问题 8月16日