C语言课程设计_语言代码_简易计算器设计

时间:2024.3.19

 

完成日期     年   月  日


摘  要

课程设计语言类课程的指导思想:使学生通过学习高级编程语言的知识、编程技术和基本算法,掌握课程设计的思想和方法,具备利用计算机求解实际问题的能力,能灵活运用高级语言进行程序设计。

其实认真学习一门语言并不难,关键是所追求的学习方法和途径。通过C语言程序设计,可以使我们掌握软件开发过程的难题分析、系统设计、程序编码、测试程序等基本方法和技能。同时,还能加强我们的时间管理意识,锻炼对难题的发现、分析和处理能力。我认为遇到难题并不可怕,可怕的是你不去解决,这可能是C语言课程设计的主要目的之一。

现时学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器。人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。这些大大方便了我们的生活给我们更多的选择和实现方式。本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。生成的程序可移植性强兼容性好稳定!本程序实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,求阶乘,取整,求正切,以及进制之间的相互转换。它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。但是,每次只能运算一个表达式,按 CE清空后再计算下一组式子。本程序在进制转换方面有一些漏洞,但一般的进制转换结果还是准确的。

关键字:C语言程序设计 基本算法 高级编程语言 思想和方法 计算器

Tubro c 2.0汉化版 

目录

第1章 选题的意义………………………………………………………………  4

1.1 自我介绍…………………………………………………………… 4

1.2 选题…………………………………………………………………… 4

第2章 系统功能需求分析 ……………………………………………………… 5

2.1系统的基本要求 ……………………………………………………… 5

2.2 数据结构和用法……………………………………………………… 5

第3章 系统设计 ………………………………………………………………… 6

第4章 系统实现 ………………………………………………………………… 7

第5章 总结 ……………………………………………………………………… 8


第1章 选题的意义

1.1 自我介绍

我的名字是彭东林,就读于石家庄铁道大学,电0905-2班,电气与电子工程分院。

1.2 选题

1.       我选的题目是:简单计算器的设计

2.       我选这道题的原因如下

  计算器对我们每一的学生都很熟悉,从初中到高中再到大学。但是我们只知道按下几个按钮计算器便会显示出结果,很少有学生分析过计算器究竟是如何运行的。C语言课程设计便是一个很好的机会,让我去亲自写计算器的运行代码,尽管是简单计算器的设计,但其背后的知识那是相当多的,对我是个挑战,我接受!

3.        运用的数据结构和知识点

TuborC 绘图知识   数学函数    选择结构    循环结构    数组    指针   顺序结构   进制间的转换 

4.        时间安排

5.        主要参考文献:

   《C语言绘图与计算机仿真技术》 王强如   北京航空航天大学

[1]科  钦.C语言程序设计.北京:电子工业出版社,1987:56-58

[2]徐君毅.C语言程序设计基础.上海:复旦大学出版社,1992:87-98

[3]李成付.C语言程序设计基础.北京:科学出版社,1992:42-67

[4]郝玉洁.C语言程序设计.北京:机械工业出版社,2000:63-88

[5]钱启平.C语言程序设计基础.北京:中国铁道出版社,2000:91-99

[6]李大友.C语言程序设计基础.北京:清华大学出版社,1999:58-98

[7]黄迪明.C语言程序设计.北京:电子科技大学出版社,1998:78-98

[8]姜仲秋.C语言程序设计基础.南京:南京大学出版社,1998:16-100

[9]李国昌.C语言程序设计基础.北京:科学出版社,1998:78-120

[10]谭浩强.C语言程序设计.北京:清华大学出版社,2000:74-129


2系统功能需求分析

2.1系统的基本要求

1. 算术运算功能。能够实现+、-、*、/、mod、int运算。

2. 函数运算功能。能够实现exp、ln、sin、x^y、log、cos、x^3、n!、tan、x^2、1/x等运算。

3. 进制之间的转换功能。能够实现十六、十、二、八进制数据之间的转换。

4.通过键盘控制字符和数字的输入。

2.2数据结构设计及用法说明

此程序调用的函数主要有<math.h>   /*数学函数的定义*/<conio.h>  /*屏幕操作函数*/<stdio.h>  /*I/O函数*/<stdlib.h>  /*库函数*/<stdarg.h>  /*变量长度参数表*/<graphics.h>  /*图形函数*/<string.h>  /*字符串函数*/<ctype.h>  /*字符操作函数*/。基本使用:用→←↑↓控制鼠标图形移动,当移动到相应得按钮时按回车键输入当前数字或执行对应的函数。

加法:输入一个被加数数,按“+”,输入被加数,按“=”,输出结果。

减法:输入被减数数,按“-”,输入减数,按“=”,输出结果。

乘法: 输入一个数,按“*”,输入另个数,按“=”,输出结果。

除法: 输入一个被除数,按“+”,输入另个除数,按“=”,输出结果。

求x的y次方: 输入数x,按“^”,输入数y,按“=”,输出结果。

求余:输入一个数,按“mod”,按“=”,输出结果。

