求帮编个计算器,附要求
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 : 计算-----------------
}