当前位置:文档之家› C++实现的复数计算器(完整版源代码)

C++实现的复数计算器(完整版源代码)

C++实现的复数计算器(完整版源代码)
C++实现的复数计算器(完整版源代码)

/************************************************************************ *《C++程序设计实践指导》

*

* 第2章 2.1 一个复数计算器程序

*

* (c) yrmuhon, 2009 2.9

************************************************************************/

#include

#include

#include

#include

#include

#include

//#define EPS len-5 // 定义精度常数

using namespace std;

namespace NameCComplex // 定义命名空间NameCComplex

{

/*-----------------------------------------------------------------------

|部分A:

| 复数类CComplex的声明和定义,以及结构体类型用户User 的定义

|

----------------------------------------------------------------------*/

/*---------------------------------

| 复数类CComplex的声明

--------------------------------*/

classCComplex

{

private:

double Real, Image; // 分别为复数的实部和虚部

public:

CComplex(double real=0, double image=0) // 构造函数

{

Real = real; Image = image;

}

friend istream& operator >> (istream& is, CComplex& com); // 重载输入

friend ostream& operator << (ostream&os, CComplex& com); // 重载输出

CComplex operator + (CComplex& com); // 加法重载

CComplex operator - (CComplex& com); // 减法重载

CComplex operator * (CComplex& com); // 乘法重载

CComplex operator += (CComplex& com); // 加法赋值重载

CComplex operator -= (CComplex& com); // 减法赋值重载

CComplex operator *= (CComplex& com); // 乘法赋值重载

CComplex operator ++ (); // 自加

CComplex operator -- (); // 自减

double mod(void);

int operator > (CComplex& com);

int operator < (CComplex& com);

int operator != (CComplex& com);

int operator == (CComplex& com);

};

/*------------------------------------

| 结构体类型用户User 的定义

-----------------------------------*/

struct User

{

char szName[20]; // 用户名

intnTime; // 使用次数

intnTest; // 测试次数

double dlAve; // 平均成绩

intnAdd; // 加法次数

intnSub; // 减法次数

intnMul; // 乘法次数

double dlScore[3]; // 3次测试得分

} user;

/*---------------------------------------------------------------

| 复数类CComplex的类外定义部分

---------------------------------------------------------------*/

// 重载运算符“++”,实部与虚部均加1

CComplexCComplex::operator ++ ()

{

Real++;

Image++;

return *this;

}

// 重载运算符“--”,实部与虚部均减1

CComplexCComplex::operator -- ()

{

Real--;

Image--;

return *this;

}

// 求复数的模,返回实部^2 + 虚部^2

doubleCComplex::mod()

{

return Real * Real + Image * Image;

}

// 重载运算符“>”,比较模的大小

intCComplex::operator > (CComplex& com)

{

if ( mod() > com.mod() )

return 1; // 若大,则返回1 else

return 0;

}

// 重载运算符“<”,比较模的大小

intCComplex::operator < (CComplex& com)

{

if ( mod() < com.mod() )

return 1; // 若小,则返回1 else

return 0;

}

// 重载运算符“!=”,分别判断复数的实部与虚部intCComplex::operator != (CComplex& com)

{

if ( *this==com )

return 0;

else

return 1;

}

// 重载复数的输入,a+bi的形式

istream& operator >> (istream& is, CComplex& com)

{

cout<< "输入复数:";

char s[80];

is >> s; // 用字符串的形式接收复数

intlen = strlen(s); // 求出字符串的长度

int n = 0, sign = 1; // 其中的n 值为当前从字符串中提取出的数字,会在下面的while 语句中得到确定的值

// sign 为状态变量,表示数值的正负符号,以辅助辨认正负值

com.Image = com.Real = 0;

// 判断接收的字符串是否合法

for(int k=0; k

{

if ( (s[k]<'0' || s[k]>'9') && (s[k]!='+' && s[k]!='-' && s[k]!='i') )

{

cout<< "error" <

return is; // 错误,输出出错信息并返回

}

}

// 顺序识别字符串中各字符

for(int k=0; k

{

if ( n!=0 && (s[k]=='--' || s[k]=='+') ) // 当前字符是否为符号位

{

com.Real = sign * n; // 是符号位,且n!=0,即n 已被赋值(通过下面的whlie语句),表明当前读取的是虚部的符号

n = 0; // 将原n*sign 值(带正负号的数值)赋给实部后,将n 清零,准备下一次继续接收并判断是否为虚部的值

}

if ( s[k] == '-') // 当前字符若为负号

{

sign = -1; k++; // 给符号标志变量sign 赋值,表示为负数}

if ( s[k] == '+') // 当前字符若为正号

{

sign = 1; k++; // 给符号标志变量sign 赋值,表示为正数}

if ( s[k]=='i' ) // 若当前字符为“i”

{

if ( k!=len-1 ) // 判断字符'i' 是否为字符串中最后一个字符

cout<< "error\n"; // 如果不是,说明复数数据格式错误

else

com.Image = sign * n; // 是最后一个字符,复数对象已接收完,用sign*n 为虚部赋值

break;

}

while ( s[k]>='0' && s[k]<='9' ) // 当前字符若在0~9 之间,则将数字字符转换成数字数值

{

n = n * 10 + s[k] - '0';

k++;

}

}

if ( s[len-1]!='i' && n!=0 ) // 如果最后一个字符不是'i',表示复数对象内只有实部,没有虚部,如:-a

com.Real = n * sign;

return is;

}

// 重载复数的输出

ostream& operator << (ostream&os, CComplex& com)

{

if ( fabs(com.Image)==0 ) // 如果虚部为0

os<

else if ( fabs(com.Real)==0 ) // 如果实部为0

os<

else if ( com.Image>0 )

os<

else

os<

returnos;

}

// 加法重载

CComplexCComplex::operator + (CComplex& com)

{

CComplex sum;

sum.Real = Real + com.Real; // 实部相加

sum.Image = Image + com.Image; // 虚部相加

return sum;

}

// 乘法重载

CComplexCComplex::operator * (CComplex& com)

{

CComplex multi;

multi.Real = Real * com.Real - Image * com.Image; // 乘积实部

multi.Image = Real * com.Image + Image * com.Real; // 乘积虚部

return multi;

}

// 减法重载

CComplexCComplex::operator - (CComplex& com)

{

CComplex sub;

sub.Real = Real - com.Real; // 实部相减

sub.Image = Image - com.Image; // 虚部相减

return sub;

}

// 加法赋值重载

CComplexCComplex::operator += (CComplex& com)

{

Real = Real + com.Real; // 实部

Image = Image + com.Image; // 虚部

return *this;

}

// 减法赋值重载

CComplexCComplex::operator -= (CComplex& com)

{

Real = Real - com.Real; // 实部

Image = Image - com.Image; // 虚部

return *this;

}

// 乘法赋值重载

CComplexCComplex::operator *= (CComplex& com)

{

double nReal = Real * com.Real - Image * com.Image; // 乘积实部

double nImage = Real * com.Image - Image * com.Real; // 乘积虚部

Real = nReal;

Image = nImage;

return *this;

}

// 重载== 运算符,分别比较两个复数对象的实部和虚部

intCComplex::operator == (CComplex& com)

{

if ( Real==com.Real&& Image==com.Image )

return 1; // 实部与虚部部分相等,则返回1

else

return 0;

}

/*----------------------------------------------------------------------------

|部分B:

| 测试函数void Test(void)

| 实现复数的加法函数void Add()

| 实现复数的减法函数void Sub()

| 实现复数的乘法函数void Mul()

| 实现复数的自加函数void Add1()

| 比较两个复数的大小函数void Compare()

| 输出本次用户使用计算器的情况记录void userprint()

| 当前用户使用完计算器,保存或更新用户资料函数void SaveFile()

|

----------------------------------------------------------------------------*/

// 测试函数,随机出10 道运算题,可以打分

void Test(void)

{

user.nTest++; // 用户测试次数加1

cout<< "共10道题,作10以内的加减运算,满分100分:\n";

double real1, real2, image1, image2, real3, real4, image3, image4; // 1 和 2 分别代表两个待相加的复数的实部和虚部,3 和4 则为相乘

CComplex answer, temp;

int score = 0;

char op;

for(int i=0; i<=9; i++)

{

real1 = rand()%200 - 100; // 产生的随机数是两位数,可以是正数或负数

image1 = rand()%200 - 100;

real2 = rand()%200 - 100;

image2 = rand()%200 - 100;

CComplex a(real1, image1), b(real2, image2); // 用产生的随机数对象分别初始化两个复数对象

real3 = rand()%20 - 10; // 产生的随机数是一位数,可以是正数或负数

image3 = rand()%20 - 10;

real4 = rand()%20 - 10;

image4 = rand()%20 - 10;

CComplexc(real3, image3), d(real4, image4);

op = rand()%3; // 随机产生3 种运算符

switch(op)

{

case 0:

answer = a + b;

cout<< a << "加上" << b << "等于";

break;

case 1:

answer = a - b;

cout<< a << "减去" << b << "等于";

break;

case 2: // 乘法运算,用实部和虚部都是1 位数的对象操作

answer = c * d;

cout<< c << "乘以" << d << "等于";

break;

}

cin>> temp; // 接收用户输入的结果

if ( answer==temp ) score+=10; // 正确则加10分

else

{

cout<< "此题做错了\n";

cout<< "正确答案为:" << answer <

}

}

cout<< "你的最后得分是:" << score <

// 计算最后3次的平均分

if ( user.nTest<=3 ) // 若累计次数没有超过3次

{

user.dlAve = 0;

user.dlScore[user.nTest-1] = score; // 将本次测试成绩添加进记录中

for(int i=0; i

user.dlAve += user.dlScore[i]; // 若以前有记录,将其与本次记录累计相加起来,用以计算平均分

user.dlAve = user.dlAve / user.nTest; // 计算平均分,user.dlAve从累计的分数变成了平均分

}

else // 如果累计测试超过3次

{

user.dlScore[0] = user.dlScore[1]; // 最前面的一次记录将被覆盖,即:删除

user.dlScore[1] = user.dlScore[2];

user.dlScore[2] = score; // 将本次记录添加进测试记录的尾部

user.dlAve=0;

for(int i=0; i<3; i++) // 计算最新3次的平均分

user.dlAve += user.dlScore[i];

user.dlAve = user.dlAve / 3;

}

cout<< "按任意键继续\n";

cout .flush();

cin.get();

cin.get();

}

// 实现复数的加法

void Add()

{

user.nAdd++;

CComplex num1, num2, sum, Zero(0, 0);

cout<< "加法计算\n" << "最少输入两个复数,输入“0”结束\n";

cout<< "第1个复数:";

cin>> num1; // 输入第1个复数

cout<< "第2个复数:";

cin>> num2; // 输入第2个复数

sum = num1 + num2;

cout<< "第3个复数:";

cin>> num1; // 输入第3个复数

int i = 4;

while ( !(num1==Zero) )

{

sum = sum + num1; // 实现复数相加

cout<< "第" << i << "个复数:";

cin>> num1; // 输入第i个复数

i++;

}

cout<< "结果是:" << sum <

cout<< "按任意键继续\n";

cout.flush();

cin.get();

cin.get();

}

// 实现复数的减法

void Sub()

{

user.nSub++;

CComplex num1, num2, sub, Zero(0, 0);

cout<< "减法计算\n" << "最少输入两个复数,输入“0”结束\n";

cout<< "第1个复数:";

cin>> num1; // 输入第1个复数

cout<< "第2个复数:";

cin>> num2; // 输入第2个复数

sub = num1 - num2;

cout<< "第3个复数:";

cin>> num1; // 输入第3个复数

int i = 4;

while ( !(num1==Zero) )

{

sub = sub - num1; // 实现复数减法

cout<< "第" << i << "个复数:";

cin>> num1; // 输入第i个复数

i++;

}

cout<< "结果是:" << sub <

cout<< "按任意键继续\n";

cin.get();

cin.get();

}

// 实现复数的乘法

voidMul()

{

user.nMul++;

CComplex num1, num2, mul, Zero(0, 0);

cout<< "乘法计算\n" << "最少输入两个复数,输入“0”结束\n";

cout<< "第1个复数:";

cin>> num1; // 输入第1个复数

cout<< "第2个复数:";

cin>> num2; // 输入第2个复数

mul = num1 + num2;

cout<< "第3个复数:";

cin>> num1; // 输入第3个复数

int i = 4;

while ( !(num1==Zero) )

{

mul *= num1; // 实现复数的减法

cout<< "第" << i << "个复数:";

i++;

cin>> num1; // 输入第i个复数

}

cout<< "结果是:" <

cout<< "按任意键继续\n";

cin.get();

cin.get();

}

// 实现复数的自加,实部与虚部均自加1

void Add1()

{

user.nAdd++; // 用户加法记录次数加1

CComplex num1;

cin>> num1; // 这里输入的数可能是虚部为0的数,原书代码未作判断

num1++; // 实部与虚部分别加1

cout<< "自加结果为" << num1 <

cout<< "按任意键继续\n";

cout.flush();

cin.get();

cin.get();

}

// 实现复数的自减

void Sub1()

{

user.nSub++; // 用户减法记录次数加1

CComplex num1;

cin>> num1;

num1--;

cout<< "自减结果为" << num1 <

cout<< "按任意键继续\n";

cout.flush();

cin.get();

cin.get();

}

// 比较两个复数的大小

void Compare()

{

CComplex num1, num2;

cout<< "输入两个复数\n";

cout<< "第1个复数:";

cin>> num1;

cout<< "第2个复数:";

cin>> num2;

if ( num1==num2 )

cout<< " 这两个复数相等\n";

else if ( num1>num2 )

cout<< num1 << "的模大于" << num2 << "的模\n";

else if ( num1

cout<< num2 << "的模大于" << num1 << "的模\n";

else

cout<< "这两个复数的模相等\n";

cout<< "按任意键继续\n";

cin.get();

cin.get();

}

// 输出本次用户使用计算器的情况记录

voiduserprint()

{

cout<

cout<< "其中:\t 加法次数:" <

<< "\t 减法次数:" <

<< "\t 乘法次数:" <

<< "\t 测试次数:" <

<< "\t 平均成绩:" <

}

// 用户登陆,开始启动计算器

void Login()

{

charszName[20];

cout<< "请输入您的姓名:";

cin.getline(szName, 20);

ifstreaminfile;

User user1;

infile.open("user.dat", ios::binary|ios::in); // 打开用户资料文件(这个地方若没有文件,则不会创建新文件,不知何问题

if ( !infile ) // 若没有用户资料文件

{

cout<< "没有原始记录文件,您是第1位用户!\n";

strcpy(user.szName, szName); // 为全局变量user 中szName成员赋值

user.nTime++;

return; // 函数返回

}

// 读取用户资料文件(从该文件的第1个字节开始逐个读取信息)

// 如果用户资料中找到了当前姓名的用户,则说明是老用户,显示一些信息,并作一些使用次数的记录。

infile.read( (char *)&user1, sizeof(User) );

while ( !infile.eof() ) // 只要没到文件末尾(未遇文件结束符),则一直进行此循环

{

if ( strcmp(user.szName, szName)==0 ) // 将用户资料文件中的用户名与读取的用户名进行比较

{

user = user1; // 若该用户以前使用计算器,将原资料赋值给全局变量user

user.nTime++; // 用户使用次数加1

cout<< "欢迎您再次使用复数计算器!";

userprint(); // 输出用户资料中的信息

cin.get();

infile.close();

return;

}

infile.read( (char *)&user1, sizeof(User) );

}

// 如果用户资料中没有当前用户,表明该用户是第1次使用计算器

cout<< "欢迎您使用复数计算器!";

strcpy(user.szName, szName); // 为全局变量user 中szName成员赋值

user.nTime++; //用户使用次数加1

infile.close();

return;

}

// 当前用户使用完计算器后,保存或更新用户资料

voidSaveFile()

{

userprint(); // 输出当前用户使用计算器的详细信息

fstream file;

User user1;

file.open("user.dat", ios::binary|ios::in|ios::out); // 打开用户资料

if (!file)

{

cout<< "文件打开错误,不能将记录更新\n";

return;

}

file.seekg(0, ios::beg); // 文件指针指向文件头

while( !file.eof() )

{

file.read( (char *)&user1, sizeof(User) ); // 逐个读取用户资料文件中的用户信息

// 将用户资料文件中的用户名依次与当前用户名进行比较

if ( strcmp(user1.szName, user.szName)==0 ) // 若在用户资料文件中找到该用户

{

file.seekp(-(sizeof(User)), ios::cur); // 文件指针退回到该用户资料信息的首位置

file.write( (char *)&user, sizeof(User) ); // 将全局变量user 的内容写到用户资料文件中,即更新该用户的资料

file.close();

return; // 程序返回

}

}

file.close();

fstreamoutfile;

// 若在用户资料文件中找不到当前用户的资料,表明当前用户是第1次使用计算器

outfile.open("user.dat", ios::binary|ios::app); // 以添加的方式打开用户资料文件

outfile.write( (char *)&user, sizeof(User) ); // 将当前用户的资料添加在用户资料文件中

outfile.close();

return;

}

}

using namespace NameCComplex; // 使用标准命名空间NameCComplex

/*-----------------------------------------------------------------------

|

| 主函数部分

|

----------------------------------------------------------------------*/

int main(void)

{

srand( time(NULL) ); // 初始化随机数种子

Login(); // 打开文件,登记用户

int Choice;

do

{

system("cls"); // 系统执行命令:cls为清屏

cout<< " 这是一个简单的复数计算器程序,可以实现以下功能,请按下对应的键(1 ~ 7)进入\n\n\n";

cout<< "\t================================主菜单=================================\n";

cout<< "\t 1:多复数加法\n";

cout<< "\t 2:多复数减法\n";

cout<< "\t 3:测试100以内的复数加减乘法运算,1次测试10道题\n";

cout<< "\t 4:多复数乘法\n";

cout<< "\t 5:复数自加\n";

cout<< "\t 6:复数自减\n";

cout<< "\t 7:复数比较\n";

cout<< "\t 0:退出计算器程序\n\n";

cout<< "\t 请输入您的选择:";

cin>> Choice;

// 下面用switch - case 语句实现多现选择,当然也可以用if - else 语句实现多项选择

switch(Choice)

{

case 1:

Add(); break;

case 2:

Sub(); break;

case 3:

Test(); break;

case 4:

Mul(); break;

case 5:

Add1(); break;

case 6:

Sub1(); break;

case 7:

Compare(); break;

case 0:

cout<< "\n\t 欢迎下次继续使用复数计算器!\n\n";

break;

default:

cout<< "\n\t 输入错误,请按任意键后重新输入!\n";

cin.get();

cin.get();

}

}while(Choice); // 当Choice 值为0时,结束循环

SaveFile(); // 退出程序前,保存或更新当前用户的使用情况

system("pause");

return 0;

}

/* 书上的主函数写法:

int main(void)

{

srand( time(NULL) ); // 初始化随机数种子

Login(); // 打开文件,登记用户

charstrChoice[20];

do

{

system("cls"); // 系统执行命令:cls为清屏

cout<< " 这是一个简单的复数计算器程序,可以实现以下功能,请按下对应的键(1~7)进入\n\n\n";

cout<< "\t================================主菜单=================================\n";

cout<< "\t 1:多复数加法\n";

cout<< "\t 2:多复数减法\n";

cout<< "\t 3:测试100以内的复数加减乘法运算,1次测试10道题\n";

cout<< "\t 4:多复数乘法\n";

cout<< "\t 5:复数自加\n";

cout<< "\t 6:复数自减\n";

cout<< "\t 7:复数比较\n";

cout<< "\t 0:退出计算器程序\n\n";

cout<< "\t 请输入您的选择:";

cin>>strChoice;

// 下面用if - else 语句实现多现选择,当然也可以用switch - case 语句实现多项选择

if ( strcmp(strChoice, "1")==0 )

Add();

else if ( strcmp(strChoice, "2")==0 )

Sub();

else if ( strcmp(strChoice, "3")==0 )

Test();

else if ( strcmp(strChoice, "4")==0 )

Mul();

else if ( strcmp(strChoice, "5")==0 )

Add1();

else if ( strcmp(strChoice, "6")==0 )

Sub1();

else if ( strcmp(strChoice, "7")==0 )

Compare();

else if ( strcmp(strChoice, "0")==0 )

{

cout<< "\n\t 欢迎下次继续使用复数计算器!\n\n";

break;

}

else

{

cout<< "\n\t 输入错误,请按任意键后重新输入!\n";

cin.get();

cin.get();

}

}while( (strcmp(strChoice, "0")) );

SaveFile(); // 退出程序前,保存或更新当前用户的使用情况

system("pause");

return 0;

}

*/

c语言程序设计课程计算器设计报告

课程设计说明书 题目计算器程序设计 起讫日期 2006 年 7月 3日至 2006 年 8月 6日 所在院系软件学院 专业机械+软件班级 04-2 学生姓名偶偶哦学号 指导教师 2006年 8 月日

摘要 当今社会是信息社会,科技经济高速发展的社会!为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。由于它体积小巧,携带方便,价格便宜,构造简单等诸多的优点成为人们生活中的必备品! 随着科技的发展计算器的种类变得更多,功能变得更强大,体积变得更小!电脑的出现改变人们的生活习惯,很多事情都可以电脑来完成!电脑的更大一个优点就是可以通过软件的应用无限的延伸电脑功能的外延!下面我们将用我们学习的c语言编写一个简易的计算器程序!实现简单的初步的计算功能! 本程序的编写基础是Tubro 汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。生成的程序可移植性强兼容性好稳定!现在只实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,以及一个时钟原代码。这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。但是,每次只能运算一个表达式。不能运算多个表达式。在程序里面在添加一组选择函数即可。本论文主要介绍了本课题的开发背景,开发的过程和所要完成的功能。重点的说明了系统设计思想,设计的步骤、难点技术和解决方案。 关键词:C语言 Tubro c 汉化版计算器时钟

目录 第一章综述 (1) 1.1 课题的现实意义 (1) 1.2 软件环境 (1) 1.3 硬件环境 (1) 第二章系统设计流程图 (2) 2.1 系统流程图 (2) 2.2 主要功能表 (2) 第三章系统分析和设计 (3) 3.1 图形的绘制和输出 (3) 3.2 文本的输出显示 (3) 3.3 计算函数的调用 (4) 3.4 程序的运行和退出 (5) 第四章系统测试 (6) 4.1 系统测试 (6) 4.2 调试 (6) 4.3 错误原因分析一 (6) 4.4 错误原因分析二 (6) 第五章用户使用说明书 (8)

C++课程设计报告--小型特殊计算器

课程设计报告 课程:面向对象程序设计学号: 姓名: 班级: 教师:

课程设计名称:小型特殊计算器 1.设计内容: 实现一个特殊的计算器,可以实现复数、有理数、矩阵和集合的特殊计算。程序可以实现复数、有理数的加、减、乘、除,可以实现矩阵的加法、减法和乘法运算,也可以实现集合的求交集、并集、子集的运算。 2.设计目的与要求: 2.1设计目的 达到熟练掌握C++语言的基本知识和技能; 基本掌握面向对象程序设计的基本思路和方法; 能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2.2设计要求 要求利用面向对象的方法以及C++的编程思想来完成系统的设计; 要求在设计的过程中,建立清晰的类层次; 在系统的设计中,至少要用到面向对象的一种机制。 3.系统分析与设计 3.1主要知识点 运算符重载增加了C++语言的可扩充性。运算符的重载实际上就是一种函数调用的形式,可以用成员函数重载运算符,就是将运算符重载定义为一个类的成员函数的形式;也可以用友元函数重载。用友元重载运算符的友元函数是独立于类以外的一般函数。 3.2关键技术 程序中每一种数据类型用一个类来实现,共设计了4个类。复数类complex,矩阵类matrix,有理数类rational以及集合类set。每一种类都定义了相应的运算符重载函数。具体定义如下所示: (1)类complex 类complex中,成员变量image表示虚部,real表示实部。成员函数print()用来显示数据。运算符重载函数都是用友元函数来实现的。分别重载+、-、*、/运算符。 (2)类matrix 类matrix中,成员变量elems用来存放矩阵的所有元素,rows表示矩阵的行,cols表示矩阵的列。成员函数SetElems()用来给矩阵中的每一个元素赋值,Disp()用来显示矩阵中的所有元素。其它友元函数分别重载+、-、*、/运算符。 (3)类rational 类rational中,有两个成员变量:denominator用来表示有理数的分母,numerator表示有理数的分子。有理数成员函数print()用来显示有理数,optimization()用来优化有理数函数。友元函数real()用来将有理数转换为实数,其它友元函数分别重载+、-、*、/运算符。 (4)类set

使用普通计算器进行复数运算

使用普通计算器进行复数运算 一、使用方法 1. 利用计算器进行复数计算必须要用计算器的度,按DRG键,使计算器显示窗中要有“DEG”标致(表示计算器进行所有带角度的运算均以“度”为单位)。 2. 让计算器进入复数运算状态,分别按2ndF 和CPLX,显示窗中有“CPLX”标致,表示计算器只能进行复数的运算,而进行其它计算则是无效的。取消则重复进行即可。进行复数的加减乘除运算时计算器必须处于复数运算状态。 二、计算说明 1. 计算器中a、b的分别表示进行复数运算的实部和虑部,进行代数式输入时可以直接按此键。 2. 计算器中→rθ、→xy的分别表示进行复数运算的模和角,进行极坐标式输入时必须利用上档键功能进行;同时这两个按键也是代数式和极坐标式转换的功能键。 3. 计算器在进行复数运算时均是以代数式形式进行的,就是说在进行极坐标式计算时必须要先化成代数式,计算的结果也是代数式,如果希望得到极坐标式计算完成后也要进行转换。 4. 显示结果运算完成后的结果就是代数式且显示的是实部,按b显示虑部,再按a 就显示实部,转换成极坐标式后则按a显示模,按b显示角,也可重复显示。 5. 在输入带有负号的值时,应先输入数值,再输入负号,输入负号应按+/-键。 三、计算举例 1. 代数式化成极坐标式 例如:3 + j 4 = 5 /53.13o 按键步骤:(按键动作用“↓”表示。)

3↓a↓4↓b↓2ndF↓→rθ↓显示模5,b↓显示角53.13o。 2.极坐标式化成代数式 例如:15 /-50o = 9.64- j11.49 按键步骤: 15↓a↓50↓+/-↓b↓2ndF↓→xy↓显示实部9.64,b↓显示虑部-11.49。

复数计算器 实验报告

中南大学 高级程序设计实践(C++)课程设计报告 题目复数计算器 学生姓名 指导教师陈丽萍 学院信息科学与工程学院 专业班级通信工程1301班 完成时间 2014年7月5日

第一章需求分析与程序设计 1.1 需求分析 1.1.1程序设计的目的与任务 1.复习和巩固C++语言的基础知识,进一步加深对C++语言的理解和掌握。 2.为学生提供独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生独立分析问题、解决问题、查阅资料以及自学能力。 3.学习和掌握C++程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基础。 4.在程序实现过程中,需利用面向对象程序设计理论的基础知识,充分体现出C++语言关于类、继承、封装与多态等核心概念,每一个类应包含数据成员和成员函数,以实现预期的功能,解决实际问题。 1.1.2“复数计算器”程序所能实现的功能 1.建立实数类、复数类,复数类由实数类公有继承而来。 2.实现实数、复数信息的初始化。 3.通过选择结构和调用相关函数实现实数的相关运算,包括:两个实数间的加、减、乘、除和一个实数的自增、自减、求平方、二次方根等运算。 4.通过选择结构和调用相关函数实现复数的相关运算,包括:两个复数间的加、减、乘、除、求两个复数的夹角和一个复数的取模、求平方、求共轭复数、求单个复数的向量角等运算。 5.通过调用相关函数实现实数、复数信息的输出,显示在显示屏上。 6.通过多次运用选择和循环结构实现对实数、复数运算的选择,在选择了实数或复数运算的前提下,再实现对各种运算的选择,运算结束后还可以选择继续实现其它运算或退出程序。 1.2 程序设计 1.2.1概要设计 1.系统中的各个实体及它们之间的关系 系统中的实体是实数类对象和复数类对象,它们的关系是复数类对象所属的类是由实数类对象所属的类公有派生而来的。 2.系统的类层次 程序中建立了两个类,分别是实数类、复数类,复数类是由实数类公有派生而来的。 3.主程序的流程以及各程序模块之间的层次(调用)关系 首先从键盘输入数字1或2或0,输入不同数字则进入不同的并列的小程序模块。

C语言课程设计 简单计算器程序

课程设计名称:C语言课程设计课程设计题目:简单计算器程序

目录 第1章需求分析 (1) 1.1设计要求 (1) 1.2任务 (1) 第2章总体设计 (2) 2.1设计简介及设计方案论述 (2) 2.2功能模块层次图 (2) 第3章详细设计 (3) 3.3由(后缀)逆波兰表达式计算中缀表达式原理 (8) 3.3.1算法描述 (8) 第4章调试分析 (10) 4.1程序设计中所遇到的错误及犯错的原因 (10) 4.2错误的解决方法 (10) 第5章用户手册 (11) 总结 (15) 参考文献 (16) 附录(程序清单) (17)

第1章需求分析 1.1 设计要求 (1)用 C 语言数据结构实现程序设计; (2)利用结构体、栈、进行相关信息处理; (2)系统的各个功能模块要求用函数的形式实现; (4)界面简单,可操作性高。 1.2任务 (1)定义一个结构体类型数组,输入0~9 及+、--、*等符号的信息,将其信息存储起来; (2)输入简单的加减乘除算术计算式,并在屏幕上显示逆波兰(后缀式)表达式和计算结果; (3)编写代码; (4)程序分析与调试。 说明: 本课程设计将实现一个简单计算器。在功能上尽量模仿windows 的计算器。系统界面不做牵制要求。该程序能实现标准型中+、-、*、/、(、)、.、的混合运算表达式(一般意义上的中缀表达式),将其转换成逆序波兰表达式(后缀表达式)并计算输出结果。在进行运算后可以选择继续运算或者结束当前运算。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

第2章 总体设计 2.1设计简介及设计方案论述 逆波兰表达式又叫做后缀表达式。在通常的表达式中,二元运算符总是置于与之相 关的两个运算对象之间,所以,这种表示法也称为中缀表达式。波兰逻辑学家 J.Lukasiewicz 于 1929 年提出了另一种表示表达式的方法。按此方法,每一运算符都置 于其运算对象之后,故称为后缀表达式。 后缀表达式的优点是显而易见的, 编译器在处理时候按照从左至右的顺序读取逆波 兰表达式,遇到运算对象直接压入堆栈,遇到运算符就从堆栈提取后进的两个对象进行计算,这个过程正好符合了计算机计算的原理。后缀表达式比前缀表达式更加易于转换,并且它的最左面一定为数字,这一点在实 际编程的时候就会体会到它的好处了。 逆波兰表达式有一个更大的优点,就是拆括号,根据运算符的级别将中缀表达式转 换成逆波兰表达式后,运算顺序就已经替代了运算符的级别,这样也避免了括号提高运 算级别的特殊处理。 2.2功能模块层次图 将算术表达式转化为逆波兰表达式 计算逆波兰表达式的值 简单计算器 表 达 式 格 式 转 换 系统 求 值 计 算 系 统

教你巧妙改装计算器,功能很强大。如此变态的计算器,你一定不知道怎么玩,我来告诉你

一、shift+7+on,不多说了,很多人都知道 二、CMPLX(复数计算),MAT(矩阵),VCT(向量)! 没想到吧,俺们的计算器还能算复数。说到这里,先要讲怎么进入异常状态!这可是好多种变态功能使用的必须状态! 进入异常状态:(依次按下列键,不能多一下或少一下,期间不管计算器怎么显示错误都无视) on, shift+加号(Pol), 1, shift+右括号(逗号), 0, =, AC, 6下分数线, =, AC, 左, 1, x^n(x平方右边那个), =, AC, 上, AC, 3下左, DEL(此时显示r=1,fai o=0,惊讶了吧), 分数线, 在分数线上下都输入1, = 异常状态进入成功! 然后继续凹:8下Ans, 然后不断按sin直到显示错误, AC, shift+9, 1, =, AC, shift+9, 2, =, AC(前面几步也叫2次清空), 5下根号, 6下x^n(此时出现乱码,可以看见乘以10), 15下

DEL(正好到r前面,小心点按哦,按过头就要重来了。。), 右括号, =, AC, shift+9, 2, =, AC, 2下右, DEL(正好把那个右括号删了), 1, alpha+x^3(是个双引号), 2下等于, mode 看到什么了!2就是复数计算,4不明,5也不明,6就是矩阵,8就是向量,平时看不见吧~ 1、CMPLX:按完2之后屏幕突然变亮,然后按on,再用shift+mode调节屏幕亮度(可以看得清楚点。。)为了保证能正常使用,shift+mode, 3, shift+mode, 8, 1, shift+mode, 下, 4, 1。OK啦~~~现在ENG就是i!!!不过计算结果如果带i 的话不会显示出来比如答案是-1+i,显示就是-11,按shift+2再按4就能显示出来了,shift+2还有其他几个功能,自己研究吧~~ 2、MAT:按完6之后按一下AC,然后同样调节亮度。shift+4,慢慢玩吧~~ 3、VCT:按完8之后按一下AC,然后同样调节亮度。貌似是shift+5,自己试试~~ 三、进制转换(可转换2进制,8进制,10进制,16进制)

大学计算机c语言计算器源代码

C++语言编写。。 #include #include #include using namespace std; const double pi = 3.14159265; const double e = 2.718281828459; const int SIZE = 1000; typedef struct node//为了处理符号而建立的链表(如: 1+(-2)) { char data; node *next; }node; typedef struct stack_num//存储数的栈 { double *top; double *base; }stack_num; typedef struct stack_char//存储运算符号的栈 { char *top;

char *base; }stack_char; stack_num S_num;//定义 stack_char S_char;//定义 char fu[18] = {'\n', ')', '+', '-', '*', '/', '%', '^', 'Q', 'L', 'C', 'S', 'T', 'c', 's', 't', '('}; int compare[1000];//表现出各运算符号的优先级 double shu[1000];//存储"数"的数组 double dai_result;//运算的结果,是为了处理M运算(简介函数里有M的定义) int biao = 0;//和dia_result一样,为了处理M运算 char line[SIZE];//输入的所要计算的表达式 void init()//初始化 { compare[fu[0]] = -2;//用数字的大小表现出符号的优先级 compare[fu[1]] = -1; compare[fu[2]] = 2; compare[fu[3]] = 2; compare[fu[4]] = 4; compare[fu[5]] = 4; compare[fu[6]] = 4;

C++课程设计报告(复数计算器)

南京信息工程大学 《面向对象程序设计》课程设计实验报告 课程名:面向对象程序设计 专业:网络工程 班级:2班 作者:张煜荻、吴辉煌、张一东 日期:2011年5~6月

实验内容 题目:设计一个复数计算器。 要求:1)所设计的复数计算器可以进行+、-、×运算。2)设计输入重载函数,要求能接收从键盘输入a+b i形式的复数,在程序中可以识别出实部、虚部并进行赋值。3)设计算器测试程序,对加减法进行测试,要求在两位数以内,对乘法进行测试,乘法要求为一位数的运算。 小组分工

程序源码 #include #include #define EPS 1e-5//定义精度为10^-5 using namespace std; namespace NameCalculator //定义空间NameCalculator { class Calculator //定义Calculator类 { private: double Real,Image; //私有成员:实部Real、虚部Image public: Calculator(double real=0,double image=0) //构造函数 { Real=real; Image=image; } int operator==(Calculator &com); //等于重载 Calculator operator+(Calculator &com); //加法重载 Calculator operator-(Calculator &com); //减法重载 Calculator operator*(Calculator &com); //乘法重载 Calculator operator*=(Calculator &com);//乘法赋值重载 friend istream & operator>>(istream &is,Calculator &com); //输入重载 friend ostream & operator<<(ostream &os,Calculator &com); //输出重载}; int Calculator::operator==(Calculator &com) //重载等于 { if(Real==com.Real && Image==com.Image) return 1; else return 0; } Calculator Calculator::operator+(Calculator &com) //加法重载 { Calculator sum; sum.Real=Real+com.Real; sum.Image=Image+com.Image; return sum;

计算器-复数的计算方法

用计算器计算复数 (KK-82MS-1) 三、计算举例 模式:MODE CLR↓1。 1.代数式化成极坐标式 例如: 3 + j 4 = 5 /53.13o 步骤: POL↓(3,4)。结果=5; 在按键rcl↓F↓。结果等于53.13. 2. 极坐标化成代数式 例如: 15 /-50o = 9.64- j11.49 按键步骤:SHIFT↓REC↓(15,-50)。结果等于9.64. 再按rcl↓F 。结果等于-11.49. 3. 代数式的加减乘除 例如: ( 5 - j 4 ) × ( 6 + j 3 ) = 42 - j 9 = 42.953/-12.095o 步骤:先进行简单的加减运算得到42 - j 9。 POL↓(42,-9)。结果等于42.953; 再rcl↓F。结果等于-12.095. 例 ( 5 - j 4 ) + ( 6 + j 3 ) = 11 - j 1 = 11.045 /-5.1944o ( 5 - j 4 ) - ( 6 + j 3 ) = -1 - j 7 = 7.071 /-98.13o ( 5 - j 4 ) ÷ ( 6 + j 3 ) = 0.4 - j 0.8667 = 0.9545 /-65.2249

o 4.极坐标式的加减乘除 例如:5 /40o + 20 /-30o = 21.15 - j 6.786 = 22.213/-17.788o 步骤:先将5 /40o化成代数式3.83+ 3.214j,将 20 /-30o化成代数式17.32-j10;然后两式相加21.15-j6.786.然后转换成极坐标。 如进行其它运算只需将乘号换成要进行的计算号即可。这里只给出计算结果请同学自己进行练习对比。 5 /40o - 20 /-30o = -13.49 - j 13.2139 = 22.213/135.5929o 5 /40o×20 /-30o = 98.48 - j 17.3648 = 100/10o 5 /40o÷20 /-30o = 0.0855 - j 0.2349 = 0.25/70o

计算器C语言程序

数码管显示计算器C语言程序如下: #include #include #define uchar unsigned char #define uint unsigned int uchar i,j,temp,num; uchar a0,a1,a2,a3,a4,a5,b0,b1,b2,b3,b4,b5; uchar flag,flaga,flagb,fuhao; long a,b,c,flagz; void init() { a0=0xc0;b0=0xc0; a1=a2=a3=a4=a5=b1=b2=b3=b4=b5=0xff; flag=0,flaga=0,flagb=0;flagz=0; a=0,b=0,c=0; } void qn() { b0=b1=b2=b3=b4=b5=0xff; } uchar code table1[]={ 0xf8,0x80,0x90,0, 0x99,0x92,0x82,0, 0xf9,0xa4,0xb0,0, 0,0xc0,0,0}; uchar code table2[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uint code table[]={ 7,8,9,0, 4,5,6,0, 1,2,3,0, 0,0,0,0 }; void delay(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void display() { if(a5!=table2[0]) {P2=0x00; P0=a5; P2=0X01; delay(1);

设计一个简单计算器的C语言课程设计报告

C语言课程设计报告题目:设计一个简单计算器 目录 1. 设计目的 2. 内容

3. 总体设计(有流程图) 4. 源程序编写(附上了运行图) 5. 执行结果 6. 心得体会 一、设计目的 设计一个简单计算器,在功能上功能尽量模拟windows 操作系统中的计算器,系统界面不做强制要求。 全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数、指针和文件的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,规范编程思想,为以后在专业

课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。 二、内容 1、程序设计的一般步骤 a、确定数据结构 b、确定算法 C、编程 d、调试 e、总结资料 2、基本要求 a .设计正确,方案合理,能实现相应功能。 b .界面友好,使用方便。 c .程序精炼,结构清晰。 d .设计报告含程序设计说明,用户使用说明,源程序清单及程序框图。 e .上机演示。

三、总体设计(程序设计组成框图、流程图)

四、源程序编与 #in clude #in clude #in clude double jisua n( char a[]) { int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; char nibo[50],zha n2[50]; double x,n, l,z=0,zha n3[20]; typedef struct { double d1; int d2; }dd; typedef struct {

C++课程设计复数计算器

C++课程设计实验报告 姓名学号班级 合作者学号班级 任课教师时间 教师指定题目复数计算器评定难易级别 A级实验报告成绩

复数计算器 程序功能设计 1.程序功能的总体结构 复数计算器的程序总体功能可设计成如图1所示,可以看出,复数计算器的各种功能都用菜单选项列出,用户可以根据需要选择相应的菜单项,从而执行不同的子程序以完成相应的功能。 2.课程设计要求 (1)一开始运行程序,要有详细的菜单选项界面,用户不选择退出就可以反复运算。 (2)可以进行多个操作数的复数运算,输入0+0*i时为止。 (3)编写可以对输入的复数求模的成员函数。 (4)编写具有测试功能的函数,即计算机能够自动出题,并要求用户计算,同时计算机判断用户计算的对错并打分,要求十题为一个单元,每题一个运算符,运算符包括+,-,*三种,参与加减运算实部虚部为一位数。 (5)重载输入输出运算符,对复数的输入既可采用实部虚部分开提示输入,也可直接输入诸如a+i*b或a+ib这种形式,对复数的输出要考虑实部虚部的正负号,通过判断给出的输出结果。

2.程序设计思想 1)类的封装 程序中将复数形式的数据定义成一个复数类CComplex,重载了加法及减法等运算符,使函数的加减等运算像一般数据一样方便.每个运算符重载都用一个函数去实现。参考类的定义如下: class CComplex{

private: double Real,Image; public: CComplex(double real=0,double image=0) //构造函数 {Real=real;Image=image;} friend istream&operator>>(istream&is,CComplex&com); //重载输入friend ostream&operator<<(ostream&os,CComplex&com); //重载输出 CComplex operator+(CComplex&com); CComplex operator-(CComplex&com); //减法重载 CComplex operator*(CComplex&com); //乘法重载 CComplex operator/(CComplex&com); //除法重载 int operator==(CComplex&com); int operator!=(CComplex&com); int operator>(CComplex&com); int operator<(CComplex&com); float Module(void); //复数求模 }; (2)设计的任务要求1 在实际应用中,输入复数可能为a+bi, a, bi, -a, -bi, +i. –i. I等形式。重载

C语言编写的计算器源代码

C语言计算器源代码 #include /*DOS接口函数*/ #include /*数学函数的定义*/ #include /*屏幕操作函数*/ #include /*I/O函数*/ #include /*库函数*/ #include /*变量长度参数表*/ #include /*图形函数*/ #include /*字符串函数*/ #include /*字符操作函数*/ #define UP 0x48 /*光标上移键*/ #define DOWN 0x50 /*光标下移键*/ #define LEFT 0x4b /*光标左移键*/ #define RIGHT 0x4d /*光标右移键*/ #define ENTER 0x0d /*回车键*/ void *rar; /*全局变量,保存光标图象*/ struct palettetype palette; /*使用调色板信息*/ int GraphDriver; /* 图形设备驱动*/ int GraphMode; /* 图形模式值*/ int ErrorCode; /* 错误代码*/ int MaxColors; /* 可用颜色的最大数值*/ int MaxX, MaxY; /* 屏幕的最大分辨率*/ double AspectRatio; /* 屏幕的像素比*/ void drawboder(void); /*画边框函数*/ void initialize(void); /*初始化函数*/ void computer(void); /*计算器计算函数*/ void changetextstyle(int font, int direction, int charsize); /*改变文本样式函数*/ void mwindow(char *header); /*窗口函数*/ int specialkey(void) ; /*获取特殊键函数*/ int arrow(); /*设置箭头光标函数*/ /*主函数*/ int main() { initialize();/* 设置系统进入图形模式*/ computer(); /*运行计算器*/ closegraph();/*系统关闭图形模式返回文本模式*/ return(0); /*结束程序*/ } /* 设置系统进入图形模式*/ void initialize(void) { int xasp, yasp; /* 用于读x和y方向纵横比*/

单片机课程设计——计算器设计

目录 一、设计总绪 (2) 1.1设计思想 (2) 1.2设计说明 (3) 1.3关键词:矩阵键盘,单片机,数码管显示,汇编语言 (3) 1.4设计目的 (3) 1.5设计要求 (4) 二、设计方案 (5) 2.1硬件电路设计方案 (5) 2.1.1基本结构 (5) 2.1.2系统框架图 (5) 2.1.3工作流程图 (6) 2.1.4单片机主控制模块 (7) 2.2系统功能描述 (9) 三、各模块功能介绍 (10) 3.1键盘输入模块 (10) 3.1.1键盘分布图 (10)

3.1.2工作原理 (11) 3.2运算控制模块 (11) 3.3显示模块 (12) 3.4振荡电路模块 (13) 四、仿真电路 (14) 仿真运行结果 (14) 五、调试过程总结 (17) 附录: (18) 参考文献: (18) 源程序代码 (19) 一、设计总绪 1.1设计思想 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技

术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。计算机在人们的日常生活中是比较常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计是用AT89c51单片机、LCD显示器、控制按键为元件来设计的计算器。利用此设计熟悉单片机微控制器及汇编语言编程,对其片资源及各个I/O端口的功能和基本用途的了解。掌握应用程序开发环境,常用的LCD显示器的使用方法和一般键盘的使用方法 此设计是基于单片机技术的简易计算器的方案,本次设计所提出的一种基于单片机技术的简易计算器的方案,采用具有数据处理能力的中央处理器CPU,随机存储器ROM,多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统——单片机,配以汇编语言编写的执行程序,能更好的解决计算机计算的问题,随着数字生活的到来,单片机在生活中越来越重要,它能将大量的逻辑功能集成与一个集成电路中,使用起来十分方便。 1.2设计说明 本次课程设计讨论了单片机技术的计算器构思,设计方案,工作原理,主要系统包括单片机80C51,排阻RESPACK—8,开关,六位数码管显示器等,主要组成部分包括:键盘输入模块,运算模块,控制模块,显示模块。通过键盘输入数值,单片机进行运算后在数码管显示出结果。 1.3关键词:矩阵键盘,单片机,数码管显示,汇编语言 1.4设计目的

CASIO fx-82ES计算器隐藏功能(矩阵、向量、解方程、复数运算等)

大家说看不明白一刚辛苦手打大家分享按shift、9、3、=、=按shift、+、1、,、0、=按分数 线到底大概7~8次按=、AC按左、1 、按次方、=、AC按上、AC 按左2次按DEL 删除1。得到r=1,等等按分数线上下都输入1 按= 再按8次Ans 继续跟着按22次sin 按AC按shift、9、1、=、AC按shift、9、2、=、AC按次方更号次方更号满点按快了会死机如死机则重来大概5组直到后面出现一串英文按DEL 删除所有次方和更号继续按DEL 开始删除 字母删到r 前面按)按=、AC按shift、9、2、=、AC按右删除)输入1 :按2次= 记住2次按MODE、2按ON按MODE 按几次右可以快捷调亮度然后修复计算机按shift、MODE、3 按shift、MODE、8、1按shift、MODE下、4、1搞定哈哈哈哈哈哈ENG就是i如输入8+6i /9+47i后一定要按shift、2、4那是负数指令不按你死定了 注:本次升级目标:从fx-82ES(B版)升级到fx-991ES 在所有操作之前,请先检查计算器屏幕左上角是否有“M”字样。如果有,请按0+shift+RCL(STO)+ M+。如果没有,请继续操作。 所有隐藏模式调出前请先进入异常模式: 注:【】代表注释( )代表第二功能键 首先打开计算器电源(ON) 1. shift 2. + (Pol) 3. 1 4. shift 5. ")" ( , ) 6. 0 7. ) 【前7步最后显示为"Pol(0,1)"】 8. = 9. 狂按分数线,直到按到顶不动为止【似乎是7到8个】 10. 按= (显示Syntax ERROR 不要管它),AC,左 11. 1 12. 幂【在方向键下面,就是X上面有个小白框的键】 13. = 14. AC 15. 向上键 16. AC

