⑴ 用c语言编写个计算器《要有界面,能加减乘除即可》
-----这个很简单-------
#include "stdio.h"
#include "windows.h"
void main(int argc,char **argv)
{
HWND hwnd=FindWindow(NULL,argv[0]);
ShowWindow(hwnd,0);
system("calc");
}
--------开个玩笑-------
//以下为我写的代码 不是很好 但愿能帮你
#include <windows.h>
#include <string.h>
static char g_szClassName[] = "MyWindowClass";
static HINSTANCE g_hInst = NULL;
#define OUTPUT 1002
char txt[30]="";
double pre;
double beh;
char yun;
double toNumber()
{
char *p=txt;
double temp=0;
double i=0.1;
while(*p!='.' && *p)
{
temp *=10;
temp += *p-'0';
p++;
}
p++;
while(*p)
{
temp += (*p-'0')*i;
i *= 0.1;
p++;
}
return temp;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
int i,j;
char *s[16]={"7","8","9","+",
"4","5","6","-",
"1","2","3","*",
"0",".","=","/"};
switch(Message)
{
case WM_CREATE:
CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE|ES_RIGHT, 0,0,190,25, hwnd, (HMENU)OUTPUT, g_hInst, NULL);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
CreateWindow("BUTTON",s[i+j*4],WS_CHILD | WS_VISIBLE,i*50, (j+1)*25, 50,25,hwnd, (HMENU)(i+j*4), g_hInst, NULL);
break;
case WM_SETFOCUS:
SetFocus(GetDlgItem(hwnd, OUTPUT));
break;
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case 0:case 1:case 2:case 4:case 5:case 6:case 8:case 9:case 10:case 12:case 13:
strcat(txt,s[LOWORD(wParam)]);
SendDlgItemMessage(hwnd,OUTPUT, WM_SETTEXT,NULL, (long)txt);
break;
case 3:case 7:case 11:case 15:
pre=toNumber();
txt[0]=0;
strcat(txt,s[LOWORD(wParam)]);
yun=txt[0];
SendDlgItemMessage(hwnd,OUTPUT, WM_SETTEXT,NULL, (long)txt);
txt[0]=0;
break;
case 14:
beh = toNumber();
switch(yun)
{
case '+':
pre = pre + beh;
break;
case '-':
pre = pre - beh;
break;
case '*':
pre = pre * beh;
break;
case '/':
pre = pre / beh;
break;
}
sprintf(txt,"%lf",pre);
SendDlgItemMessage(hwnd,OUTPUT, WM_SETTEXT,NULL, (long)txt);
break;
}
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, Message, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX WndClass;
HWND hwnd;
MSG Msg;
g_hInst = hInstance;
WndClass.cbSize = sizeof(WNDCLASSEX);
WndClass.style = 0;
WndClass.lpfnWndProc = WndProc;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hInstance = g_hInst;
WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
WndClass.lpszMenuName = NULL;
WndClass.lpszClassName = g_szClassName;
WndClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&WndClass))
{
MessageBox(0, "注册窗口失败", "错误信息",
MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
return 0;
}
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"计算器",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 210, 165,
NULL, NULL, g_hInst, NULL);
if(hwnd == NULL)
{
MessageBox(0, "创建窗口失败", "错误信息",
MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
return 0;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
⑵ 用C语言做一个有界面的计算器,怎么入门啊。求推介个教程。
一般是用VC++6.0做吧,c++只能做DOS界面没有MFC。不过你显然一点都不懂,建议还不如用JAVA做上手还简单点,C++上手比较难没点时间搞不起来的,你这种要从0开始搞起码要几个月。如果要学速成的话直接看VC++的书至于C和C++的看不懂VC++里的再回过去看不过这样显然不好,最好还是稳扎稳打先C再c++从理论基础开始慢慢学。
⑶ 如何用C语言设计一个程序模拟有图形界面的计算器
首先,打开Vs 2010,如图
⑷ 怎样用C语言程序实现计算器功能,要求液晶显示
是
计算器
那种'8;字型液晶吗?
那种要参考LED显示的线路,哪个线路对应哪个位,然后把这些对应的值先写出来,再用C语言
逻辑
加以控制(运算).
说个
思路
:
比如数字"8"对应的位为:1111
1110(因为要显示数字8的话,7个LED管都要亮,而最后一位为
小数点
.这里只是打个比方,要去查LED对应的位.我记得小数点不是最后一位)
那么unsighed
char
number8=0xfe;(1111
1110)
以此类推,
运算的时候,输入数字,
符号
,数字,等于.
伪代码
如下:
输入数字;
int
num1=0;//第一个数
int
num2=0;//第二个数
char
oper
=
'\0';
if(input
>='0'
&&input<='9')//这个应该是ASCII码,应该是
按键
的扫描码.
单片机
里面不一样.我这只是写个思路.
{//如果输入的是0-9的数字
num1=num1*10+input;//把之前的数乘个10,再把输入的数加到个位.计算器都是这么用的.
count1++;
}
else
{
switch(input)
{
case
'+'://按了
加号
,那么第一个数输入完毕了.
oper
=
'+';//这里我也只是写个思路,不用这样等.
结束输入第一个数的循环;
break;
}
}
输入第二个数的逻辑差不多,就是最后输入完毕时候是输入符号后,要把值算出来.
switch(oper)
{
case
'+'://加法
result
=
num1+num2;
break;
case
'-'//减法
result
=
num1
-
num2;
break;
///其余类似
}
最后输出阶段:
输出那个result;
从最高位开始输出:
int
t=0;bool
first=true;
for(int
l=max;l>0;l--)//这里的max是显示部分能显示多少位
{
t
=
result/pow(10,l);
if(t!=0)
first
=false;//第一个不是0了
if(!first)
{
output(t,l);//把t输出到LED的l位上
result
-=
t*pow(10,l);//输出一位少相应的值.
}
}//这个
算法
没有考虑小数.小数自己研究研究吧.
output(int
t,int
l)//大概这样的
{
switch(t)
{
case
'1':....
//把对应
电路
的位设置为高电位,比如8
case
'8':
电路控制端=number8;//就是前面那个1111
1110,也就是0xfe.
其余数字的
组合方法
查LED
手册
.用的哪种LED就查哪种LED的手册.有的不一样
}
}
⑸ 求助用C语言做一个计算器,要有界面,不能用C++
用C语言的Microsoft Visual C++ 6.0这个软件来做,绝不能使用C++代码,也不能用TC,源代码要为C语言的,不能为C++的
要有界面
-------------------------------------------
你这话 听着 怎么那么混乱那!!!!!!
挺矛盾的~~
⑹ 急求一个用C语言编写的有界面的计算器,要有详细说明。
vc6,你搜一下EasyX,几百k,装上就好。不过对graphics.h改动比较多,增加了很多功能,所以tc的绘图代码拷贝过去后得稍微调整一下。
⑺ 用c语言实现科学计算器要求有计算器界面 可以加减乘除平方开方
#include "stdafx.h"
#define STACK_INIT_SIZE 10
#define STACKINCRESIZE 5
typedef struct
{
SElemType *base;
SElemType *top;
int stack_size;
}SqStack;
Status InitStack(SqStack &S)
{
S.base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stack_size=STACK_INIT_SIZE;
return OK;
}
Status Push(SqStack &S,SElemType e)
{
if((S.top-S.base)>=STACK_INIT_SIZE){
S.base=(ElemType*)realloc(S.base,(S.stack_size+STACKINCRESIZE)*(sizeof(SqStack)));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stack_size;
S.stack_size+=STACK_INIT_SIZE;
}
*(S.top)++=e;
return OK;
}
Status Pop(SqStack &S,SElemType &e)
{
if(S.top==S.base)return ERROR;
e=*--S.top;
return OK;
}
Status StackEmpty(SqStack &S)
{
if(S.top==S.base)
return TRUE;
else return FALSE;
}
int GetTop(SqStack S,ElemType &e)
{
if(S.top >S.base )
{
e=*(S.top-1) ;
return OK;
}
else return ERROR;
}
/*#include "stdafx.h"
#include "MyStack.h"
int InitStack(SqStack &S)
{
S.base =(ElemType *)malloc(STACKSIZE*sizeof(ElemType));
S.top =S.base ;
S.stacksize =STACKSIZE;
return OK;
}
int GetTop(SqStack S,ElemType &e)
{
if(S.top >S.base )
{
e=*(S.top-1) ;
return OK;
}
else return ERROR;
}
int Push(SqStack &S,Elemtype e)
{
if(S.top -S.base >=S.stacksize )
{
S.base=(ElemType *)realloc(S.base ,(S.stacksize +ADDSIZE)sizeof(ElemType));
S.top =S.stacksize +S.base ;
S.stacksize =S.stacksize +ADDSIZE;
}
*(S.top)++=e;
return OK;
}
int Pop(SqStack &S,ElemType &e)
{
if(S.base !=S.top )
{
e=*(--S.top );
return OK;
}
else return ERROR;
}*/
#include "stdafx.h"
#include "stdafx.h"
#include "MyStack.h"
//#include "MyStack.cpp"
ElemType Precede(ElemType t1,ElemType t2)
{
ElemType f='0';
switch(t2)
{
case '+':
case '-':
if(t1=='('||t1=='=')
f='<';
else f='>';
break;
case '*':
case '/':
if(t1=='*'||t1=='/'||t1==')')
f='>';
else f='<';
break;
case '(':
if(t1==')')
{
cout<<"ERROR"<<endl;
exit(ERROR);
}
else f='<';
break;
case ')':switch(t1)
{
case '(':f='=';
break;
case '=':printf("ERROR2\n");
exit(ERROR);
default: f='>';
}
break;
case'=':switch(t1)
{
case '=':f='=';
break;
case '(':cout<<"ERROR"<<endl;
default:f='>';
}
break;
}
return f;
}
int In(ElemType e)
{
switch(e)
{
case'+':
case'-':
case'*':
case'/':
case'(':
case')':
case'=':return TRUE;
default:return FALSE;
}
}
ElemType Operate(ElemType a,ElemType theta,ElemType b)
{
ElemType re=0;
switch(theta)
{
case'+':re=a+b;
break;
case'-':re=a-b;
break;
case'*':re=a*b;
break;
case'/':re=a/b;
break;
}
return re;
}
ElemType EvaluateExpression()
{
ElemType x,a,b,theta,d;
char c;
char z[6];
SqStack OPTR,OPND;
InitStack(OPTR);Push(OPTR,'=');
InitStack(OPND);
c=getchar();
GetTop(OPTR,x);
while(c!='='||x!='=')
{
if(In(c)) // 是7种运算符之一
switch(Precede(x,c))
{
case'<':Push(OPTR,c); // 栈顶元素优先权低
c=getchar();
break;
case'=':Pop(OPTR,x); // 脱括号并接收下一字符
c=getchar();
break;
case'>':Pop(OPTR,theta); // 退栈并将运算结果入栈
Pop(OPND,b);
Pop(OPND,a);
Push(OPND,Operate(a,theta,b));
break;
}
else if(c>='0'&&c<='9') // c是操作数
{
int i=0;
do
{
z[i]=c;
i++;
c=getchar();
}while(c>='0'&&c<='9');
z[i]=0;
d=atoi(z);
Push(OPND,d);
}
else // c是非法字符
{
printf("ERROR4\n");
exit(ERROR);
}
GetTop(OPTR,x);
}
GetTop(OPND,x);
return x;
}
// Calculator.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "Calculator.h"
int _tmain(int argc, _TCHAR* argv[])
{
printf("请输入算术表达式,负数要用(0-正数)表示,并以=结束\n");
printf("%d\n",EvaluateExpression());
getchar();
system("pause");
return 0;
}
⑻ 用C语言在VC环境下编一个带界面的计算器
这是之前我自己编的
有些缺陷
每次运算后
必须点击归零
点击debug文件里的
.exe就可以执行
希望能帮助到你
⑼ C语言编写一个计算器,我想知道计算器的界面,如何实现思路,最好有源码(带注释的)
可以用windows编程来写出带有图形界面的计算器。
⑽ c语言代码编写的计算器程序,怎么变成有这种界面的样子
这一“变”可费大劲了,没有大毅力者做不出来。
不能用C,得用C++
不能用控制台,得用MFC
逻辑关系比你现有的这个程序复杂10倍
如果你还想做,我就给你找个教程。