霸气的灯塔 2023-11-05 12:13 采纳率: 60%
浏览 8

c语言变量赋值后再次调用的时候值改变了

请问为什么这个变量x2赋值成功了,然后执行一条语句后值就自己改变了啊

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-05 14:55
    关注

    【以下回答由 GPT 生成】

    问题分析: 在C语言中,数组的索引是从0开始的,而不是从1开始的。 在这段代码中,for循环的循环变量i的初始值是1,但实际上应该从0开始。这导致了数组x和y中的元素访问越界问题。当访问越界时,程序的行为是不确定的,可能会导致变量的值发生改变。

    解决方案: 要解决这个问题,你需要修改for循环的起始值和条件判断。

    #include <stdio.h>
    #include <math.h>
    
    int main() {
        int i;
        double c, x[3], y[3];
    
        for (i = 0; i < 3; i++) {  // 修改循环的起始值和条件判断
            scanf("%lf%lf", &x[i], &y[i]);  // 修改%1f为%lf
        }
    
        printf("%lf\n", x[1]);  // 修改索引为1
        c = sqrt(pow(x[0] - x[1], 2) + pow(y[0] - y[1], 2));  // 修改索引为0和1
        printf("%lf\n%lf\n", x[1], c);  // 修改索引为1
        c = c + sqrt(pow(x[0] - x[2], 2) + pow(y[0] - y[2], 2));  // 修改索引为0和2
        printf("%lf\n%lf\n", x[1], c);  // 修改索引为1
        c = c + sqrt(pow(x[1] - x[2], 2) + pow(y[1] - y[2], 2));  // 修改索引为1和2
        printf("%lf\n%lf\n", x[1], c);  // 修改索引为1
        printf("%.21lf", c);  // 修改%1f为%lf
    
        return 0;  // 返回0表示程序正常结束
    }
    

    这样修改之后,变量x[1]的值就不会再未赋值时改变了。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月5日

悬赏问题

  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 火车票关联12306问题
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算