文档库 最新最全的文档下载
当前位置:文档库 › 用c++编写的用于矩阵计算的类

用c++编写的用于矩阵计算的类

用c++编写的用于矩阵计算的类
用c++编写的用于矩阵计算的类

头文件和代码文件都在这篇文档中

//*************************************h文件

#include //基本输入输出

#include //用于数据转换,从字符串中提取数字

#include //数学函数库

#include //用于生成随机

#include //的矩阵

using namespace std;

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

以下,定义了矩阵中的数据分布样式

日期:2008-8-4

作者:杨赋庚

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

#define Zero 0

#define One 1

#define Number 2

#define Unit 3

#define Rand 4

/************下面,定义了几种矩阵变换方式*************/

#define All 5

#define Horizontal 6

#define V ertical 7

#define Nomal 8

#define Pretty 9

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

/***************用一维数组表示二维矩阵*********************

程序中表示矩阵的方法:

……#########……#########……#########……#########……

第一行第二行第三行第四行

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

class Matrix

{

/************受保护对象*********************************/ protected:

int rows;//总行数

int cols;//总列数

float * m_pData;//矩阵数据块

int size;//矩阵数据块的大小

float * Init(int rows_=1,int cols_=1,int style=Zero,int num=0);//初始化(0化)

public:

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

//矩阵的初始化函数

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

Matrix(Matrix &);

Matrix(int rows_=1,int cols_=1,int style=Zero,int num=0);

Matrix(char *);

Matrix(int rows_,int cols_,float a[]);

Matrix(int size_,float a[]);

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

//公有接口函数

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

Matrix operator / (float);

Matrix operator * (float);

Matrix operator * (Matrix &);

Matrix operator - (Matrix &);

Matrix operator + (Matrix &);

Matrix operator = (Matrix &);

Matrix operator = (char *);

bool operator ==(Matrix &);

bool operator !=(Matrix &);

void Clear();

/***********设置/获取矩阵中元素***************************/

float GetElement(int row_=0,int col_=0);

bool SetElement(float value=0,int row_=0,int col_=0);

float * GetData(){return m_pData;}

void StrToMatrix(char *);

string MatrixToStr();

int GetRows(){return rows;}

int GetCols(){return cols;}

int GetSize(){return size;}

~Matrix();

friend ostream & operator <<(ostream & out,Matrix & M);

friend istream & operator >>(istream & in ,Matrix & M);

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

//算法//

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

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

//函数名:Find

//函数说明:style1指定查找方式,V ertical为垂直查找,Horizontal为水平查找;

//pos1和pos2指定了查找区间;Index指定了查找操作所处的行/列;k为比较参数;

//style2指定了比较方式,0则返回相等的目标,否则返回不等的目标。

*******************************************************************/ int Find(float k,int Index,int pos1,int pos2,int style1=V ertical,int style2=0);

/***************************************************************** //函数名:Move

//函数说明:将矩阵的某行(列)乘以常数,加到另外一行(列)上。

******************************************************************/ void Move(float k,int Index1=0,int Index2=1,int Direction=V ertical);

/***************************************************************** //函数名:Times

//函数说明:将矩阵的某一行(列)乘以一个常数

******************************************************************/ void Times(float k,int Index,int Direction=Horizontal);

/***************************************************************** //函数名:Devided

//函数说明:将矩阵的某一行(列)除以一个常数

******************************************************************/ void Devided(float k,int Index,int Direction=Horizontal);

/***************************************************************** //函数名:Change

//函数说明:交换矩阵中的两个行(列)

******************************************************************/ void Change(int Index1=0,int Index2=0,int Direction=Horizontal);

/***************************************************************** //函数名:Adverse

//函数说明:利用代数余子式法,计算矩阵的逆

******************************************************************/ Matrix Adverse();

/***************************************************************** //函数名:Simplify

//函数说明:利用消元法,将矩阵最简化

******************************************************************/ bool Simplify(int style=Nomal);

Matrix Star();//计算矩阵的*

float Abs();//计算矩阵的行列式

Matrix Left(int row_=0,int col_=0);//计算矩阵中某元素的余子式

float NumLeft(int row_=0,int col_=0);//计算矩阵中某元素的代数余子式

int Rank();

Matrix Transpose();//将矩阵转置

};

//***************************cpp文件*************************

#include "Matrix.h"

float * Matrix::Init(int rows_,int cols_,int style,int num)