取整:输入一个数,按“int”,按“=”,输出结果。

余弦:输入一个数,按“cos”,按“=”,输出结果。

正弦:输入一个数,按“sin”,按“=”,输出结果。

正切:输入一个数,按“tan”,按“=”,输出结果。

阶乘:输入一个数,按“n!”,按“=”,输出结果。

倒数:输入一个数,按“1/x”,按“=”,输出结果

十进制转二进制:输入一个十进制数,按“10->2”,输出二进制结果。

十进制转八进制:输入一个十进制数,按“10->8”,输出八进制结果。

八进制转十进制:输入一个八进制数,按“10->8”,输出十进制结果。


3系统设计

文本框: 输入第二个数y文本框: 输入第一个数x文本框: 开始
第4章 系统实现

本系统采用 C语言开发,生成可执行文件在任何系统下都可以执行,具有很好的数据处理能力和稳定性。并且使用Turbo C 2.0汉化版在原有基础上实现了多汉字的支持,方便了我们的使用。生成的程序可移植性强、兼容性好。这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。

本程序通过调用int specialkey(void) 和#include <conio.h>  来实现对屏幕的操作,通过调用int arrow()函数,int specialkey(void) 和#include <conio.h>来实现对光标的操作。计算器图形采用Turbo C 2.0绘图程序制作。


5总结

经过了五个星期的课程设计,在设计中我们遇到了很多编程问题,最后我们大家齐心合力的攻克一个个难关,我们组做得是计算器的设计,内容包括很多。运用的函数也很复杂。

测试阶段中发现了几处错误导致程序不能编译,去图书馆查找相关的资料, 又同学一起讨论。通过耐心的分析源代码终于编好了一个完整无误的程序。在这次的c语言程序设计实习中遇到了现实编程中必然见到的问题通过这些问题的解决积累了编程的实践经验。在实际的编程操作中发现自己c语言知识的不足,加深了对c语言的理解。在学习之余体验到收获的感觉.

善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高.课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。

自从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相我们把前面所学过的知识又重新温故了一遍。

通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。安排课程设计的基本目的,在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟。尤其是观察、分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。作为整个学习体系的有机组成部分,课程设计虽然安排在一周进行,但并不具有绝对独立的意义。它的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我系人才培养计划的完善和课程设置的调整。近年来,我系为适应学生的实践需要陆续增设与调整了一系列课程,受到同学的欢迎,其中这次的设计很受同学们的喜欢。课程设计达到了专业学习的预期目的。在一个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对软件开发流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。

程序源代码:

#include <dos.h>   /*DOS接口函数*/

#include <math.h>   /*数学函数的定义*/

#include <conio.h>  /*屏幕操作函数*/

#include <stdio.h>  /*I/O函数*/

#include <stdlib.h>  /*库函数*/

#include <stdarg.h>  /*变量长度参数表*/

#include <graphics.h>  /*图形函数*/

#include <string.h>  /*字符串函数*/

#include <ctype.h>  /*字符操作函数*/

#define UP 0x48    /*光标上移键*/

#define DOWN 0x50  /*光标下移键*/

#define LEFT 0x4b  /*光标左移键*/

#define RIGHT 0x4d  /*光标右移键*/

#define ENTER 0x0d  /*回车键*/

void *rar;       /*全局变量,保存光标图象*/

int specialkey(void) ;  /*获取特殊键函数*/

int arrow();     /*设置箭头光标函数*/

main()