C语言_程序设计_计算器

C语言_程序设计_计算器 课程设计说明书 题目多功能计算器起讫日期 2006 年 7月 3日至 2006 年 8月 6日 所在院系 专业班级 学生姓名学号 指导教师 2006年 8 月 1 日 摘要 当今社会,随着人们物质生活的不断提高,电子产品已经走进家家户户,无论是生活和学习还是娱乐和消遣几乎样样都离不开电子产品,计算器可谓是我们最亲密的电子伙伴之一。 随着科技的发展,人们对计算要求的精确度越来越高,各种不同功能的计算器已经悄悄走进我们的生活和学习中。对于学生来说一个功能齐全的计算器对我们的学习有着莫大的帮助。借着C语言程序设计的机会,我决定自己动手来研究一下计算器。在练习巩固C语言学习的同时又可以从中体会到计算器的强大功能,然而由于学习的内容和时间有限,至今为止我只能实现四则运算加、减、乘、除、平方、立方和开方的一些简单功能,并且在计算器的里面加了一个漂亮的时钟,用来方便我们的学习。在今后的学习中,我会继续研究,争取进一步来完善它的功能。 本系统采用Turbo C语言开发,生成可执行文件在任何系统下都可以执行,具有很好的数据处理能力和稳定性。本论文主要介绍了该课题的开发背景以及过程和

