C 语言程序设计实践 9.5 复数相加
来源:互联网 发布:js int to string 补0 编辑:程序博客网 时间:2024/05/29 19:40
AC代码:
#include <stdio.h> #include <math.h> #include <string.h> #define LEN strlen(arr) typedef int Place; int main() { char arr[30]; int i,len,Real=0,Imag=0,plus=0,minus=0,cnt_i=0; Place k_p,k_i,k_m[2],*p=k_m; while (~scanf("%s",arr)){ for (i=0;i<LEN;i++){ if (arr[i]=='+'){ plus++; k_p=i; }else if (arr[i]=='-'){ minus++; *p++=i; }else if (arr[i]=='i'){ cnt_i++; k_i=i; } } len=k_m[1]-1; if (plus==0&&minus==0&&cnt_i==0) for (i=0;i<LEN;i++)//555 Real+=(arr[i]-'0')*pow(10,LEN-i-1); else if (plus==0&&minus==0&&cnt_i==1){ if (LEN==1)//i Imag++; else{// 555i for (i=0;i<LEN-1;i++) Imag+=(arr[i]-'0')*pow(10,LEN-i-2); } } else if (plus==0&&minus==1&&cnt_i==0){//-555 for (i=1;i<LEN;i++) Real-=(arr[i]-'0')*pow(10,LEN-i-1); } else if (plus==0&&minus==1&&cnt_i==1){ if (k_m[0]==0){ if (LEN==2)//-i Imag--; else{//-555i for (i=1;i<LEN-1;i++) Imag-=(arr[i]-'0')*pow(10,LEN-i-2); } }else{ if (arr[LEN-2]=='-'){//555-i Imag--; for (i=0;i<k_m[0];i++) Real+=(arr[i]-'0')*pow(10,k_m[0]-i-1); }else{//555-555i for (i=0;i<k_m[0];i++) Real+=(arr[i]-'0')*pow(10,k_m[0]-i-1); for (i=k_m[0]+1;i<LEN-1;i++) Imag-=(arr[i]-'0')*pow(10,LEN-i-2); } } } else if (plus==1&&minus==0&&cnt_i==1){//555+555i OR 555+i if (arr[LEN-2]=='+'){//555+i Imag++; for (i=0;i<k_p;i++) Real+=(arr[i]-'0')*pow(10,k_p-i-1); }else{//555+555i for (i=0;i<k_p;i++) Real+=(arr[i]-'0')*pow(10,k_p-i-1); for (i=k_p+1;i<LEN-1;i++) Imag+=(arr[i]-'0')*pow(10,LEN-i-2); } } else if (plus==0&&minus==2&&cnt_i==1){//-555-555i OR -555-i if (arr[LEN-2]=='-'){//-555-i Imag--; for (i=1;i<k_m[1];i++) Real-=(arr[i]-'0')*pow(10,len-i); }else{//-555-555i for (i=1;i<k_m[1];i++) Real-=(arr[i]-'0')*pow(10,len-i); for (i=k_m[1]+1;i<LEN-1;i++) Imag-=(arr[i]-'0')*pow(10,LEN-i-2); } } else if (plus==1&&minus==1&&cnt_i==1){//-555+555i OR -555+i if (arr[LEN-2]=='+'){ Imag++; for (i=1;i<k_p;i++) Real-=(arr[i]-'0')*pow(10,k_p-1-i); } else{ for (i=1;i<k_p;i++) Real-=(arr[i]-'0')*pow(10,k_p-1-i); for (i=k_p+1;i<LEN-1;i++) Imag+=(arr[i]-'0')*pow(10,LEN-i-2); } } plus=0,minus=0,cnt_i=0,p=k_m; } if (Real==0&&Imag==0) printf("0\n"); else if (Real==0&&Imag==1) printf("i\n"); else if (Real==0&&Imag==-1) printf("-i\n"); else if (Real==0) printf("%di\n",Imag); else if (Real!=0&&Imag==0) printf("%d\n",Real); else if (Real!=0&&Imag==1) printf("%d+i\n",Real); else if (Real!=0&&Imag==-1) printf("%d-i\n",Real); else if (Real!=0&&Imag>0) printf("%d+%di\n",Real,Imag); else if (Real!=0&&Imag<0) printf("%d%di\n",Real,Imag); return 0; }
0 0
- C 语言程序设计实践 9.5 复数相加
- c++:复数相加
- C++:复数相加
- C语言实现两个复数相加
- C语言程序设计实践-C语言应用实践
- C 语言程序设计实践 3.1 ABS
- C 语言程序设计实践 3.2 Add
- C 语言程序设计实践 3.3 Area
- C 语言程序设计实践 3.4 Change
- C 语言程序设计实践 3.5 Compare
- C 语言程序设计实践 3.6 EAX
- C 语言程序设计实践 3.7 Judge
- C 语言程序设计实践 3.8 Volume
- C 语言程序设计实践 4.4 车牌号
- C 语言程序设计实践 4.5 四边形
- C 语言程序设计实践 5.1 得分
- C 语言程序设计实践 5.2 求和
- C 语言程序设计实践 5.3 素数
- C 语言程序设计实践 9.4 并列第一
- OC--对象模型与运行时
- 分数矩阵
- MAVEN教程--01安装|创建|解释
- 黑马程序员————Java基础语法部分之数组
- C 语言程序设计实践 9.5 复数相加
- 多媒体技术标准以及常见多媒体文件格式
- apue学习第六天——文件I/O(第三章)
- eclipse与myeclipse恢复已删除的文件和代码
- Qt5编写科学计算器碰到的一个问题
- Swift调用Objective-C
- Android程序员必备精品资源
- 互联网巨头介入P2P网贷的潜在风险
- HTTP协议