用C语言能编出一个有计算器界面的计算器么?

作者&投稿:钊庆 (若有异议请与网页底部的电邮联系)
这段代码是一个使用C语言编写的计算器程序,旨在图形界面下运行。不过,代码中存在一些问题,例如变量未初始化、语法错误、逻辑错误以及一些不正确的函数调用。以下是修改后的代码,我已经纠正了这些问题,并且改进了代码的结构和可读性。
```c
#include
#include
#include
#include
#include
#include
#include
/* 定义颜色等 */
#define UP 0x48
#define DOWN 0x50
#define LEFT 0x4B
#define RIGHT 0x4D
#define ENTER 0x0D
/* 计算器函数 */
void computer(void);
void drawboder(void);
void initialize(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;
GraphDriver = DETECT;
initgraph( &GraphDriver, &GraphMode, "" );
ErrorCode = graphresult();
if (ErrorCode != grOk) {
printf("Graphics System Error: %s\n", grapherrormsg(ErrorCode));
exit(1);
}
getpalette( &palette );
MaxColors = getmaxcolor() + 1;
MaxX = getmaxx();
MaxY = getmaxy();
getaspectratio( &xasp, &yasp );
AspectRatio = (double)xasp / (double)yasp;
}
/* 计算器函数 */
void computer(void) {
/* 省略了部分代码,只展示了修改后的部分 */
/* 设置光标位置 */
gotoxy(x, y);
arrow();
putimage(x, y, rar, XOR_PUT);
m = 0;
n = 0;
strcpy(str2, "");
while ((v = specialkey()) != 45) {
/* 省略了部分代码 */
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;
case 6: result = fmod(num1, num2); break;
}
setfillstyle(SOLID_FILL, color+3);
bar(2*width+width/2, height/2, 15*width/2, 3*height/2);
sprintf(temp, "%f", result);
outtextxy(5*width, height, temp);
}
/* 省略了部分代码 */
}
/* 省略了部分代码 */
}
/* 窗口函数 */
void mwindow(char *header) {
int height;
cleardevice();
setcolor(MaxColors - 1);
setviewport(20, 20, MaxX/2, MaxY/2, 1);
height = textheight("H");
settextstyle(DEFAULT_FONT, HORIZ_DIR, 1);
settextjustify(CENTER_TEXT, TOP_TEXT);
outtextxy(MaxX/4, 2, header);
setviewport(20, 20+height+4, MaxX/2+4, MaxY/2+20, 1);
drawboder();
}
/* 画边框 */
void drawboder(void) {
struct viewporttype vp;
setcolor(MaxColors - 1);
setlinestyle(SOLID_LINE, 0, NORM_WIDTH);
getviewsettings(&vp);
rectangle(0, 0, vp.right-vp.left, vp.bottom-vp.top);
}
/* 设计鼠标图形函数 */
int arrow() {
int size;
int raw[] = {4, 4, 4, 8, 6, 8, 14, 16, 16, 16, 8, 6, 8, 4, 4, 4};
setfillstyle(SOLID_FILL, 2);
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;
}
/* 按键函数 */
int specialkey(void) {
int key;
while (bioskey(1) == 0);
key = bioskey(0);
key = key & 0xFF ? key & 0xFF : key >> 8;
return key;
}
```
请注意,这段代码可能仍然在某些平台上无法正常运行,因为它们使用了特定的图形库和BIOS功能,这些可能在现代操作系统上不可用。此外,代码中的一些部分(如`arrow`函数和`mwindow`函数)在实际使用中可能需要进一步的调整和优化。

~

如何用C语言编一个计算器?
答:要统计各个类的个数,就要逐个判断是哪个分类的。由于在ASCII码中,数字,大写字母,小写字母分别连续,所以可以根据边界值判断类型。二、算法设计:1、读入字符,直到遇到换行结束。2、对于每个字符,判断是字母还是数字,或者空格,或者是其它字符。3、对于每个字符判断后,对应类别计数器自加。4、最终输出...

怎么用C语言编写计算器程序?
答:></</</#include <stdio.h></int main() {</ char operator;</ double num1, num2, result;</ printf("欢迎来到C语言计算器!请输入运算符 (+, -, *, /): ");</ scanf("%c", &operator);</ printf("请输入两个数字: ");</ scanf("%lf %lf", &num1...

用c语言实现一个计算器,如何设计?
答:要设计一个用C语言实现的计算器,可以按照以下步骤进行:确定计算器的基本功能:首先确定计算器要支持的基本数学运算,例如加法、减法、乘法、除法等。设计用户界面:设计一个用户界面,可以使用命令行界面或者图形界面,让用户输入运算表达式和操作符。可以考虑使用C语言的输入输出函数,如scanf和printf。解析...

C语言程序设计,做一个简单计算器。
答:2、找到左上角的新建并点击,给文件为简单计算器,单击确定。3、点击下一步,注意勾选空项目,点击下一步,点击完成。4、点击左侧的源文件,右击选择“添加—>项目”,选择C++文件,命名为简单计算器,因为是C程序,注意后缀名要加上.c,点击确定完成文件新建工作。5、输入以下代码,好了,一个简单...

如何运用C语言实现计算器的功能。
答:首先,定义三个整型变量i、j和k,保存三个整数。接着,提示输入三个整数。然后,在窗口中读入三个整数。注意在格式字符串中有一个数值,它表示输入变量的位数。最后,用指定格式输出三个整数。运行程序,只需输入一个连续的整数,变量就会按照格式字符设置的宽度读入数值。7 但是,如果在各数值之间加入...

用C语言实现一个简单的计算器,要求有面积和体积输出。
答:代码如下:include<stdio.h>int main(){float a,b,c,d;scanf("%f %f",&a,&b);//输入长和宽c=a*b;d=2*(a+b);printf("S=%.2f L=%.2f\n",c,d);//S是面积,L是周长return 0;}

c语言编写“多功能计算器”的代码
答:b){ return a/b;} int rem(int a ,int b){ return a%b;} int addnumber(int c,int d){ int sum=0;for(int i=c;i<=d;i++){ sum+=i;} return sum;} int factor(int n){ int f=1;for(int i=1;i<=n;i++){ f*=i;} return f;} void displaymenu(){ printf("...

如何使用C语言实现一个简单的计算器
答:=",再敲回车键,在 TC中运行要加"getch();"以显示结果。回复:我用的是VC++6.0,调试和运行都 无异常,是不是你最后忘记加等号了,还是输入数字之后加了空格,为了输入 的方便,我没有设计加空格,直接输入 就可以了,比如输入“3+4-5/2=”,输 出“1.000000",如还有问题可加我。

c语言如何实现一个简单的计算器?
答:。3.不同的变量类型可以用结构体(struct)组合在一起。4.只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。5.部份的变量类型可以转换,例如整型和字符型变量。6.通过指针(pointer),C语言可以容易的对存储器进行低级控制。7.预编译处理(preprocessor)让C语言的编译更具有弹性。

c语言中如何用代码设计一个简单计算器,实瑞两个浮点数的加减乘除,界面...
答:include<stdio.h> void main(){ double first_number,second_number,value;char Operator;printf("please enter the number:\n");scanf("%lf%c%lf",&first_number,&Operator,&second_number);switch(Operator){ case '+': printf("value=%lf",first_number+second_number );break;case '-'...