一.编程实现两个复数的运算。设有两个复数 和 ,则他们的运算公式为:
要求:(1)定义一个结构体类型来描述复数。
(2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。
(3)必须使用结构体指针的方法把函数的计算结果返回。
说明:用户输入:运算符号(+,-,*,/) a b c d.
输出:a+bi,输出时不管a,b是小于0或等于0都按该格式输出,输出时a,b都保留两位。
输入:
- 2.5 3.6 1.5 4.9
输出:
1.00+-1.30i
要求:(1)定义一个结构体类型来描述复数。
(2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。
(3)必须使用结构体指针的方法把函数的计算结果返回。
说明:用户输入:运算符号(+,-,*,/) a b c d.
输出:a+bi,输出时不管a,b是小于0或等于0都按该格式输出,输出时a,b都保留两位。
输入:
- 2.5 3.6 1.5 4.9
输出:
1.00+-1.30i
#include <iostream>
#include <stdlib.h>
#include <iomanip>
using namespace std;
double a,b,c,d;
struct Num
{
double m;
double n;
};
Num * add()
{
Num * ans = new Num;
ans->m = a + c;
ans->n = b + d;
return ans;
}
Num * sub()
{
Num * ans = new Num;
ans->m = a - c;
ans->n = b - d;
return ans;
}
Num * mul()
{
Num * ans = new Num;
ans->m = a * c - b * d;
ans->n = a * d + b * c;
return ans;
}
Num * div()
{
Num * ans = new Num;
double tp = c * c + d * d;
ans->m = (a * c + b * d) / tp;
ans->n = (b * c - a * d) / tp;
return ans;
}
int main()
{
char ch;
Num * ans = new Num;
cin >> ch >> a >> b >> c >> d;
switch(ch)
{
case '+':
{
ans = add();
break;
}
case '-':
{
ans = sub();
break;
}
case '*':
{
ans = mul();
break;
}
case '/':
{
ans = div();
break;
}
default: break;
}
cout<<setiosflags(ios::fixed)<<setprecision(2);
cout << ans->m << "+" << ans->n << "i" << endl;
system("pause");
return 0;
}
注意点: 为避免野指针,需分配空间给结构体指针,Num * ans = new Num;
使用cout 输出有限保留位数的小数
头文件 #include <iomainip>
再输出前加上 cout << setiosflags(ios::fixd) << setprecision(2);
二.问题描述
编写一函数lcm,求两个正整数的最小公倍数。
样例输入
一个满足题目要求的输入范例。
例:
3 5
例:
3 5
样例输出
与上面的样例输入对应的输出。
例:
例:
数据规模和约定
输入数据中每一个数的范围。
例:两个数都小于65536。
例:两个数都小于65536。
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int a, b, c, m, n;
cin >> a >> b;
m = a;
n = b;
while(b != 0)
{
c = a % b;
a = b;
b = c;
}
cout << m * n / a << endl;
system("pause");
return 0;
}
注意:最大公倍数 = 两数乘积/最大公约数