{

    float num1=0,num2=0,result;

    int x,y,x0=315,y0=160,i,j,v,m,n,act,t1=0,t2=0,cd=0,zj=0,zj1=0,num=0,cd1=0,a[25];

    int flag1,flag2=1,flag3=1,flag4=1,flag5=1;

    char str2[5]={""},temp[20]={""},c,str3[10]={""},str4[10]={""},str5[20]={""},str7[20]={""};

    char str1[]={'A','1','2','3','4','5','6','7','B','8','9','=','+','-','*','/','C',

    'G','H','I','J','K','L','0','D','M','N','O','P','Q','.','$','E','R','S','T','U',

    'V','@','(','F','W','X','Y','Z','&',')','|'};

    int sj1[]={50,250,250,250,150,175,50,250};

    int sj2[]={145,285,155,285,150,275,145,285};

    int driver,mode;

    driver=DETECT;

    mode=0;

    initgraph(&driver,&mode,""); /*初始化*/

  setcolor(0);                 /*绘画*/

  setlinestyle(0,0,3);

  setfillstyle(1,13);

  sector(150,250,0,360,100,200);

  setfillstyle(1,2);

  setcolor(2);

  fillpoly(4,sj1);

  setcolor(4);

  setfillstyle(1,6);

  pieslice(150,250,180,360,80);

  setfillstyle(1,15);

  line(105,255,125,255);

  line(175,255,195,255);

  pieslice(115,265,0,360,5);

  pieslice(185,265,0,360,5);

  fillpoly(4,sj2);

  ellipse(150,295,180,360,12,7);

setlinestyle(0,0,3);   /*标题*/

settextstyle(4,0,8);

outtextxy(370,30,"PENGDONGLIN CACULATOR");

setbkcolor(3);

setcolor(5);

setfillstyle(5,9);

bar3d(280,120,630,440,5,3); /*键盘外框 三维*/

setlinestyle(0,0,1);

setfillstyle(1,8);

bar3d(290,130,620,430,5,1);  /*键盘内框 三维*/

setcolor(2); /*绿色*/

setfillstyle(1,7);    /*画按钮轮廓 三维*/

bar3d(300,140,330,180,2,1);

bar3d(340,140,370,180,2,1);

bar3d(380,140,410,180,2,1);

bar3d(420,140,450,180,2,1);

bar3d(460,140,490,180,2,1);

bar3d(500,140,530,180,2,1);

bar3d(540,140,570,180,2,1);

bar3d(580,140,610,180,2,1);

bar3d(300,185,330,225,2,1);

bar3d(340,185,370,225,2,1);

bar3d(380,185,410,225,2,1);

bar3d(420,185,450,225,2,1);

bar3d(460,185,490,225,2,1);

bar3d(500,185,530,225,2,1);

bar3d(540,185,570,225,2,1);

bar3d(580,185,610,225,2,1);

bar3d(300,235,330,275,2,1);

bar3d(340,235,370,275,2,1);

bar3d(380,235,410,275,2,1);

bar3d(420,235,450,275,2,1);

bar3d(460,235,490,275,2,1);

bar3d(500,235,530,275,2,1);

bar3d(540,235,570,275,2,1);

bar3d(580,235,610,275,2,1);

bar3d(300,285,330,325,2,1);

bar3d(340,285,370,325,2,1);

bar3d(380,285,410,325,2,1);

bar3d(420,285,450,325,2,1);

bar3d(460,285,490,325,2,1);

bar3d(500,285,530,325,2,1);

bar3d(540,285,570,325,2,1);

bar3d(580,285,610,325,2,1);

bar3d(300,335,330,375,2,1);

bar3d(340,335,370,375,2,1);

bar3d(380,335,410,375,2,1);

setcolor(2);

bar3d(420,335,450,375,2,1);

setcolor(2);

bar3d(460,335,490,375,2,1);

setcolor(2);

bar3d(500,335,530,375,2,1);

bar3d(540,335,570,375,2,1);

bar3d(580,335,610,375,2,1);

bar3d(300,385,330,420,2,1);

bar3d(340,385,370,420,2,1);

bar3d(380,385,410,420,2,1);

bar3d(420,385,450,420,2,1);

bar3d(460,385,490,420,2,1);

bar3d(500,385,530,420,2,1);

bar3d(540,385,570,420,2,1);

bar3d(580,385,610,420,2,1);

setcolor(1);/*按钮字符 蓝色*/

outtextxy(310,150,"A");

outtextxy(350,150,"1");

outtextxy(390,150,"2");

outtextxy(430,150,"3");

outtextxy(470,150,"4");

outtextxy(505,150,"5");

outtextxy(550,150,"6");

outtextxy(590,150,"7");

outtextxy(310,195,"B");

outtextxy(345,195,"8");

outtextxy(385,195,"9");

outtextxy(425,195,"=");

outtextxy(465,195,"+");

outtextxy(505,195,"-");

outtextxy(550,195,"*");

outtextxy(590,195,"/");

outtextxy(310,245,"C");

outtextxy(344,250,"mod");

outtextxy(385,245,"x^y");

outtextxy(425,245,"log");

outtextxy(465,245,"ln");

outtextxy(505,245,"int");

outtextxy(547,240,"16");

outtextxy(550,250,"|");

outtextxy(550,260,"2");

outtextxy(590,245,"0");

outtextxy(310,295,"D");

outtextxy(345,295,"cos");

outtextxy(385,295,"x^3");

outtextxy(430,295,"n!");

outtextxy(465,295,"tan");

outtextxy(505,295,"x^2");

outtextxy(550,295,".");

outtextxy(590,290,"8");

outtextxy(590,300,"|");

outtextxy(590,310,"2");

outtextxy(310,345,"E");

outtextxy(345,345,"1/x");

outtextxy(385,338,"sin");

;

outtextxy(425,338,"exp");

outtextxy(507,340,"10");

outtextxy(510,350,"|");

outtextxy(510,360,"2");

outtextxy(550,340,"8");

outtextxy(550,350,"|");

outtextxy(547,360,"16");

outtextxy(590,340,"2");

outtextxy(590,350,"|");

outtextxy(587,360,"16");

outtextxy(310,395,"F");

outtextxy(347,390,"10");

outtextxy(350,400,"|");

outtextxy(350,410,"8");

outtextxy(387,390,"10");

outtextxy(390,400,"|");

outtextxy(387,410,"16");

outtextxy(430,390,"2");

outtextxy(430,400,"|");

outtextxy(427,410,"10");

outtextxy(465,395,"QIT");

outtextxy(508,395,"CE");

outtextxy(550,390,"2");

outtextxy(550,400,"|");

outtextxy(550,410,"8");

outtextxy(590,390,"8");

outtextxy(590,400,"|");

outtextxy(587,410,"10");

setcolor(4);

outtextxy(465,350,"sft");

outtextxy(388,347,"16");

outtextxy(391,356,"|");

outtextxy(388,366,"10");

outtextxy(428,347,"16");

outtextxy(431,356,"|");

outtextxy(432,366,"8");

setlinestyle(0,0,3);

setcolor(1);

setfillstyle(1,7);

bar3d(350,40,550,100,2,1);

setlinestyle(0,0,1);

line(351,60,549,60);

line(450,40,450,60);

line(415,61,415,98);

setcolor(5);

setfillstyle(1,3);

bar(352,42,435,59);/*填充x*/

outtextxy(355,48,"x=");

setcolor(6);

bar(461,42,548,59);  /*填充y*/

outtextxy(465,48,"y=");

setfillstyle(1,6);

bar(436,42,460,59);/*填充符号*/

outtextxy(355,75,"Result=");

setcolor(5);

setfillstyle(1,15);

bar(416,61,549,98);/*填充结果*/

/*开始*/

    x=x0;

    y=y0;

    gotoxy(x,y);

    setcolor(6);

    arrow();/*显示光标*/

    putimage(x,y,rar,XOR_PUT);

    m=0;

    n=0;

    strcpy(str2,"");

    while((v=specialkey())!=45)

    {

       while((v=specialkey())!=ENTER)  /*当压下键不是回车时*/

       {

   putimage(x,y,rar,XOR_PUT); /*显示光标图象*/

    if(v==RIGHT) /*向右*/

    if(x>=595)

    {

    x=x0;

    m=0;

    }else

    {

    x=x+40;

    m++;

    }

    if(v==LEFT) /*向左*/

    if(x<=x0)

    {

    x=595;

    m=8-1;

    }

    else

    {

    x=x-40;

    m--;

    }

    if(v==UP)  /*向上*/

    if(y<=y0)

    {

    y=410;

    n=6-1;

    }

     else

     {

     y=y-50;

     n--;

     }

      if(v==DOWN) /*向下*/

       if(y>=410)

      {

        y=y0;

        n=0;

      }

      else

      {

      y=y+50;

      n++;

      }

      putimage(x,y,rar,XOR_PUT);

      }

       c=str1[n*8+m];

       if(isxdigit(c)||c=='.')  /*判断是否是十六进制的数字、字母或小数点*/

      { if(flag1==-1)      /*flag1为负数标志*/

      {

      strcpy(str2,"-");

        flag1=1;

      }

      sprintf(temp,"%c",c);/*将字符保存到字符串变量temp中*/

      strcat(str2,temp); /*将temp中的字符串连接到str2中*/

       if(flag2==1)      /*flag2为填充x或y的标志*/

      {

      setfillstyle(1,3);

      bar(352,42,435,59);/*填充x*/

      setcolor(5);

      outtextxy(355,48,"x=");

      outtextxy(372,48,str2);/*显示字符串x的值*/

       }

      if(flag2==0)

      {

      setcolor(6);

      setfillstyle(1,3);

      bar(461,42,548,59);  /*填充y*/

      outtextxy(465,48,"y=");

      outtextxy(480,48,str2);/*显示字符串y的值*/

      flag2=1;

      }

      }

       if(c=='+')

   {

      num1=atof(str2);/*将第一个操作数转换为浮点数*/

      strcpy(str2,""); /*清空str2*/

      act=1;

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(445,47,"+"); /*显示'+'*/

      flag2=0;

   }

     if(c=='-')

     {

     if(strcmp(str2,"")==0)

     flag1=-1;

     else

      {

      num1=atof(str2);

      strcpy(str2,""); /*将str2清空*/

      act=2; /*做计算减法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(445,47,"-"); /*显示'-'*/

      flag2=0;

      }

     }

     if(c=='*')

        {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=3; /*做计算乘法标志值*/

       setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(445,47,"*"); /*显示'*'*/

      flag2=0;

        }

        if(c=='/')

     {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=4; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(445,47,"/"); /*显示'/'*/

      flag2=0;

      }

       if(c=='Q')

       {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=7; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(437,45,"x^2"); /*显示'x^2'*/

      flag2=0;

       }

      if(c=='H')

      {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=5; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(437,45,"x^y"); /*显示"x^y"*/

      flag2=0;

       }

       if(c=='N')

        {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=6; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(437,45,"x^3"); /*显示"x^3"*/

      flag2=0;

         }

         if(c=='R')

         {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=8; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(437,45,"1/x"); /*显示"1/x"*/

      flag2=0;

         }

      if(c=='S')

       {

       if(flag3==0)

       {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str7,str2);

      strcpy(str2,""); /*将str2清空*/

      act=28; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,548,59);

      outtextxy(455,48,"jz:16->10"); /*显示"jz:16->10"*/

      flag3=0;

      flag5=0;

       }

       else

      {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=9; /*做计算除法标志值*/

      setcolor(9);

      setfillstyle(1,6);

      bar(436,42,460,59);

      outtextxy(437,45,"sin"); /*显示"sin"*/

      setcolor(6);

      setfillstyle(1,3);

      bar(461,42,548,59);  /*填充y*/

      outtextxy(465,48,"y=");

      flag2=0;

      }

         }

       if(c=='M')

        {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=10; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(437,45,"cos"); /*显示"cos"*/

      flag2=0;

         }

      if(c=='P')

        {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=11; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(437,45,"tan"); /*显示"tan"*/

      flag2=0;

         }

      if(c=='I')

        {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=12; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(437,45,"log"); /*显示"log"*/

      flag2=0;

         }

      if(c=='J')

        {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=13; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(437,45,"ln"); /*显示"ln"*/

      flag2=0;

         }

        if(c=='T')

        {

        if(flag3==0)

        {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str7,str2);

      strcpy(str2,""); /*将str2清空*/

      act=29; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,548,59);

      outtextxy(455,48,"jz:16->8"); /*显示"jz:16->8"*/

       flag3=0;

       flag5=0;

        }

        else

     {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=14; /*做计算除法标志值*/

      setcolor(9);

      setfillstyle(1,6);

      bar(436,42,460,59);

      outtextxy(437,45,"exp"); /*显示"exp"*/

      setcolor(6);

      setfillstyle(1,3);

      bar(461,42,548,59);  /*填充y*/

      outtextxy(465,48,"y=");

      flag2=0;

      }

         }

        if(c=='K')

        {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=15; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(437,45,"int"); /*显示"int"*/

      flag2=0;

         }

        if(c=='O')

        {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=16; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(442,45,"n!"); /*显示"n!"*/

      flag2=0;

         }

         if(c=='U')

         {

          flag3=0;

         }

       if(c=='G')

        {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=17; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,460,59);

      outtextxy(437,45,"mod"); /*显示"mod"*/

      flag2=0;

         }

       if(c=='V')

      {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=18; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,548,59);

      outtextxy(455,48,"jz:10->2"); /*显示"jz:10->2"*/

      flag3=0;

       }

       if(c=='W')

      {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=19; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,548,59);

      outtextxy(455,48,"jz:10->8"); /*显示"jz:10->8"*/

      flag3=0;

      }

       if(c=='X')

      {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str2,""); /*将str2清空*/

      act=20; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,548,59);

      outtextxy(455,48,"jz:10->16"); /*显示"jz:10->16"*/

      flag3=0;

      flag4=0;

       }

       if(c=='Y')

      {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      cd=strlen(str2);

      strcpy(str2,""); /*将str2清空*/

      act=21; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,548,59);

      outtextxy(455,48,"jz:2->10"); /*显示"jz:2->10"*/

      flag3=0;

       }

        if(c==')')

      {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      cd=strlen(str2);

      strcpy(str2,""); /*将str2清空*/

      act=22; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,548,59);

      outtextxy(455,48,"jz:2->8"); /*显示"jz:2->8"*/

      flag3=0;

       }

       if(c=='|')

      {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      cd=strlen(str2);

      strcpy(str2,""); /*将str2清空*/

      act=23; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,548,59);

      outtextxy(455,48,"jz:8->10"); /*显示"jz:8->10"*/

      flag3=0;

       }

       if(c=='(')

      {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      cd=strlen(str2);

      strcpy(str2,""); /*将str2清空*/

      act=24; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,548,59);

      outtextxy(455,48,"jz:2->16"); /*显示"jz:2->16"*/

      flag3=0;

       }

       if(c=='@')

      {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

       cd=strlen(str2);

      strcpy(str2,""); /*将str2清空*/

      act=25; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,548,59);

      outtextxy(455,48,"jz:8->16"); /*显示"jz:8->16"*/

      flag3=0;

       }

       if(c=='$')

      {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      cd=strlen(str2);

      strcpy(str2,""); /*将str2清空*/

      act=26; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,548,59);

      outtextxy(455,48,"jz:8->2"); /*显示"jz:8->2"*/

      flag3=0;

       }

       if(c=='L')

      {

      num1=atof(str2); /*将第二个操作数转换为浮点数*/

      strcpy(str7,str2);

      strcpy(str2,""); /*将str2清空*/

      act=27; /*做计算除法标志值*/

      setfillstyle(1,6);

      setcolor(9);

      bar(436,42,548,59);

      outtextxy(455,48,"jz:16->2"); /*显示"jz:16->2"*/

      flag3=0;

      flag5=0;

       }

        if(c=='&')

        {

        num1=0;

        num2=0;

        strcpy(str2,"");

        strcpy(str5,"");

        setcolor(1);

        setfillstyle(1,15);

        bar(416,61,549,98);/*清空结果*/

        setcolor(5);

        setfillstyle(1,3);

        bar(352,42,435,59);/*清空x*/

        outtextxy(355,48,"x=");

        setcolor(6);

        bar(450,42,548,59);  /*清空y*/

        outtextxy(465,48,"y=");

        setfillstyle(1,6);

        bar(436,42,460,59);/*清空符号*/

        strcpy(str7,"");

        cd1=0;

        num=0;

        flag2=1;

        flag3=1;

        flag4=1;

        flag5=1;

        cd=0;

        zj=0;

        zj1=0;

        }

        if(c=='Z')

       {

        putimage(x,y,rar,XOR_PUT);

        goto tie;   /*退出*/

       }

       if(c=='=')

      {

      num2=atof(str2); /*将第二个操作数转换为浮点数*/

      switch(act)  /*根据运算符号计算*/

      {

   case 1:

               result=num1+num2;break; /*做加法*/

   case 2:

               result=num1-num2;break; /*做减法*/

   case 3:

               result=num1*num2;break; /*做乘法*/

   case 4:

               result=num1/num2;break; /*做除法*/

   case 5:

               result=pow(num1,num2);break; /*做x的y次方*/

   case 6:

               result=pow(num1,3);break; /*做x^3*/

   case 7:

               result=pow(num1,2);break; /*做x^2*/

   case 8:

               result=1/num1;break; /*做1/x*/

   case 9:

               result=sin(num1);break; /*做sinx*/

   case 10:

               result=cos(num1);break; /*做cosx*/

   case 11:

               result=tan(num1);break; /*做tanx*/

   case 12:

             if(num2==0||num2==1)

                result=0;

             else

             result=log(num1)/log(num2);break; /*做LOGxY*/

   case 13:

              result=log(num1);break; /*做lnx*/

   case 14:

              result=exp(num1);break; /*做e^x*/

   case 15:

              result=(int)num1;

                   if(result<0)

              result--;break; /*做int x*/

   case 16:  result=1;

         for(i=1;i<=num1;i++)

                result=result*i;

                break; /*做n!*/

   case 17:

             result=fmod(num1,num2);break; /*做x/y取余*/

   case 18:  zj=num1;

              t1=1;

           for(i=0;t1!=0;i++)

           {

           t1=(int)(zj/2);

           t2=(int)(fmod(zj,2));

           a[i]=t2;

           zj=t1;

           }

            result=0;

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

            {

               result=result+a[i]*pow(10,i);

            }

            break;/*十进制转二进制*/

   case 19:  zj=num1;

             t1=1;

           for(i=0;t1!=0;i++)

           {

           t1=(int)(zj/8);

           t2=(int)(fmod(zj,8));

           a[i]=t2;

           zj=t1;

           }

            result=0;

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

            {

               result=result+a[i]*pow(10,i);

            }

            break;/*十进制转八进制*/

   case 21:

             zj=num1;

             result=0;

             for(i=0;i<=cd;i++)

             {

               result=result+fmod((int)(zj),10)*pow(2,i);

               zj=(int)(zj/10);

             }

                  break;/*2->10*/

   case 22:  result=0;

             zj=num1;

             for(i=0;i<=cd;i++)

             {

               result=result+fmod((int)(zj),10)*pow(2,i);

               zj=(int)(zj/10);

             }

             zj1=result;

             t1=1;

           for(i=0;t1!=0;i++)

           {

           t1=(int)(zj1/8);

           t2=(int)(fmod(zj1,8));

           a[i]=t2;

           zj1=t1;

           }

            result=0;

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

            {

               result=result+a[i]*pow(10,i);

            }

            break;/*2->8*/

   case 23:

             zj=num1;

             result=0;

            for(i=0;i<=cd;i++)

             {

               result=result+fmod((int)(zj),10)*pow(8,i);

               zj=(int)(zj/10);

             }

                 break;/*8->10*/

   case 26:

            zj=num1;

             result=0;

             setcolor(10);

             gotoxy(100,100);

             printf("%d",cd);

             for(i=0;i<=cd;i++)

             {

               result=result+fmod((int)(zj),10)*pow(8,i);

               zj=(int)(zj/10);

             }

            zj1=result;

            t1=1;

           for(i=0;t1!=0;i++)

           {

           t1=(int)(zj1/2);

           t2=(int)(fmod(zj1,2));

           a[i]=t2;

           zj1=t1;

           }

            result=0;

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

            {

               result=result+a[i]*pow(10,i);

            }

              break;/*8->2*/

   case 20:

             result=(int)num1;

             flag4=0;

             break;/*10->16*/

   case 24:zj=num1;

             result=0;

             for(i=0;i<=cd;i++)

             {

               result=result+fmod((int)(zj),10)*pow(2,i);

               zj=(int)(zj/10);

             }

             flag4=0;

              break;/*2->16*/

   case 25:

            zj=num1;

             result=0;

            for(i=0;i<=cd;i++)

             {

               result=result+fmod((int)(zj),10)*pow(8,i);

               zj=(int)(zj/10);

             }

            flag4=0;

              break;/*8->16*/

   case 27:

       cd1=strlen(str7); /*测量字符串str7的长度*/

      for(i=0,j=1;i<cd1;i++,j++)

    {

    if(str7[i]=='1')

        num=num+1*pow(16,cd1-j);

    else

    if(str7[i]=='2')

        num=num+2*pow(16,cd1-j);

    else

    if(str7[i]=='3')

        num=num+3*pow(16,cd1-j);

    else

    if(str7[i]=='4')

        num=num+4*pow(16,cd1-j);

    else

    if(str7[i]=='5')

        num=num+5*pow(16,cd1-j);

    else

    if(str7[i]=='1')

        num=num+1*pow(16,cd1-j);

    else

    if(str7[i]=='6')

        num=num+6*pow(16,cd1-j);

    else

    if(str7[i]=='7')

        num=num+7*pow(16,cd1-j);

    else

    if(str7[i]=='8')

        num=num+8*pow(16,cd1-j);

    else

    if(str7[i]=='9')

        num=num+9*pow(16,cd1-j);

    else

    if(str7[i]=='A')

        num=num+10*pow(16,cd1-j);

    else

    if(str7[i]=='B')

        num=num+11*pow(16,cd1-j);

    else

    if(str7[i]=='C')

        num=num+12*pow(16,cd1-j);

    else

    if(str7[i]=='D')

        num=num+13*pow(16,cd1-j);

    else

    if(str7[i]=='E')

        num=num+14*pow(16,cd1-j);

    else

    if(str7[i]=='F')

        num=num+15*pow(16,cd1-j);

  }

    zj=num;

    t1=1;

    for(i=0;t1!=0;i++)

    {

    t1=(int)(zj/2);

    t2=(int)(fmod(zj,2));

    a[i]=t2;

    zj=t1;

    }

    result=0;

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

    {

    result=result+a[i]*pow(10,i);

    }

          break;/*16->2*/

   case 28:

         cd1=strlen(str7);

    for(i=0,j=1;i<cd1;i++,j++)

        {

    if(str7[i]=='1')

        num=num+1*pow(16,cd1-j);

    else

    if(str7[i]=='2')

        num=num+2*pow(16,cd1-j);

    else

    if(str7[i]=='3')

        num=num+3*pow(16,cd1-j);

    else

    if(str7[i]=='4')

        num=num+4*pow(16,cd1-j);

    else

    if(str7[i]=='5')

        num=num+5*pow(16,cd1-j);

    else

    if(str7[i]=='1')

        num=num+1*pow(16,cd1-j);

    else

    if(str7[i]=='6')

        num=num+6*pow(16,cd1-j);

    else

    if(str7[i]=='7')

        num=num+7*pow(16,cd1-j);

    else

    if(str7[i]=='8')

        num=num+8*pow(16,cd1-j);

    else

    if(str7[i]=='9')

        num=num+9*pow(16,cd1-j);

    else

    if(str7[i]=='A')

        num=num+10*pow(16,cd1-j);

    else

    if(str7[i]=='B')

        num=num+11*pow(16,cd1-j);

    else

    if(str7[i]=='C')

        num=num+12*pow(16,cd1-j);

    else

    if(str7[i]=='D')

        num=num+13*pow(16,cd1-j);

    else

    if(str7[i]=='E')

        num=num+14*pow(16,cd1-j);

    else

    if(str7[i]=='F')

        num=num+15*pow(16,cd1-j);

  }

          result=num;

            break;/*16->10*/

   case 29:

    cd1=strlen(str7);

    for(i=0,j=1;i<cd1;i++,j++)

        {

    if(str7[i]=='1')

        num=num+1*pow(16,cd1-j);

    else

    if(str7[i]=='2')

        num=num+2*pow(16,cd1-j);

    else

    if(str7[i]=='3')

        num=num+3*pow(16,cd1-j);

    else

    if(str7[i]=='4')

        num=num+4*pow(16,cd1-j);

    else

    if(str7[i]=='5')

        num=num+5*pow(16,cd1-j);

    else

    if(str7[i]=='1')

        num=num+1*pow(16,cd1-j);

    else

    if(str7[i]=='6')

        num=num+6*pow(16,cd1-j);

    else

    if(str7[i]=='7')

        num=num+7*pow(16,cd1-j);

    else

    if(str7[i]=='8')

        num=num+8*pow(16,cd1-j);

    else

    if(str7[i]=='9')

        num=num+9*pow(16,cd1-j);

    else

    if(str7[i]=='A')

        num=num+10*pow(16,cd1-j);

    else

    if(str7[i]=='B')

        num=num+11*pow(16,cd1-j);

    else

    if(str7[i]=='C')

        num=num+12*pow(16,cd1-j);

    else

    if(str7[i]=='D')

        num=num+13*pow(16,cd1-j);

    else

    if(str7[i]=='E')

        num=num+14*pow(16,cd1-j);

    else

    if(str7[i]=='F')

        num=num+15*pow(16,cd1-j);

  }

    zj=num;

    t1=1;

    for(i=0;t1!=0;i++)

    {

    t1=(int)(zj/8);

    t2=(int)(fmod(zj,8));

    a[i]=t2;

    zj=t1;

    }

    result=0;

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

    {

    result=result+a[i]*pow(10,i);

    }

            break;/*16->8*/

      }

      setcolor(1);

      setfillstyle(1,15);

      bar(416,61,549,98); /*覆盖结果区*/

      if(flag4==0)      /*flag4为十进制和十六进制输出标识符*/

      {

       sprintf(str5,"%x",(int)result); /*转换为十六进制*/

       outtextxy(440,76,str5); /*显示结果*/

       flag4=1;

      }

      else

      {

      sprintf(temp,"%10.2f",result); /*将结果保存到temp中*/

      outtextxy(440,76,temp); /*显示结果*/

      }

      sprintf(str3,"%.2f",num1);

      setcolor(5);

      setfillstyle(1,3);

      bar(352,42,435,59);/*清空x*/

      outtextxy(355,48,"x=");

      if(flag5==0)   /*涉及到十六进制转为其它进制时的标识符*/

      {

       outtextxy(372,48,str7);

       flag5=1;

      }

      else

      {

      outtextxy(372,48,str3);

      }

      if(flag3==0)

      {

         flag3=1;

      }

      else

      {

      sprintf(str4,"%.2f",num2);

      setcolor(6);

      bar(461,42,548,59);  /*覆盖y*/

      outtextxy(465,48,"y=");

      outtextxy(480,48,str4); /*填充y*/

      }

      }

    }

    getch();   /*停留*/

