#define s(x) x*x 的计算方法

  1. 这是 C/C++ 里面的宏定义,在编译时,编译器会将其原样展开。

  2. 但是上面值得注意的是 如果调用时用的 s(2+3) 时,得到的并不是25,而是 2+3*2+3 = 11; 这就是所谓的原样展开,即先展开后计算。

  3. 所以为了避免上诉问题可以添加上括号,如下:

    #define s(x) ((x)*(x))


#include<stdio.h>
#define s(x) 4*(x)*x+1
main()
{int k=5,  j=2;
printf("%d\n",s(k+j));
}


#define s(x) 4*(x)*x+1  的意思是定义s(x)= 4*(x)*x+1这个函数,不过你要注意括号,后面这个X没括号算的时就不能加括号,因此S(K+J)= 4*(5+2)*5+2+1=143

  • 21
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,代码中使用了未定义的变量 `BB`,需要在代码中定义和初始化该变量。其次,代码中使用了一些 C++ 头文件,但是又使用了 C 的函数库,需要统一使用 C++ 的函数库。 修改后的代码如下: ```c++ #include <iostream> #include <cmath> using namespace std; #define f(x) (2*(x)*(x)*(x)-(x)-1) #define f1(x) (((x)+1)/2.0) #define TG 7 #define Max 100 double BB[TG][TG] = {}; // 初始化 BB 矩阵为 0 double F[TG], F1[TG]; int change; double X[Max+1]; double highf, lengthf; double s; void Deidai() { int i, j, k, k1; double i1, s; int mid2; int Time; // 构造单元矩阵 for (i = 0; i < TG; i++) { for (j = 0; j < TG; j++) { if (i == j) { BB[i][j] = 1; } } } // 进行线性变换 for (k = 0; k < TG; k++) { if (BB[k][k] == 0) { change = 1; for (i = k + 1; i < TG; i++) { if (BB[i][k] != 0) { for (j = k; j < TG; j++) { BB[k][j] += BB[i][j]; } break; } } } i1 = BB[k][k]; for (j = k; j < TG; j++) { BB[k][j] /= i1; } for (i = k + 1; i < TG; i++) { i1 = BB[i][k]; for (j = k; j < TG; j++) { BB[i][j] -= i1 * BB[k][j]; } } } for (k = TG - 1; k >= 0; k--) { for (i = 0; i < k; i++) { i1 = BB[i][k]; for (j = k; j < TG; j++) { BB[i][j] -= i1 * BB[k][j]; } } } } int main() { int i, j, k, I, J; Deidai(); for (i = 1; i <= Max; i++) { s = f1(X[i-1]); X[i] = pow(s, 1/3.0); printf("X[%d] = %f\n", i, X[i]); } return 0; } ``` 代码的主要功能是构造一个单元矩阵 `BBN[TG][TG]`,然后让 `BB[TG][TG]` 在一系列的线性变换下变为单元矩阵,最终得到 `BBN[TG][TG]` 就是 `BB[TG][TG]` 的逆矩阵。 其中,`Deidai()` 函数用于实现矩阵变换,`main()` 函数用于计算并输出 `X` 数组的值。 需要注意的是,在计算 `X[i]` 的值时,应该使用 `X[i-1]` 的值,而不是 `X[i]` 的值。另外,输出 `X[i]` 时应该使用 `%f` 而不是 `%d`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值