复数相加结果好像溢出了

阿狸的小甜儿 2020-03-12 08:29:57
#include<stdio.h> struct complex { int re; int im; }; void add(struct complex a,struct complex b,struct complex *c) { c->re=a.re-b.re; c->im=a.im-b.im; } int main() { struct complex x,y,s; scanf("%d%d",&x.re,&x.im); scanf("%d%d",&y.re,&y.im); add(x,y,&s); printf("sum=%5d+%5di",s.re,s.im); } 哪个大佬救救孩子吧
...全文
69 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2020-03-12
  • 打赏
  • 举报
回复
原来的输入方法
scanf("%d%d",&x.re,&x.im);// 遇到1+2i的输入时候,x被正确输入了,但是缓冲区里面还留下了字母i
scanf("%d%d",&y.re,&y.im);// 这里因为第一个字母是i,所以这个y两个参数都没有正确获得
所以,后面的add的时候,y的值是未初始化的随机数, 结果就是你截图的那个德行了
阿狸的小甜儿 2020-03-12
  • 打赏
  • 举报
回复
引用 4 楼 寻开心的回复:
scanf("%d%di",&x.re,&x.im);
scanf("%d%di",&y.re,&y.im);
这样更好,输入
1-2i
10+8i
都可以了
可以了哇 谢谢你啊
寻开心 2020-03-12
  • 打赏
  • 举报
回复
scanf("%d%di",&x.re,&x.im);
scanf("%d%di",&y.re,&y.im);
这样更好,输入
1-2i
10+8i
都可以了
寻开心 2020-03-12
  • 打赏
  • 举报
回复
你要想输入1+2i这种形式,就要
struct complex x,y,s;
scanf("%d+%di",&x.re,&x.im);
scanf("%d+%di",&y.re,&y.im);

寻开心 2020-03-12
  • 打赏
  • 举报
回复
是你输入错了, 要输入:
1 2
1 2
结果就是2 + 4i了
阿狸的小甜儿 2020-03-12
  • 打赏
  • 举报
回复
#include<stdio.h> struct complex { int re; int im; }; void add(struct complex a,struct complex b,struct complex *c) { c->re=a.re+b.re; c->im=a.im+b.im; } int main() { struct complex x,y,s; scanf("%d%d",&x.re,&x.im); scanf("%d%d",&y.re,&y.im); add(x,y,&s); printf("sum=%5d+%5di",s.re,s.im); } 程序是这个 上面有点打错了

70,013

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