tie:

    closegraph();   /*关闭*/

    printf("\n\n\n\n\n\n\n\n\n\n\n                              Thank you for use !\n\n\n\t\t\t\t\t");

    getch();

}

int specialkey(void)

{

   int key;

   while(bioskey(1)==0);  /*等待键盘输入*/

   key=bioskey(0);   /*键盘输入*/

   key=key&0xff? key&0xff:key>>8;  /*只取特殊键的扫描值,其余为0*/

   return(key);    /*返回键值*/

}

  int arrow()

{

   int size;

   int raw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4}; /*定义多边形坐标*/

   setcolor(1);

   setfillstyle(1,3); /*设置填充模式*/

   fillpoly(8,raw);    /*画出一光标箭头*/

   size=imagesize(4,4,16,16);  /*测试图象大小*/

   rar=malloc(size);  /*分配内存区域*/

   getimage(4,4,16,16,rar); /*存放光标箭头图象*/

   putimage(4,4,rar,XOR_PUT); /*消去光标箭头图象*/

   return 0;

}

更多相关推荐:
《C语言程序设计》课程设计报告(小组)

东莞理工学院C语言程序设计课程设计题目院系专业年级班别指导教师组长同组成员图书信息管理系统电子工程学院电子信息工程20xx2班侯家利黄培周20xx41301208邹日宙20xx41301211陈俊杰20xx41...

