| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 575 人关注过本帖
标题:求帮编个计算器,附要求
只看楼主 加入收藏
漈轩
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-9-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
求帮编个计算器,附要求
14、算术计算器设计开发
功能要求:程序首先显示计算器界面,并等待用户输入一个算术计算式(见图1所示)。假如用户输入22+1<CR>,程序将在计算器的显示屏上输出计算结果(见图2所示)。如果输入错误,显示input error!。
 
图1                      图2

计算器的界面程序已经提供:(可访问http://its.下载)
#include <stdio.h>
#include <conio.h>

void main()
{
 float a,b;
 char c;
printf("                           \n");
 printf("                          \n");
 printf("                          \n");
 printf(" 1   2   3     +   -      \n");
 printf("                         \n");
 printf(" 4   5   6     *   /      \n");
 printf("                         \n");
 printf(" 7   8   9     =   \x1b   \n");
 printf("                         \n");
 printf(" 0   .             End   \n");
 printf("                         \n");

 gotoxy(2,3);
 //following codes get user's input and complete the calculation
 //add your codes down here!

 //add your codes up here!
 }

计算器1实现提示:
    读懂并掌握显示计算器界面的程序
    获取用户输入的算式只需利用”%f%c%f”调用scanf函数就可以。其中%c用来获取运算符+,-,*,/,%f用来获取运算数。
    利用if语句或switch语句区分 +,-,*,/ 的不同情况进行运算输出。
    在屏幕的指定位置输出利用gotoxy() 和cprintf函数实现。包含在conio.h头文件中。
1)    在算术计算器1的基础上,实现算术计算器2。
功能说明:算术计算器1一次只能执行一次计算,算术计算器2要求实现可以多次响应用户的计算请求。当用户输入一个算式后,计算器显示计算结果,同时屏幕项部显示:continue? 如果用户此时按Y键,则继续输入下一个算式,否则,程序终止。
计算器2实现提示:
    在“计算器1”的主要算法外层套一个循环语句
    在循环体内,显示完计算结果后调用getch函数,如果它的返回值不是’y’或’Y’,则跳出循环,程序终止。
2)    在算术计算器2的基础上,实现算术计算器3。
功能说明:算术计算器3不盲目等待用户输入,而是当用户没有输入时,计算器顶部显示一串闪烁的文本“This is a simple calculator!”, 并且这串文本一会儿变成红色,一会儿变成绿色。当用户按键时,这串文本不再闪烁。 如果用户按下End键,程序终止;否则程序接受用户输入的算式,并显示计算结果。 显示完计算结果后,程序继续闪烁言文本 “This is a simple calculator!”,等待用户输入下一个算式或按End键退出。
3)    计算器3实现提示:
    程序在调用scanf函数之前,必须先检测是否有键被按下。
    显示闪烁文本的算法如图3所示。
    检测是否有键按下,需要调用kbhit()库函数。
kbhit的原数原型: int kbhit(void);
kbhit函数功能:检测是否有键按下,如果有,则返回非0值(即真),否则返回0(即假)。 调用kbhit()函数的源程序必须包含conio.h文件。
    具有延时功能的函数是delay(unsigned milliseconds)。 包含在dos.h头文件中。
Delay()函数的功能是:将程序挂起milliseconds毫秒,即程序暂停或延时milliseconds毫秒。
    当kbhit函数返回非0时,还要检测是否是End键。这需要调用bioskey库函数。但参数必须是1,不能是0。因为bioskey(1)虽然返回用户所按键值,但没有接受键盘输入,不会影响其它函数(如scanf函数)接受有效输入。
    END的键值定义为:    #define END 0X4F00
    bioskey(1)判断是否是END的用法:
  if (bioskey(1)= =END)
  {
         相关操作
  }
外框改好了
include <stdio.h>
#include <conio.h>
#include <windows.h>
void gotoxy(int x, int y)
               //------------- Part 2 :  界面的显示----------------
{
 COORD pos = {x,y};
 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleCursorPosition(hOut, pos);
}
void main()
{
 float a,b;
 char c;
state:system("cls");//进行了替换
 gotoxy(1,2);
 printf("┌──────────────┐ \n");
 printf(" │                            │ \n");
 printf(" ├──────────────┤ \n");
 printf(" │   1    2    3      +    -  │ \n");
 printf(" │                            │ \n");
 printf(" │   4    5    6      *    /  │ \n");
 printf(" │                            │ \n");
 printf(" │   7    8    9     =   \x1b     \n");
 printf(" │                            │ \n");
 printf(" │   0    .               End │ \n");
 printf(" └──────────────┘ \n");

 gotoxy(2,3);//到此实现了屏幕的显示
                          
                     //----------part 2 : 计算-----------------

  

}


搜索更多相关主题的帖子: 计算器 
2010-09-13 20:38
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:14 
我这里没有TC的没办法调试 没发帮你了

清风拂暮(木)
2010-09-13 20:47
快速回复:求帮编个计算器,附要求
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012222 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved