You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言习题求助:实现x²-y²函数并打印x,y从-1到1的11x11网格

问题分析
  • 仅使用了单层循环:当前代码只有1层for循环,仅能输出单组x对应的11个y取值的计算结果,要生成11×11的网格必须使用双层循环,外层遍历所有x的取值,内层遍历每个x对应的所有y取值。
  • 变量使用不规范:变量x未初始化就被赋值给origX,origX、origY、count、update四个变量定义后全程未使用,属于冗余代码。
  • 输出格式不符合要求:使用%f\t作为输出格式,默认输出6位小数且制表符对齐效果不稳定,和示例中固定宽度保留2位小数的格式不匹配。
  • 未实现要求的独立函数:题目明确要求先定义返回x²-y²的函数再调用,现有代码没有封装对应的独立函数。
  • 浮点数精度问题:直接对浮点数做连续递减操作容易产生累计精度误差,更推荐用整数循环变量换算x、y的取值。
正确实现方案

首先封装要求的计算函数,再用双层循环遍历所有x、y的取值,控制输出格式即可:

#include <stdio.h>

// 实现题目要求的返回x² - y²的函数
double square_diff(double x, double y) {
    return x * x - y * y;
}

int main() {
    // 外层循环遍历x的取值,从1到-1每次减0.2,共11个值
    for (int i = 0; i < 11; i++) {
        double x = 1.0 - 0.2 * i;
        // 内层循环遍历y的取值,从1到-1每次减0.2,共11个值
        for (int j = 0; j < 11; j++) {
            double y = 1.0 - 0.2 * j;
            double res = square_diff(x, y);
            // 固定8位宽度,保留2位小数输出,和示例格式对齐
            printf("%8.2f", res);
        }
        // 每行输出完换行
        printf("\n");
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者Gtown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:06:03