c语言课程设计报告

C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体设计四详细设计五运行结果六课程设计体会一实验目的1通过课程设计加深对结构化程序设...

C语言课程设计报告

河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机07-2班指导教师20XX年9月12日目录1.设计任务书21.…

C语言课程设计报告范例

C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的难点及解决办法四小结五附录原程序2一课程设计题目及所涉及知识点一课程设计题目1基...

厦门理工学院11级C语言C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求1二方案实现与调试221掷骰子游戏222射击游戏323汽车...

C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期专业计算机科学与技术班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求3二方案实现与调试321掷骰子游戏322汽车加...

c语言程序贪吃蛇课程设计报告

山东工商学院信电学院自动111班第一组贪吃蛇课程设计报告高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称高级语言程序设计英文名称CProgramExperimentDe...

C语言程序设计基础课程设计报告

程序设计基础课程设计报告课程名称课程设计题目程序设计基础课程设计学生信息管理系统姓名系专业年级学号指导教师职称计算机科学技术系计算机网络技术讲师20xx年1月1日一设计题目及要求1题目学生信息管理系统2要求1建...

《C语言程序设计》课程设计报告格式 (2)

C语言程序设计课程设计报告20xx20xx学年第1学期专业软件工程软件测试服务班级1班姓名学号陈家汀指导教师谢小竹成绩计算机与信息工程学院20xx年1月12日目录一课程设计的目的与要求页码二方案实现与调试页码2...

C语言课程设计报告---学籍信息管理系统

中国地质大学本科生课程论文封面1课程设计评语注1无评阅人签名成绩无效2必须用钢笔或圆珠笔批阅用铅笔阅卷无效3如有平时成绩必须在上面评分表中标出并计算入总成绩2目录课程设计评语2目录31课程论文题目42程序设计思...

C语言课程设计报告_运动会分数统计系统

C语言课程设计报告_运动会分数统计系统一.需求分析1问题描述运动会分数统计系统参加运动会有n个系,系编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前…

C语言课程设计报告-图书管理系统

课程设计报告图书馆管理系统目录1题目与要求22系统总体设计要给出必要的文字说明及必要的图示321功能需求分析明确选题的功能需求322系统功能模块划分要给出系统功能模块图43详细设计431重要数据的数据结构设计即...

c语言程序设计课程设计报告(34篇)