[数据结构]结构体练习之复数运算
时间:2022-07-22
本文章向大家介绍[数据结构]结构体练习之复数运算,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
算结构题练习题吧
Talk is cheap,show you the code.
#include<stdio.h>
#include<math.h>
#include<string.h>
typedef struct complex{
double real;
double virt;
}COM;
//复数求和的实现函数
COM summation(COM num1,COM num2){
COM result;
result.real=num1.real+num2.real;
result.virt=num1.virt+num2.virt;
return result;
}
//复数乘积的实现函数 (a+bi)*(c+di) = (ac-bd)+(bc+ad)i
COM multiplication(COM num1,COM num2){
COM result;
result.real= num1.real*num2.real-num1.virt*num2.virt;
result.virt= num1.virt*num2.real + num1.real*num2.virt;
return result;
}
//复数除法的实现 (a+bi)/(c+di)=(ac+bd)/(c2+d2) +((bc-ad)/(c2+d2))i
COM division(COM num1,COM num2){
COM result;
result.real=(num1.real*num2.real+num1.virt*num2.virt)/(num2.real*num2.real+num2.virt*num2.virt);
result.virt=(num1.virt*num2.real-num1.real*num2.virt)/(num2.real*num2.real+num2.virt*num2.virt);
return result;
}
// 将结果进行输出
void printResult(COM result){
double virtPart=fabs(result.virt);
char virtPartStr[100],realPartStr[100];
sprintf(virtPartStr,"%lf",virtPart);
sprintf(realPartStr,"%lf",result.real);
//清除末尾0,如将1.16000输出为1.16
for(int i=strlen(virtPartStr);i>0;i--){
if(virtPartStr[i]=='0'&&virtPartStr[i-1]!='0'){
virtPartStr[i]=' ';
break;
}
}
for(int i=strlen(realPartStr);i>0;i--){
if(realPartStr[i]=='0'&&realPartStr[i-1]!='0'){
realPartStr[i]=' ';
break;
}
}
//输出处理后的结果
if(result.real!=0){
if(result.virt<0){
printf("%s-i%s",realPartStr,virtPartStr);
}else if(result.virt>0){
printf("%s+i%s",realPartStr,virtPartStr);
}else{
int endIndex=strlen(realPartStr)-1;
realPartStr[endIndex]=' ';
printf("%s",realPartStr);
}
}else{
if((strcmp(virtPartStr,"0")==0)){
printf("-i%s",realPartStr,virtPartStr);
}else if(result.virt>0){
printf("+i%s",realPartStr,virtPartStr);
}else{
printf("0");
}
}
printf("n");
}
int main(){
printf("结构体 复数运算 By Titan!nn");
COM number1,number2,result;
// ----- <做加减运算> ------
//第一组测试 (7.7-8i)+(-2.3)
number1={7.7,-8};
number2={-2.3,0};
result=summation(number1,number2);
printf("(7.7-8i)+(-2.3) = ");
printResult(result);
//第二组测试 (0+0)
number1={0,0};
number2={0,0};
result=summation(number1,number2);
printf("(0+0) = ") ;
printResult(result);
//----- <做乘运算> ------
// (2+2i)*(3-1.55i)
number1={2,2};
number2={3,-1.55};
result=multiplication(number1,number2);
printf("(2+2i)*(3-1.55i) = ");
printResult(result);
//----- <做除运算> ------
// (7.5+2i)/(3.5+3i)
number1={7.5,2};
number2={3.5,3};
result=division(number1,number2);
printf("(7.5+2i)/(3.5+3i) = ") ;
printResult(result);
// 对于复数的读入和分离输出,只需要相应的取 COM的成员 real和virt即可.
}
- Linux权限管理
- 大白话 Promise,这到底是干啥用的?
- Make
- perf ,比较好的一个程序性能测试工具
- Linux shell 程序设计5——shell中一些特殊符号的用法总结
- Linux shell 程序设计4——shell变量
- 基于CallContextInitializer的WCF扩展导致的严重问题
- 1228-redux学习笔记(摘录) | WEB前端零基础课
- 在fedora下使用搜狗拼音输入法
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- 【1120-WEB零基础课】| 单例模式,下周要讲
- 使用gerrit作为代码评审工具
- 如何重构你的时间序列预测问题
- 【聊】我个人眼里的ReactJs生态系统
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 自研网关:多项目的swagger聚合功能
- Prometheus 如何做到“活学活用”,大牛总结的避坑指南
- 文档驱动 —— 表单组件(一):表单元素组件 优点缺点选择文本类的Inputcheck 多选value的类型问题
- Vue3.0源码结构分析
- 【每周一库】- cached - 缓存结构型、辅助函数记忆化
- meta生成器 —— 表单元素组件 meta表单代码meta的模板data变幻
- 不用写代码也能做表单 —— 加载meta即可 菜单表单加载json运行效果。ModelAbout
- 从0到1,手把手教你入门 etcd
- 数据结构:手把手带你了解 ”图“ 所有知识!(含DFS、BFS)
- 设计模式之单例模式
- AndroidStudio创建JNI 工程与调用
- Java 版植物大战僵尸思路和源码分享!
- 你好MyBatis 入门篇
- 你好MyBatis 中级篇
- 你好MyBatis 中高级篇