⑴ 用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倍
如果你還想做,我就給你找個教程。