关于c语言中用复数的问题

前段时间电脑启动不了了,就重装了个系统。一直很懒,所以到现在还没装MATLAB,学自动化的没有MATLAB真的受不了,很多东西都不能写。

不过好在安装了VS2010,有因为一直觉得编程语言得学好一个,所以就复习复习C语言。至于之前雄心勃勃得想学会C++,QT,我觉得还是实在一些学学c语言吧。

时域频域的转换在MATLAB里面实在是太容易实现了,但是c语言就不是(对我来说)。没错,我想用c语言代替MATLAB做一些事情。

不过我遇到的麻烦很多,菜鸟总是很麻烦啊!

第一个问题是如何用c语言作图。(这是个大麻烦)

MATLAB只需要step,plot,stem等等一下子就画出来了,c语言做不到啊。上网查了一下,似乎只有TC才有作图功能,VS只好用什么MFC,GUI之类的。这和c++,QT倒是联系上了。总之觉得这部分会非常庞大,毫不犹豫的退缩了。

第二个问题就是复数

之前被教材误导了,觉得一定有一个头文件之类的可以在c中使用复数。c++里面好像有,因为我看到VS有头文件complex,里面好多class。总之没找到方法。

回头一想觉得还是有办法的。

我用了两种方法。
方法1:用数组
用两个元素的数组就可以轻松的表示一个复数。
方法2:看了一下VS2010里面的头文件complex,注意这里没有“.h”,因为对类还不是很熟悉,所以就只注意了一下头文件的前面一部分,但是给了我很大的启发,这里面用的是typedef自定义一个像结构体的类型,比如
typedef complex{
float re;
float im;
}comp;
这样就可以用了。如
comp a;
a.re=2;
a.im=3;
即:a=2+i3
不过有问题就是,写出来的程序虽然能够编译,能够build,甚至能够运行,依然有问题。我在程序里面用scanf()初始化变量,但是输数据到一半的时候,电脑告诉我程序停止运行。
不用scanf()的时候,程序能够正常运行。
没查出是是什么原因。Need your help.

### Visual Studio 2019 中使用 C 语言复数乘法 在 Visual Studio 2019 使用 C 语言实现两个复数相乘的功能可以通过定义一个结构体来存储复数的实部和虚部,并创建相应的函数来进行运算。 #### 定义复数结构体 为了表示复数,可以定义一个名为 `Complex` 的结构体,该结构体包含两个整型成员分别代表实部 (`real`) 和虚部 (`imaginary`): ```c typedef struct { int real; int imaginary; } Complex; ``` #### 创建复数乘法函数 接下来,定义一个用于执行复数乘法操作的函数。此函数接收两个 `Complex` 类型参数并返回一个新的 `Complex` 值作为结果: ```c Complex multiply(Complex a, Complex b) { Complex result; // (a+bi)(c+di)=(ac-bd)+(ad+bc)i result.real = a.real * b.real - a.imaginary * b.imaginary; result.imaginary = a.real * b.imaginary + a.imaginary * b.real; return result; } ``` #### 主程序逻辑 最后,在主函数中初始化两个复数值,调用上面编的乘法函数,并打印出最终的结果: ```c #include <stdio.h> // ... 上述 typedef 和 function prototype ... int main() { Complex num1 = {3, 4}; // 初始化第一个复数 3 + 4i Complex num2 = {-5, 6}; // 初始化第二个复数 -5 + 6i Complex product = multiply(num1, num2); // 执行乘法 printf("Product of %d+%di and %d+%di is %d+%di\n", num1.real, num1.imaginary, num2.real, num2.imaginary, product.real, product.imaginary); return 0; } ``` 这段代码展示了如何利用 C 语言中的结构体特性以及基本算法完成复数之间的四则运算之一——乘法的操作[^1]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值