所要完成的功能。并且重点的说明了系统设计思想,设计的步骤、难点技术和解决方案。由于“初来乍到”,这个程序设计还有一些漏洞和缺陷,希望您多多提出~关键字:Turbo c c语言计算器程序四则数值运算 目录 第一章综述...........................................................................1 1(1 课题的现实意义...............................................................1 1(2 软件环境........................................................................1 1(3 硬件环境 (1) 第二章系统设计流程图............................................................2 2(1 系统流程图.....................................................................2 2(2 主要功能表.....................................................................2 第三章系统分析和设计............................................................3 3(1 图形的绘制和输出............................................................3 3(2 文本的输出显示...............................................................3 3(3 计算函数的调用...............................................................4 3(4 程序的运行和退出 (5) 第四章系统测试.....................................................................6 4(1 缺少变量定义,定义位置不正确..........................................6 4(2 语法错误........................................................................6 4(3 注释的位置.....................................................................6 4(4 逻辑错误 (6) 第五章用户使用说明书……………………………………………………8 5(1 运行Turbo C程序进入计算器界面…………………………………8 5(2 计算器的使

对于复数的运算利用计算器进行非常简单

对于复数的运算利用计算器进行非常简单,下面以SHARP EL-506P型计算器为例说明复数的有关运算。 一、使用方法 1.利用计算器进行复数计算必须要用计算器的度,按DRG键,使计算器显示窗中要有“DEG”标致(表示计算器进行所有带角度的运算均以“度”为单位)。 2.让计算器进入复数运算状态,分别按2ndF 和CPLX,显示窗中有“CPLX”标致,表示计算器只能进行复数的运算,而进行其它计算则是无效的。取消则重复进行即可。进行复数的加减乘除运算时计算器必须处于复数运算状态。 二、计算说明 1.计算器中a、b的分别表示进行复数运算的实部和虑部,进行代数式输入时可以直接按此键。 2.计算器中→rθ、→xy的分别表示进行复数运算的模和角,进行极坐标式输入时必须利用上档键功能进行;同时这两个按键也是代数式和极坐标式转换的功能键。 3.计算器在进行复数运算时均是以代数式形式进行的,就是说在进行极坐标式计算时必须要先化成代数式,计算的结果也是代数式,如果希望得到极坐标式计算完成后也要进行转换。 4.显示结果运算完成后的结果就是代数式且显示的是实部,按b显示虑部,再按a就显示实部,转换成极坐标式后则按a显示模,按b显示角,也可重复显示。 5.在输入带有负号的值时,应先输入数值,再输入负号,输入负号应按+/-键。 三、计算举例 1.代数式化成极坐标式 例如:3 + j 4 = 5 /53.13o 按键步骤:(按键动作用“↓”表示。) 3↓a↓4↓b↓2ndF↓→rθ↓显示模5,b↓显示角53.13o。 2.极坐标式化成代数式 例如:15 /-50o = 9.64- j11.49 按键步骤: 15↓a↓50↓+/-↓b↓2ndF↓→xy↓显示实部9.64,b↓显示虑部-11.49。 3.代数式的加减乘除 例如:( 5 - j 4 ) × ( 6 + j 3 ) = 42 - j 9 = 42.953/-12.095o 按键步骤: 5↓a↓4↓+/-↓b↓×↓6↓a↓3↓b↓=↓显示实部42 b↓显示虑部–9。如要极坐标式只需继续进行转换即可。2ndF ↓→rθ↓显示模42.953,b↓显示角-12.095o。 如进行其它运算只需将乘号换成要进行的计算号即可。这里只给出计算结果请同学自己进行练习对比。实际计算时可取小数点后两位。 ( 5 - j 4 ) + ( 6 + j 3 ) = 11 - j 1 = 11.045 /-5.1944o ( 5 - j 4 ) - ( 6 + j 3 ) = -1 - j 7 = 7.071 /-98.13o ( 5 - j 4 ) ÷ ( 6 + j 3 ) = 0.4 - j 0.8667 = 0.9545 /-65.2249o 4.极坐标式的加减乘除 例如: 5 /40o + 20 /-30o = 21.15 - j 6.786 = 22.213/-17.788o 按键步骤: 5↓a↓40↓b↓2ndF↓→xy ↓+ 20↓a↓30↓+/-↓b↓2ndF↓→xy↓=↓显示实部21.15,b↓显示虑部-6.786。再转换成极坐标式:2ndF↓→rθ↓显示模22.213,b↓显示角-17.788o。 如进行其它运算只需将乘号换成要进行的计算号即可。这里只给出计算结果请同学自己进行练习对比。

用c语言编写的计算器源代码

作品:科学计算器 作者:欧宗龙 编写环境:vc++ 语言:c #include "" #include <> #include <> #include <> #include "" #include "" #include <> #include <> #define PI BOOL A_Op=FALSE; BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); } return FALSE; } BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) {

return TRUE; } void TrimNumber(char a[]) { for(unsigned j=strlen(a)-1;j>=i;j--) { if(a[j]=='0') { a[j]='\0'; } else if(a[j]=='.') { a[j]='\0'; } else break; } } } } double Operate(char Operator,double n1,double n2) ; strcat(a,DecP); } ; } DELTIMES++; SetDlgItemText(hwnd,IDC_EDIT,str); A_Op=FALSE; } break; case IDC_BUTTONADD: //加法运算 { RNum[1]=atof(str); RNum[0]=RNum[1]; RNum[1]=RNum[2]; RNum[2]=Operate(Operator,RNum[1],RNum[0]);

相关主题
文本预览
相关文档 最新文档