{

int col;

if(rows_==0 || cols_==0)

{

rows=1;

cols=1;

size=1;

m_pData=new float[1];

*m_pData=0;

return m_pData;

}

rows=rows_;

cols=cols_;

size=rows*cols;

m_pData=new float[size];

if(style==Zero)

for(row=0;row

for(col=0;col

m_pData[row*cols+col]=0;

else if(style==One)

for(row=0;row

for(col=0;col

m_pData[row*cols+col]=1;

else if(style==One)

for(row=0;row

for(col=0;col

m_pData[row*cols+col]=num;

else if(style==Unit)

{

if(rows==cols)

for(row=0;row

for(col=0;col

if(row==col)

m_pData[row*cols+col]=1;

else

m_pData[row*cols+col]=0; }

else if(style==Rand)

{ srand(unsigned int(time(NULL)));

for(row=0;row

for(col=0;col

m_pData[row*cols+col]=rand()%123; }

else

return m_pData;

}

Matrix::Matrix(int rows_,int cols_,int style,int num) {

Init(rows_,cols_,style,num);

}

Matrix::Matrix(Matrix &M)

{

int i;

rows=M.GetRows();

cols=M.GetCols();

size=M.GetSize();

float * m_pData_target=M.GetData();

m_pData=new float[size];

for(i=0;i

m_pData[i]=m_pData_target[i];

}

Matrix::Matrix(char * str)

{

m_pData=0;

*this=str;

}

Matrix::Matrix(int rows_,int cols_,float a[])

{

rows=rows_;

cols=cols_;

size=rows*cols;

m_pData=new float[size];

int i;

for(i=0;i

m_pData[i]=a[i];

}

Matrix::Matrix(int size_,float a[])

{

size=size_;

rows=sqrt(size);

cols=rows;

m_pData=new float[size];

int i;

for(i=0;i

m_pData[i]=a[i];

}

Matrix Matrix::operator =(Matrix & M)

{

int i;

rows=M.GetRows();

cols=M.GetCols();

size=M.GetSize();

float * m_pData_target=M.GetData();

if(m_pData)delete []m_pData;

m_pData=new float[size];

for(i=0;i

m_pData[i]=m_pData_target[i];

return *this;

}

Matrix Matrix::operator =(char * str)

{

int row;

int col;

rows=1;

cols=1;

char * p=str;

while(*p!='\0')

{

if(*p==',')

cols++;

else if(*p==';')

{

rows++;

cols++;

}

p++;

}

cols=cols/rows;

row=0;

col=0;

size=rows*cols;

if(m_pData)delete []m_pData;

m_pData=new float[size];

p=str;

char temp[128];

int k=-1;

while(*p!='\0')

{

if(*p==',')

{

temp[++k]='\0';

m_pData[row*cols+col]=atof(temp);

k=-1;

col++;

}

else if(*p==';')

{

temp[++k]='\0';

m_pData[row*cols+col]=atof(temp);

k=-1;

col=0;

row++;

}

else

temp[++k]=*p;

p++;

}

temp[++k]='\0';

m_pData[row*cols+col]=atof(temp);

return *this;

}

bool Matrix::operator ==(Matrix & M)

{

int rows_=M.GetRows();

int cols_=M.GetCols();

if(rows==rows_ && cols==cols_)

{

float * m_pData_temp=M.GetData();

int i;

for(i=0;i

if(m_pData[i]!=m_pData_temp[i])

return false;

return true;

}

else

return false;

}

bool Matrix::operator !=(Matrix &M)

{

int rows_=M.GetRows();

int cols_=M.GetCols();

if(rows==rows_ && cols==cols_)

{

float * m_pData_temp=M.GetData();

int i;

for(i=0;i

if(m_pData[i]==m_pData_temp[i])

return false;

return true;

}

else

return true;

}

float Matrix::GetElement(int row_,int col_)

{

return m_pData[row_*cols+col_];

}

bool Matrix::SetElement(float value,int row_,int col_) {

m_pData[row_*cols+col_]=value;

return true;

}

void Matrix::StrToMatrix(char * str)

{

*this=str;

}

string Matrix::MatrixToStr()

{

string str;

char temp[32];

int row;

int col;

for(row=0;row

{

gcvt(m_pData[row*cols],30,temp);

str+=temp;

for(col=1;col

{

str+=",";

gcvt(m_pData[row*cols+col],30,temp);

str+=temp;

}

if(row

}

return str;

}

void Matrix::Clear()

{

cols=0;

rows=0;

delete[]m_pData;

}

Matrix::~Matrix()

{

delete []m_pData;

}

ostream & operator <<(ostream & out,Matrix & M) {

int row;

int col;

int rows=M.GetRows();

int cols=M.GetCols();

float * m_pData=M.GetData();

for(row=0;row

{

for(col=0;col

out<

out<

}

return out;

}

istream & operator >>(istream & in ,Matrix & M) {

char temp[1024];

cin>>temp;

M=temp;

return in;

}

Matrix Matrix::operator +(Matrix & M)

{

Matrix temp1;

int rows_2=M.GetRows();

int cols_2=M.GetCols();

float * m_pData_2=M.GetData();

if(rows==rows_2 && cols==cols_2)

{

float * m_pData_1;

temp1.Clear();

m_pData_1=temp1.Init(rows,cols);

int i;

for(i=0;i

m_pData_1[i]=m_pData[i]+m_pData_2[i];

}

else

temp1=*this;

return temp1;

}

Matrix Matrix::operator -(Matrix & M)

{

Matrix temp1;

int rows_2=M.GetRows();

int cols_2=M.GetCols();

float * m_pData_2=M.GetData();

if(rows==rows_2 && cols==cols_2)

{

float * m_pData_1;

temp1.Clear();

m_pData_1=temp1.Init(rows,cols);

int i;

for(i=0;i

m_pData_1[i]=m_pData[i]-m_pData_2[i];

}

else

temp1=*this;

return temp1;

}

Matrix Matrix::operator *(Matrix & M)

{

int row;

int col;

Matrix temp1;

int rows_2=M.GetRows();

int cols_2=M.GetCols();

float * m_pData_2=M.GetData();

if(cols==rows_2)

{

float * m_pData_1;

temp1.Clear();

m_pData_1=temp1.Init(rows,cols_2);

for(row=0;row

for(col=0;col

{

float sum=0;

int i;

for(i=0;i

sum+=m_pData[row*cols+i]

*

m_pData_2[i*rows+col];

m_pData_1[row*cols+col]=sum;

}

}

else

temp1=*this;

return temp1;

}

Matrix Matrix::operator *(float k)

{

Matrix temp;

temp.Clear();

float * m_pData_1=temp.Init(rows,cols);

int i;

for(i=0;i

m_pData_1[i]=m_pData[i]*k;

return temp;

}

Matrix Matrix::operator /(float k)

{

Matrix temp;

temp.Clear();

float * m_pData_1=temp.Init(rows,cols);

int i;

if(k!=0)

for(i=0;i

m_pData_1[i]=m_pData[i]/k;

else

temp=*this;

return temp;

}

Matrix Matrix::Transpose()

{

int row;

int col;

Matrix temp;

temp.Clear();

float * m_pData_1=temp.Init(cols,rows);

for(col=0;col

for(row=0;row

m_pData_1[col*rows+row]=m_pData[row*cols+col];

return temp;

}

Matrix Matrix::Left(int row_, int col_)

{

int row;

int col;

Matrix temp;

temp.Clear();

float * m_pData_1=temp.Init(rows-1,cols-1);

int i=-1;

for(row=0;row

if(row!=row_)

for(col=0;col

if(col!=col_)

m_pData_1[++i]=m_pData[row*cols+col];

return temp;

}

float Matrix::Abs()

{

/*********基本算法***************************** float abs=0;

if(rows==cols)

if(rows==1)

return m_pData[0];

else

{

int i;

int state=-1;

for(i=0;i

{

state=-state;

abs+=m_pData[i]*state*Left(0,i).Abs();

}

return abs;

}

else

return -1;

/***********上三角算法*******************/ Matrix temp(*this);

temp.Simplify();

float * m_pData_temp=temp.GetData();

int i;

float sum=1;

for(i=0;i

sum*=m_pData_temp[i*cols+i];

return sum;

}

float Matrix::NumLeft(int row_, int col_)

{

return Left(row_,col_).Abs()*pow(-1,row_+col_); }

Matrix Matrix::Adverse()

{

Matrix temp;

float abs=Abs();

if(rows!=cols || abs==0)

return *this;

temp.Clear();

float * m_pData_=temp.Init(rows,cols);

int i;

int j;

for(i=0;i

for(j=0;j

m_pData_[i*cols+j]=NumLeft(j,i)/abs;

return temp;

}

Matrix Matrix::Star()

{

Matrix temp;

if(rows!=cols)

return *this;

temp.Clear();

float * m_pData_=temp.Init(rows,cols);

int i;

int j;

for(i=0;i

for(j=0;j

m_pData_[i*cols+j]=NumLeft(j,i);

return temp;

}

void Matrix::Change(int Index1, int Index2, int Direction)

{

int row;

int col;

float temp;

if(Direction==Horizontal)

for(row=0;row

{

temp=m_pData[row*cols+Index2];

m_pData[row*cols+Index2]=m_pData[row*cols+Index1];

m_pData[row*cols+Index1]=temp;

}

else if(Direction==V ertical)

for(col=0;col

{

temp=m_pData[Index2*cols+col];

m_pData[Index2*cols+col]=m_pData[Index1*cols+col];

m_pData[Index1*cols+col]=temp;

}

}

void Matrix::Devided(float k,int Index,int Direction)

{

int row;

int col;

if(Direction==Horizontal)

{

for(col=0;col

m_pData[Index*cols+col]/=k;

}

else if(Direction==V ertical)

{

for(row=0;row

m_pData[row*cols+Index]/=k;

}

else

;

}

void Matrix::Times(float k,int Index,int Direction)

int row;

int col;

if(Direction==Horizontal)

{

for(col=0;col

m_pData[Index*cols+col]*=k;

}

else if(Direction==V ertical)

{

for(row=0;row

m_pData[row*cols+Index]*=k;

}

else

;

}

void Matrix::Move(float k,int Index1,int Index2,int Direction)

{

int row;

int col;

if(Direction==Horizontal)

{

for(row=0;row

m_pData[row*cols+Index2]+=m_pData[row*cols+Index1]*k;

}

else if(Direction==V ertical)

{

for(col=0;col

m_pData[Index2*cols+col]+=m_pData[Index1*cols+col]*k;

}

else

;

}

bool Matrix::Simplify(int style)

{

int i;

int j;

if(rows==1 && cols==1)//1行而且1列的矩阵不需要整理

;

else

{

/**********以下,确保主斜线上没有0********************/ for(i=0;i

{

if(m_pData[i*cols+i]==0)

{

j=Find(0,i,i,rows,V ertical,1);

if(j!=-1)

Change(i,j,V ertical);

}

}

/************以下将矩阵化为上三角*********************/ float k;

for(i=0;i

{

if(m_pData[i*cols+i]==0)continue;

for(j=i+1;j

{

k=m_pData[j*cols+i]/m_pData[i*cols+i];

Move(-k,i,j,V ertical);

m_pData[j*cols+i]=0;

}

}

}

/*********以下将上三角阵化为最简*******************/

if(style==Pretty)

{

/*********先将主对角线化为1********************/

float k;

for(i=0;i

{

k=m_pData[i*cols+i];

if(k!=0 && k!=1)

Devided(k,i,Horizontal);

}

/******消掉上三角中的数字*******************/

for(i=1;i

{

if(m_pData[i*cols+i]==0)continue;

for(j=0;j

{

k=m_pData[j*cols+i];

Move(-k,i,j,V ertical);

}

}

}

return true;

}

int Matrix::Rank()

{

Matrix temp(*this);

temp.Simplify();

float * m_pData_temp=temp.GetData();

int i;

for(i=rows-1;i>=0;i--)

{

if(temp.Find(0,i,0,cols-1,Horizontal,1)!=-1)

return (i+1);

}

return 0;

}

int Matrix::Find(float k, int Index,int pos1,int pos2, int style1,int style2) {

int row;

int col;

if(style2==0)

{

if(style1==V ertical)

{

for(row=pos1;row<=pos2;row++)

if(m_pData[row*cols+Index]==k)return row;

return -1;

}

else if(style1==Horizontal)

{

for(col=pos1;col<=pos2;col++)

if(m_pData[Index*cols+col]==k)return col;

return -1;

}

else

return -1;

}

else

{

if(style1==V ertical)

{

for(row=pos1;row<=pos2;row++)

if(m_pData[row*cols+Index]!=k)return row;

return -1;

}

else if(style1==Horizontal)

{

for(col=pos1;col<=pos2;col++)

if(m_pData[Index*cols+col]!=k)return col;

return -1;

}

else

return -1;

}

}

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)

大学生计算机作业

“没有任何借口”是西点军校奉行的最重要的行为准则,它强化的是每一位学员想尽办法去完成任何一项任务,而不是为没有完成任务去找借口,哪怕看似合理的借口。 在西点,我作为新学生的第一课,是来自一位高年级学员冲着我大声训导。他告诉我不管什么时候遇到学长或者长官问话,只能有四种回答:“报告长官,是;报告长官,不是;报告长官;没有任何借口;报告长官,我不知道。”除此之外不能再多说一个字。 “没有任何借口”看起来似乎很绝对,很不公平,但是人生并不是永远公平。西点就是要让学员明白;无论遇到什么样的环境,都必须学会对自己的一切行为负责!学员在学校只是年轻的军校学生,但是日后肩负的却是和其他人的生死存亡乃至整个国家的安全。在生死关头,你还能到哪里去找借口哪怕最后找到了失败的教训又如何“没有任何借口”的训练,让西点学员养成了毫不畏惧的决心、坚强的毅力、完美的执行力及在限定的时间内把握每一分,没一秒去完成任何一项任务的信心和信念。 在我的前辈学员中,又很多人都是没有任何热借口的诠释者和执行者。伟大的罗文上校是这样,若果不是秉持着没有任何借口这一重要的行为准则,把信送给加西亚将军是不可能的。伟大的巴顿将军是这样的。1916年,作为美国墨西哥远征军总司令潘兴将军副官的巴顿,也有过一次类似

的送信经历,巴顿将军的日记中写道: “有一天,潘兴将军派我去给豪兹将军送信。但我们所了解的关于豪兹将军的情报只是说他已经通过普罗维登西区牧场。我要了两名士兵和三匹马,顺着这个连队的车辙前进,走了不多远,又遇到了第10骑兵团的一支侦查巡逻兵。他们告诉我们不要再往前走了,因为前面的树林里到处都是威利斯塔人。我没有听,沿着峡谷继续前进。遇到了费切特将军指挥着第7骑兵团的一支巡逻队。他们劝我们不要往前走了,因为峡谷里到处都是维利斯塔人。他们也不知道豪兹将军在哪里。但是我们继续前进,最后终于找到豪兹将军。” 我的同学莱瑞·杜瑞松上校也 是这样的。 莱瑞·杜瑞松在第一次奉派外地服役的时候,有一天连长派他到营部去,交代给他7件任务;要去见一些人,要请示上级一些事;还有些东西要申请,包括地图和醋酸盐。杜瑞松下定决心把7件任务都完成,虽然他并没有把握要怎么去做。果然事情并不顺利,问题就出在醋酸盐上。他滔滔不绝地向负责补给的中士说明理由,希望他能从仅有的存货中拨出一点。杜瑞松一直缠着他,到最后不知道是被杜瑞松说服了,相信醋酸盐确实有重要的用途,还是眼见没有其他办法能够摆脱杜瑞松,中士终于给了他一些醋酸盐。

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功能模块层次图 将算术表达式转化为逆波兰表达式 计算逆波兰表达式的值 简单计算器 表 达 式 格 式 转 换 系统 求 值 计 算 系 统

C语言简易计算器的实现

目录 一.课程设计目的 (1) 二.设计环境 (1) 三.设计内容 (1) 四.设计说明 (2) 五.设计程序流程图 (2) 六.调试 (4) (1)错误原因分析一 (4) (2)语法错误 (5) (3)逻辑错误 (5) 七. 调试结果图 (6) 八. 结论与心得体会 (7) 九.附录 (8) 具体代码实现 (8) 十.参考文献 (18)

一.课程设计目的 1.通过一个学期的学习,我认为要学号C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践来巩固我 们的知识,特别是学计算机专业的,我们更应该注重这一环节, 只有这样我们才能成为一个合格的计算机人才。通过这一个课程 设计,进一步来巩固所学的语句,如:循环,和分支结构的运用。还要熟悉四则运算和函数的算法。 2.通过这次课程设计扩展自己的知识面,课本上的东西是远 远不够的,可以通过上网或去图书馆查资料等方式得到一些新的 知识, 3.通过课程设计,加深对课程化设计思想的理解,能进行一 个系统功能分析,并设计一个合理的模块化结构,提高程序开发 能力。 二.设计环境 1.硬件:一台完整的电脑,包括键盘、鼠标,最小硬盘空间1GHz 2.软件:安装有Microsoft visual c++6.0 三.设计内容 以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现

简单的加,减,乘,除等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。 (1)定义一个结构体类型数组,输入0~9及+、--、*等符号的信息,将其信息存入文件中; (2)输入简单的加减乘除算术计算式,并在屏幕上显示计算结果; (3)画出部分模块的流程图; (4)编写代码; (5)程序分析与调试。 四.设计说明 1)包含的功能有:加、减、乘、除运算,开方、平方等功能。 (2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。 (3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。 (4)计算功能基本上是用系统内部函数。 (5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。 (6)“CE”按钮可以清除所有已输入的数据从头计算 五.设计程序流程图

C语言实现计算器功能

实验一多功能计算器 一、问题描述 设计一个多功能计算器,可以完成基本的计算。 设计要求: 1、具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果。结果可以作为下一个运算的第一运算数。按‘C’清屏,按‘R’返回菜单。 例如:输入:2 + 5 输出:7 2、实现单运算符表达式计算的功能。输入的操作数可以包含整数或浮点数。输入表达式如下: 例如:输入:2+5 输出:7 二、算法说明 1.数据结构说明(可以图示说明,也可以文字说明) 本程序主要根据选择菜单编写了六个自定义函数,用于在main()函数中调用,在main()中,用一个字符变量num1来记录下菜单选项的标号,根据num1的值来决定调用哪个函数。 程序要完成的功能及所要用到的函数如下:

下面就是整个程序的流程图:

2.算法说明(即函数说明) void suanshuyunsuan() //做算术运算时调用的函数 void suanshuyunsuan2() //选择继续做算术运算调用的函数,将上次运算的结果做为下次算术运算的第一个操作数//判断算术运算就是否继续 void panduan() //判断算术运算就是否继续 void biaodashiyunsuan() //单运算符表达式实现函数 void qingping() //清除屏幕 void fanhuicaidan() //显示菜单 三、测试结果(这部分需文字与图示结合) 1.第一组测试用例 (1)测试输入: 测试目的:测试算术运算的功能 结果输出:

(2)再一次输入:1测试目的:测试算术运算就是否能继续 结果输出: (3)这时输入:0 测试目的:退出算术运算 结果输出:

大学计算机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语言制作简单计算器

C语言制作简单计算器 一、项目介绍 我们要用c语言做一个简单的计算器,进行加、减、乘、除操作。本程序涉及的所有数学知识都很简单,但输入过程会增加复杂性。我们需要检查输入,确保用户没有要求计算机完成不可能的任务。还必须允许用户一次输入一个计算式,例如:32.4+32 或者9*3.2 项目效果图 编写这个程序的步骤如下: ?获得用户要求计算机执行计算所需的输入。 ?检查输入,确保输入可以理解。 ?执行计算。 ?显示结果。 三、解决方案 1.步骤1

获得用户输入是很简单的,可以使用printf()和scanf()。下面是读取用户输入的程序代码: #includeint main(){ double number1=0.0; //定义第一个操作值 double number2=0.0; //定义第二个操作值 char operation=0; //operation必须是'+''-''*''/'或'%' printf("\nEnter the calculation\n"); scanf("%lf%c%lf",&number1,&operation,&number2); return0; } 2.步骤2 接着,检查输入是否正确。最明显的检查是要执行的操作是否有效。有效的操作有+、-、*、/和%,所以需要检查输入的操作是否是其中的一个。 还需要检查第二个数字,如果操作是/或者%,第二个数字就不能是0。如果右操作数是0,这些操作就是无效的。这些操作都可以用if语句来完成,switch语句则为此提供了一种更好的方式,因此它比一系列if语句更容易理解。 switch(operation) { case'+': printf("=%lf\n",number1+number2); break; case'-': printf("=%lf\n",number1-number2); break; case'*': printf("=%lf\n",number1*number2); break; case'/': if(number2==0) printf("\n\n\aDavision by zero error!\n"); else printf("=%lf\n",number1/number2); break;

C语言课程设计--计算器(图形界面)

扬州大 学 题目一个简易计算器的设计与实现 班级 学号 姓名 指导教师 成绩 老师评语: 扬州大学信息工程学院 2010 年6 月25

目录 一、程序设计目的: (1) 二、程序设计内容: (1) 三、课程设计所补充的内容:补充的函数或算法…………3,4 四、系统总体设计 (4) 五、系统详细设计………………………………………5,6,7,8 六、运行结果………………………………………………8,9,10 七、系统调试…………………………………………8,9,10,11 八、课程设计体会总结………………………………8,9,10,11

1 课程设计目的 (1).课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于C语言对初学者较难掌握,因而对一个完整的C语言程序不适合平时实验。通过课程设计可以达到综合设计C语言程序的目的。 (2)通过本课程设计,可以培养独立思考,综合运用所学有关相应知识的能力,能更好地使用C语言的知识,更好地了解C语言的好处和其可用性!掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础! (3)通过本程序训练程序设计的基本技能,掌握字符串的表示方法和字符串函数的功能、自学掌握四则运算的算法及WIN-TC的图形操作的基本知识、键盘上特殊键的获取及图形方式下光标的显示。 2 课程设计内容 目的:本课程的课程设计要求学生模拟实现一个简单计算器,要求(1)能够实现四则运算,并能支持优先级运算。(2)三角与反三角运算:如sinx,cosx等。(3)指数对数运算:如log(x),lnx,e的x次方等。(4)其他运算:如X!,x 的累加等。(4)不允许调用库函数,使用自行开发的程序实现常用函数运算。(5)进一步考虑计算器外观设计,用可视化界面给出计算器外观、功能按键及输入界面。 使用说明:执行加法运算,'—'表示执行减法运算,表示执行乘法运算,'/'表示除法运算.‘Q’表示退出计算器‘C’表示清零,’=’表示得出结果'^'表示执行x的y次方,'e'表示执行e的x次方操作,'&'表示执行累加操作.,你可以可以用键盘上的上下左右键对光标进行移动,当光标移动到计算器按键上时,按ENTER即可执行该键的操作!最后按“=”则可得出结果。 3 课题设计的补充知识 本程序通过int specialkey(void)和#include来实现对屏幕的操作,通过调用int arrow()函数,int specialkey(void)和#include来实现对光标的操作。计算机图形采用Turbo C 2.0绘图程序制作。因此涉及C的图形程序设计知识。此外,由于不允许调用库函数,则要自行开发程序实现sinx,cosx,e的x次方函数运算,则可以根据幂级数的展开式来设计实现其运算的算法,而x的阶乘和x的累加则可用for语句来实现。 最后,不得不说说四则运算的算法,有两种方法可以实现:(1)利用堆栈实现四则运算(2)还可以用递归整数的四则运算。 sinx函数 #include

(完整word版)C语言简易计算器课程设计.doc

C语言课程设计报告书题目:简易计算器 院系: 班级: 学号: 姓名:

摘要 该软件为用户提供在windows 系统上的简易计算器,能进行简单的加、减、 乘、除四则运算与混合运算。目的是为了巩固和加深 C 语言课程的基本知识的理 解和掌握,利用 C语言进行基本的软件设计,掌握 C 语言的编程和程序调试 的基本技能,掌握书写程序设计说明文档的能力,提高运用 C 语言解决实际问 题的能力。 关键词: C; 简易计算器 ; 程序 ; 基本算法;混合运算 SUMMARY the software provides a simple calculator in Windows system for users ,can be a simple add,subtract,multiply,divide.The purpose is to consolidate and deepen the basic knowledge of C language courses to understand and master, The use of C language for software design basic, To master the basic skills of C language programming and program debugging, Master the writing program design documentation ability,improve the ability to use C language to solve practical problems.

大学计算机基础第5章到作业及答案

大学计算机基础第五章作业 一、选择题 1.下面有关计算机操作系统的叙述中,______是不正确的。 A操作系统属于系统软件 B操作系统只管理内存,而不管理外存 C UNIX、Windows 2000属于操作系统 D计算机的内存、I/O设备等硬件资源也由操作系统管理。 2.下面几种操作系统中,______不是网络操作系统。 A MS-DOS B Windows 2000 C Linux D Unix 3.下面有关Windows系统的叙述中,正确的是。 A Windows文件夹中只能包含文件。 B 在Windows环境中,安装一个设备驱动程序,必须重新启动后才起作用。 C 在Windows环境中,一个程序没有运行结束就不能启动另外的程序。 D Windows是一种多任务操作系统。 4.进程______。 A与程序是一一对应的。 B是一个程序及其数据,在处理机上执行时所发生的活动。 C是不能独立运行的。 D是为了提高计算机系统的可靠性而引入的。 5.交换技术是对______技术的改进,其目的是为了更加充分地利用系统的各种资源。 A虚拟存储 B Cache C调入调出D自动覆盖 6.Word编辑的文件属于______。 A 系统文件 B 文本文件C二进制文件D输出文件 二、判断题(正确打√错误打×) 1.配置操作系统的目的是提高计算机系统的处理速度。(× ) 2.计算机没有操作系统就不能工作。(×) 3.Linux发行版的发行商拥有其发行版中所有软件模块的版权。(×) 4.引入进程可以改善系统的资源利用率、提高吞吐量,但增加了系统的空间和时间开销。(√) 5.在没有虚存的系统中,采用覆盖技术就可以利用较小的存储空间处理较大的程序。(√ ) 6.文件目录必须常驻内存。(×) 三、填空题 1.配置操作系统主要有两个目的:管理计算机资源和提供用户界面。 2.进程可定义为一个数据结构,及能在其上进行操作的一个程序的执行活动。3.Linux是与Unix类似的、可以免费使用的操作系统。 4.操作系统提供的用户接口大体上有两种:图形用户界面和命令方式。 5.理想情况下,利用虚拟存储器可以得到一个容量上接近外存、速度上接近内存的存储系统。

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 计算器的使

重庆大学计算机基础网上作业答案

计算机基础参考资料 一、单项选择题(本大题共 0 分,共 50 小题,每小题 0 分) 1.在Excel 中,删除工作表操作时,首先选择要删除的工作表;在选择”开始”菜单的删除选项,选择 B ,完成删除工作表的操作。 A.删除单元格 B.删除工作表 C.删除工作表行 D.全选 2.在Word 中,当多个文档打开时.关于保存这些文档的说法中正确的是 A A.用”文件”菜单的”保存”命令,只能保存活动文档 B.用”文件”菜单的”保存”命令,可以重命名保存所有文档 C.用”文件”菜单的”保存”命令,可一次性保存所有打开的文档 D.用”文件”另存为”全部保存”命令保存所有打开的文档 3.信息技术是(D )的产物,在应用中得以拓展和延伸。 A.计算机技术发展 B.网络技术发展 C.通讯技术发展 D.以上三种综合发展 4.计算机网络按通信距离可以分为局域网、城域网和(B )。 A.无线网 B.广域网 C.移动网 D.专用网 5.人们要使用计算机,首先需要把想要做的事情以命令和数据的形式通过 A 输入计算机。 A.输入设备 B.输出设备 C.打印设备 D.主机 6.Word 编辑状态,下列可以设定打印纸张大小的命令是(B )。 A.“文件”菜单中的“打印预览”命令 B.“文件”菜单中的“页面设置”命令 C.“视图”菜单中的“工具栏”命令 D.“视图”菜单中的“页面”命令 7.幻灯片窗格中可以显示和编辑非文字内容,包括 D 。 A.图片 B.表格 C.影音 D.以上所有 8.Word 可以使用插入( A)对话框向文档中插入艺术字。 A.艺术字 B.对象 C.剪贴画

D.图标 9. D 应用程序不属于 Microsoft Office 2010 组件。 A.Microsoft Word 文字处理 B.Microsoft Excel 数据制表 C.Microsoft Outlook 邮件管理 D.WPS 10.下面哪种不是多媒体播放器软件(D ) A.Windows Media Player B.暴风影音 C.Real Player D.Adobe Reader 11.下面不属于网络安全的基本属性是(D )。 A.机密性 B.可用性 C.完整性 D.正确性 12.Microsoft Word 2010 中获得帮助的方法是(D )。 A.快捷键 F1 B.点击“文件”菜单中“帮助” C.点击窗口右上角的“问号”标志 D.以上所有 13.在E xcel 中,工作簿是指 D 。 A.操作系统 B.不能有若干类型的表格共存的单一电子表格 C.图表 D.在Excel 环境中用来存储和处理工作数据的文件 14.下列关于杀毒软件说法不正确的是D。 A.杀毒软件可以清除特洛伊木马 B.杀毒软件可以清除恶意软件 C.杀毒软件可以清除电脑病毒 D.杀毒软件不需要升级 15.Windows 操作系统内置的多媒体播放器是 B 。 A.Windows Movie Maker B.Windows Media Player C.Windows Internet Explorer D.Windows 录音机 16.编辑幻灯片内容时,需要先 B 对象。 A.调整 B.选择 C.删除 D.粘贴 17.在W ord 中,常用工具栏中的”格式刷”工具可以 C 。 A.清除所选择的文本 B.复制所选择的文本

大学计算机基础第3章作业

大学计算机基础第三章作业 一、选择题 1.算法可以没有_A_____。 A)输入B)输出C)输入和输出D)结束2.现代程序设计目标主要是__D____。 A)追求程序运行速度快B)追求程序行数少 C)既追求运行速度,又追求节省存储空间 D)追求结构清晰、可读性强、易于分工合作编写和调试 3.算法流程图符号圆圈代表_C_____。 A)一个加工处理B)一个判断C)程序开始D)连接点 4.下面_A_____不是高级语言。 A)汇编语言B)JA V A语言C)ARGOL语言D)PROLOG语言 5.面向对象程序设计中的类将数据和_C_____封装在一起。 A)文件B)方法C)控制结构D)程序 二、判断题(正确打√错误打×) 1.结构化程序设计的目标是提高程序的运行效率。(×) 2.在三种基本结构中,顺序结构是最基本的结构。(√) 3.解释性语言程序在运行后会保留一个机器代码文件。(×) 4.C语言编译系统属于应用软件。(×) 5.面向对象程序可简单地描述为:程序=对象+消息。(√) 三、填空题 1.算法可以用图形法、伪码、等方法描述。 2.高级语言可分为面向过程型语言和 面向对象型语言。 3.程序的基本控制结构有顺序结构、选择结构、和循环结构。 4.算法的特性有:有穷性、确切性、输入、输出和可行性。 5.评价算法的两个指标是:时间复杂度、空间复杂度。 四、应用题 1、使用流程图表示求方程式ax2 +bx+c=0 的根,分别考虑d=b2- 4ac 大于0 、 等于0 和小于0 三种情况。 2、根据列表:Alice 、Byron 、Carol 、Duane 、Elaine 、Floyd 、Gene 、 Henry 、Iris ,回答下面问题: a) 哪种搜索方法(折半法或顺序法)查找Gene 更快? 折半法更快 b) 哪种搜索方法(折半法或顺序法)查找Alice 更快? 顺序法更快 c) 如果用顺序查找法查找Elaine ,会进行多少次比较?如果用折半法查找呢? 用顺序法5次,折半法2次 五、上机

用C语言编写简易计算器

供应链管理 用C语言设计简易计算器 班级:工业工程1103班 姓名: 2014/5/6

一、设计内容 我设计的是一款简易计算器,界面清楚,操作方便,它能实现以下功能:1.以界面形式给出计算器功能 2.简单的四则混合运算(支持小括号、优先级) 3.弦、余弦函数计算 4.指数、对数的运算 二、总体设计 简单计算器由五大模块组成,模块设计如下: 模块调用图 1.主函数 void main() 功能:调用各个主要模块,实现简单计算器的整体功能。2. 主界面函数void JieMian() 功能:使用有关图形函数模拟出可视化的计算器外观界面,并提供用户输入窗口。 3.四则混合运算函数void SiZeHunHeYunSuan() 功能:实现简单的加减乘除混合运算,并支持优先级和带括号的运算。 4.三角运算函数void SanJiaoYunSuan() 功能:实现基本的三角函数运算:sin(x)和cos(x)。 5.指对数函数void ZhiDuiShuYunSuan() 功能:实现基本的指数和对数运算。

三、采取的解决措施: 1.去图书馆借相关图书,上网查资料,通过自己的阅读,研究,不断的尝试,运行,修改,最终做出了简单的界面,但仍存在很多不足的地方,只能模拟出大体的外观,没能模拟出计算器中的各个键。 2.查在界面显示的函数原型,对比自己的程序,不断修改,对比,调试,检查,反思,最后发现是语句顺序错误,显示写在了判断的后面,修改成功。 3.在编写ln函数的时候,遇到很大困难,最后通过查阅资料,向别人请教编写出了函数。 四、详细代码: #include #include #include void main () { int i,flag; printf("*****欢迎使用简单计算器*******\n"); printf(" 1.加法运算\n"); printf(" 2.减法运算\n"); printf(" 3.乘法运算\n"); printf(" 4.除法运算\n"); printf(" 5.开方运算\n"); printf(" 6.平方运算\n"); printf(" 7.立方运算\n"); printf(" 8.正弦运算\n"); printf(" 9.余弦运算\n"); printf(" 10.正切运算\n"); printf(" 11.余切运算\n"); printf(" 12.平均值方差标准差运算\n"); printf("请输入i的值:\n"); scanf("%d",&i); switch(i) { case 1:flag=1;break; case 2:flag=2;break; case 3:flag=3;break; case 4:flag=4;break; case 5:flag=5;break; case 6:flag=6;break; case 7:flag=7;break; case 8:flag=8;break;

大学生计算机作业

大学生计算机作业 Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT

“没有任何借口”是西点军校奉行的最重要的行为准则,它强化的是每一位学员想尽办法去完成任何一项任务,而不是为没有完成任务去找借口,哪怕看似合理的借口。 在西点,我作为新学生的第一课,是来自一位高年级学员冲着我大声训导。他告诉我不管什么时候遇到学长或者长官问话,只能有四种回答:“报告长官,是;报告长官,不是;报告长官;没有任何借口;报告长官,我不知道。”除此之外不能再多说一个字。 “没有任何借口”看起来似乎很绝对,很不公平,但是人生并不是永远公平。西点就是要让学员明白;无论遇到什么样的环境,都必须学会对自己的一切行为负责!学员在学校只是年轻的军校学生,但是日后肩负的却是和其他人的生死存亡乃至整个国家的安全。在生死关头,你还能到哪里去找借口哪怕最后找到了失败的教训又如何“没有任何借口”的训练,让西点学员养成了毫不畏惧的决心、坚强的毅力、完美的执行力及在限定的时间内把握每一分,没一秒去完成任何一项任务的信心和信念。 在我的前辈学员中,又很多人都是没有任何热借口的诠释者和执行者。伟大的罗文上校是这样,若果不是秉持着没有任何借口这一重要的行为准则,把信送给加西亚将军是不可能的。伟大的巴顿将军是这样的。1916年,作为美国墨西哥远征军总司令潘兴将军副官的巴顿,也有过一次类似的送信经历,巴顿将军的日记中写道:

“有一天,潘兴将军派我去给豪兹将军送信。但我们所了解的关于豪兹将军的情报只是说他已经通过普罗维登西区牧场。我要了两名士兵和三匹马,顺着这个连队的车辙前进,走了不多远,又遇到了第10骑兵团的一支侦查巡逻兵。他们告诉我们不要再往前走了,因为前面的树林里到处都是威利斯塔人。我没有听,沿着峡谷继续前进。遇到了费切特将军指挥着第7骑兵团的一支巡逻队。他们劝我们不要往前走了,因为峡谷里到处都是维利斯塔人。他们也不知道豪兹将军在哪里。但是我们继续前进,最后终于找到豪兹将军。” 我的同学莱瑞·杜瑞松上校也是这样的。 莱瑞·杜瑞松在第一次奉派外地服役的时候,有一天连长派他到营部去,交代给他7件任务;要去见一些人,要请示上级一些事;还有些东西要申请,包括地图和醋酸盐。杜瑞松下定决心把7件任务都完成,虽然他并没有把握要怎么去做。果然事情并不顺利,问题就出在醋酸盐上。他滔滔不绝地向负责补给的中士说明理由,希望他能从仅有的存货中拨出一点。杜瑞松一直缠着他,到最后不

大学计算机word作业

界限,而其本身又是一种很冷酷的界限,它意味着一种纯净的美好,无论忧伤与快乐,是过去还是现在,或是将来。它总是来过…… 回首历史,站在历史的路口再次眺望,百感交集。在历经八十年的风霜雨雪的历程中,几多伟岸的身躯化成了一座座肃穆的丰碑;几多智者的灵魂化成了一颗颗璀璨的星辰;八十的风风雨雨,谱写了一代代青年的壮歌;八十年的坎坷历程,记载着一次次辉煌。或许那令人感觉遥远些,却让我们一同走进铁路的发展史,走负债经营的广梅汕公司。看,公司走过的坎坷历程序、走

过的艰辛道路,几分辛酸、几分自豪。在改革创业的浪潮中,我们豪迈的铁路兄弟姐妹们,我们骄人的机务人,同呼吸、共命运。过去,在市场经济的弹劾下,在不尽人意的环境中,他们为“创优质、保安全”而兢兢业业、默默无闻的工作着、奉献着。把青春化做公司的腾飞、凝聚成机务的辉煌。今天,自豪的今天,老一代的工作者老当益壮,进行着新的长征,为机务、为铁路再建新功。年青的一代亦中坚、任重而道远。他们同样为“创优质、保安全”而俯首当“牛”;当人民群众的“牛”;当鲁迅先生所言的“儒子牛”。有道是:“火车跑得快,全靠车头带。”还曾记在战高温、斗酷暑的暑期天,“战高温、斗酷暑”这是一条人们耳熟能详的标语,更是检查工作者们头顶酷热、挥汗如雨、忘我拼搏的生动写照。因运输繁忙,机车各系统也是满负荷运转,时常发生“高温病”,随机车毛病相对增多,检修人员不顾

与青春有关的日子 青春的岁月里,我收集那散落的缕缕霞光,用它 连缀出远方的云彩; 青春的时光中,我收集那零星的瞬间,用它们织出美好的回忆; 青春的短暂中,我收集一次次的感动,用它们填补内心的空寂。 一缕金色的霞光从眼前掠过,我匆忙去追逐,那是: 寒冷的冬天,风无情的吹打这沉睡的大地,雪花纷纷扬扬的飘下。一个干枯的枝干上已盖上了一层厚厚的雪被,在风中发出“吱吱呀呀”的呻吟声,似乎随时会断绝与母亲的最后一丝联系。有一片雪花悄无声息的落下,它发出了最后一丝呻吟。 如果没有那片雪花的重量,它不会这样坠落。 若用雪花的重量来比喻我们平时所付出的一点一滴的努力就会发现:一片雪花虽然微不足道,但不断的积累就有可能折断枝条,坚持不懈就能成功。如若一味的急功近利、轻言放弃,那成功永远不会向你打开大门。 量变积累到一定程度总会产生质变。 一个瞬间闪过,我将它小心翼翼的夹在记忆的长卷中,那是: 一位哲人说:“没有理想的勇士是盲汉,不善于克制的勇士是狂夫。” 经过细细的品味才知道,“克制”对于我们是多么的重要。如果崇高的理想是指向幸福的落帆,那么理性的克制将是稳定地载你驶向幸福的航船。而极富理性的克制需要雅量,也就是内涵。只有拥有“海涵”般胸怀的自我克制力,才算拥有大智慧,它有助于人们在登上理想的征途中消除情感世界不可避免的潜在危机,对于一个开拓者来说,它既是实现目标的保证,又是取得更大胜利的起点。 又是一次感动,我把它深藏在心中,那是: 一个西城老街的居民楼突然起火,九个居民被困 在楼上等待救援。消防队员根据这里的情形,拽下一 条就毛毯让居民一个个跳到毛毯上,背部着地。 第一个男人跳下,没有受伤,一个小孩跳下,背

用C语言编写计算器

用c编写的,有各种检错的功能,用栈和优先级实现。头文件是:ss.h typedef union{float a;char b;} eletype; typedef struct{ eletype *base; eletype *top; int stacksize; }stack; stack * createStack(int); int isempty(stack *); int gettopStack(stack *,eletype *); int push(stack *,eletype); int pop(stack *,eletype *data); stack * createStack(int m) { stack *p; p=(stack *)malloc(sizeof(stack)); if(!p)return 0; p->base=(eletype *)malloc(m*sizeof(eletype)); if(!p->base)return 0; p->top=p->base; p->stacksize=m; return p; } int isempty(stack *lp) { if(lp->top > lp->base)return 0; else return 1; } int gettopStack(stack *lp,eletype *data) { while(isempty(lp))return 0; *data = *(lp->top - 1); return 1; }

int push(stack *lp,eletype data) { if(lp->top - lp->base >= lp->stacksize) { lp->base=(eletype *)realloc(lp->base,(lp->stacksize+1)*sizeof(eletype)); if(!lp->base)return 0; lp->stacksize++; } lp->top++; *(lp->top-1)=data; return 1; } int pop(stack *lp,eletype *data) { while(isempty(lp))return 0; *data = *(--lp->top); return 1; } Main函数的编写: #include "ss.h" #define SHU printf("fuck!! biao da shi cuowu!!!"); int n,x,y=0; float t=0; char c; char panduan(char,char); float yunsuan(float,char,float); int jiexi(char a[100]); float zhuan(char c[20]); main() { char a[100]; int m; char d,l; stack *optr; stack *open; eletype data; eletype * data1; char e[20]; float j,k;

相关文档
相关文档 最新文档