㈠ 用c語言設計並實現一個簡單計算器
額,搞定了。
你交給老師的時候,你要告訴他for循環的功能,for()循環體里也就是for下方{}大括弧里的代碼要被循環執行。然後你就一行一行的解釋 switch()里的語句就行了。
break表示跳出switch()。
至於int a,b,i; 這些你肯定懂了的吧。
最後那裡表示在主函數 main()里調用自定義的函數
#include <stdio.h>
int calculator() //定義一個函數。完成計算功能
{
int a,b, i;
char c;
for(i=0;;i++)
{
printf("請輸入所要計算的兩個數,以及所要執行的計算符號 ");
scanf("%d %d %c", &a,&b,&c);
switch (c)
{
case '+':
printf("所要計算的式子:%d+%d ",a,b);
a = a + b;printf("計算結果為:%d ",a);
break;
case '-':
printf("所要計算的式子:%d-%d ",a,b);
a = a - b;printf("計算結果為:%d ",a);
break;
case '*':
printf("所要計算的式子:%d*%d ",a,b);
a = a * b;printf("所要計算的式子:%d*%d ",a,b);printf("計算結果為:%d ",a);
break;
case '/':
printf("所要計算的式子:%d/%d ",a,b);
a = a / b;printf("所要計算的式子:%d/%d ",a,b);printf("計算結果為:%d ",a);
break;
}
}
}
int main()
{
calculator();//在main()函數里調用自定義的函數calculator
}
㈡ 用C語言編寫一個簡單的計算器1
#include<stdio.h>
int main() {
double num1 = 0; //輸入1
double num2 = 0; //輸入2
char ch; //操作
double ret = 0; //結果 printf( "輸入第一個數:" );
scanf( "%lf", &num1 );
printf( "輸入第二個數:" );
scanf( "%lf", &num2 );
printf( "操作[+ - * /]:" );
getchar();
scanf( "%c", &ch ); switch( ch ) {
case '+':
ret = num1 + num2;
break;
case '-':
ret = num1 - num2;
break;
case '*':
ret = num1 * num2;
break;
case '/':
ret = num1 / num2;
break;
default:
break;
}
printf( "結果:%.2lf\n", ret ); return 0;
} 寫個簡單易懂的,你操作計算器的步驟就是編寫程序的思路呀
㈢ 用C語言設計一個簡單計算器
#include<stdio.h>
voidadd(inta,intb,intc)
{
c=a+b;
printf("%d ",c);
printf(" ");
}
voidminus(inta,intb,intc)
{
c=a-b;
printf("%d ",c);
printf(" ");
}
voidmultiplication(inta,intb,intc)
{
c=a*b;
printf("%d ",c);
printf(" ");
}
voiddiv(inta,intb,intc)
{
c=(float)a/(float)b;
printf("%f ",c);
printf(" ");
}
main()
{
inta,b,c;
charp;
puts("inputA: ");
scanf("%d",&a);
puts("inputB: ");
scanf("%d",&b);
puts("inputoperation: ");
getchar();
p=getchar();
if(p=='+')add(a,b,c);else
if(p=='-')minus(a,b,c);else
if(p=='*')multiplication(a,b,c);else
if(p=='/')div(a,b,c);else
puts("沒有注冊這個運算符號 ");
}
以上是設計的一個簡易計算器。可以進行相應的加減乘除。
㈣ 用簡單c語言編寫計算器
#include"stdio.h"
/*預處理命令*/
void
main()
/*主函數*/
{
double
a,b;
/*雙精度實型變數說明*/
char
c,d;
/*變數說明*/
do
/*循環體*/
{
printf("input
a
(-*/)b\n");
/*輸入提示*/
scanf("%lf%c%lf",&a,&c,&b);
/*輸入算術表達式*/
if(c=='
')
/*判斷
*/
printf("=%0.2f",a
b);
/*輸出a
b的值*/
else
if(c=='-')
/*判斷-*/
printf("=%0.2f",a-b);
/*輸出a-b的值*/
else
if(c=='*')
/*判斷**/
printf("=%0.2f",a*b);
/*輸出a*b的值*/
else
if(c=='/')
/*判斷/*/
printf("=%0.3f",a/b);
/*輸出a/b*/
else
/*不滿足以上條件*/
printf("error");
/*輸出錯誤*/
printf("\n\ninput\n");
/*輸入\n*/
scanf("%c",&d);
/*輸入符號給d*/
}
/*循環體結束*/
while(d=='\n');
/*循環條件語句*/
}
㈤ 用C語言編寫計算器程序
http://www.softhouse.com.cn/html/200509/2005091911241600011153.html這個頁面可能對你有幫助。
㈥ 用C語言設計計算器
w=aqb;
這不能這樣的 ......編譯器會以為aqb是一個變數 卻發現前面你沒定義這樣一個變數 結果就報錯了
#include<stdio.h>
main()
{
float a,b,w;
char q;/*q代表運算符號*/
printf("請輸入計算式\n");
scanf("%f%c%f",&a,&q,&b);
switch (q)
{
case '+':w=a+b;break;
case '-':w=a-b;break;
case '*':w=a*b;break;
case '/':w=a/b;break;
default:printf("錯誤的運算符\n");
}
printf("w=%.4f\n",w);
}
。。。。。。。。。。。。。。。。。。
不行的。。。c沒有這種語法也沒這種功能,只能自己有switch或if實現
㈦ 如何用C語言編寫一個科學計算器
用棧 就可以辦到了。。。這個很詳細的, lz 隨便輸入一個表達式,中間的計算過程全部輸出了,lz試兩個 就知道怎麼回事了。 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 4000;
typedef struct
{
char data[10];
int top;//頭地址
int base;//基地址
int length;//長度
}Stack;
void init(Stack *st)//初始化棧
{
st->base=0;
st->top=0;
st->length=0;
}
int isEmpty(Stack *st)
{
int n=0,top,base;
top =st->top;
base =st->base;
if(top==base)
{
return 1;
}
return n;
}
int isFull(Stack *st)
{
int n=0,top,base;
top =st->top;
if(top>=4000)
{
return 1;
}
return n;
}
char getTop(Stack *st)// 返回top值,不改變棧的結構
{
char n;
if(isEmpty(st))
{
printf("棧為空\n");
return 0;
}
int positon= st->top-1;
n= st->data[positon];//取出數據;
return n;
}
char pop(Stack *st)// 出棧,返回
{
char n;
if(isEmpty(st))
{
printf("棧為空\n");
return 0;
}
int positon= st->top-1;
n= st->data[positon];//取出數據;
st->top--;
st->length--;
st->data[positon]='\0';//消除數據
return n;
}
void push(char n,Stack *st)//入棧
{
int positon ;
if(isFull(st))
{
printf("棧滿\n");
}
else
{
positon= st->top;//獲取位置
st->data[positon]=n;//存入數據
st->top++;//改變位置
}
}
void show(Stack *m1)//輸出棧中的數據
{
int top,base;
top=m1->top;
base=m1->base;
while(top>base)
{
printf("%c,",m1->data[--top]);
}
printf("\n");
}
int isOperate(char temp)//是否是操作符
{
if(temp=='+'||temp=='-'||temp=='*'||temp=='/'||temp=='('||temp==')'||temp=='#')
{
return 1;
}
return 0;
}
int isValue(char temp)//是否是數值
{
if(temp>='0'&&temp<='9')//
{
return 1;
}
else
{
return 0;
}
}
int isAvail(char temp)//是否有效字元
{
if(isOperate(temp)||isValue(temp))//如果temp既不是操作符和數值的話,則它是非法的
{
return 1;
}
return 0;
}
int detect(char temp)//搜索矩陣位置
{
int i=0;
char oper[7]={'+','-','*','/','(',')','#'};
for(i=0;i<7;i++)
{
if(temp==oper[i])
{
return i;
}
}
}
char Priority(char temp,char optr)//判斷優先順序
{
/**//*
+ - * / ( ) #
1 2 3 4 5 6 7
+ 1 < < < < > > >
- 2 < < < < > > >
* 3 > > < < > > >
/ 4 > > < < > > >
( 5 > > > > > = 0
) 6 < < < < = 0 >
# 7 < < < < > 0 =
*/
int row ,col;
char priority[7][7]={/**//* + - * / ( ) # */
{'<','<','<','<','>','>','>'},
{'<','<','<','<','>','>','>'},
{'>','>','<','<','>','>','>'},
{'>','>','<','<','>','>','>'},
{'>','>','>','>','>','=','>'},
{'<','<','<','<','=','0','>'},
{'<','<','<','<','>','<','='},
};
row = detect(temp);//找出對應的矩陣下標;
col = detect(optr);
// printf("%d,%d",row,col);
//優先順序存儲在一個7x7的矩陣中,對應關繫上圖;
return priority[row][col];
}
char evaluate(int a,int b,char oper)
{
switch(oper)
{
case '+': return a+b+'0';
case '-': return a-b+'0';
case '*': return a*b+'0';
case '/': return a/b+'0';
default : return 0+'0';
}
}
int calculateExpress(char *express)//計算表達式
{
int result=0;
int a,b;
// char oper,result;
Stack OPTR,OPND;//OPTR存儲操作符,OPND操作數值
init(&OPTR);
init(&OPND);
push('#',&OPTR);//默認第一個位'#'
////////////////////-演算法-////////////////////////////
while(*express!='\0')
{
char temp;
temp= *(express);
printf("---------------------------------\n");
printf("當前的符號為%c\n",temp);
if(isAvail(temp))//是否是有效字元
{
if(isOperate(temp) )//輸入的是操作符
{
char oper,result;
char optr = getTop(&OPTR);//棧中top位的操作符
printf("棧頂操作符位:%c\n",optr);
char prior = Priority(temp,optr);//判斷優先順序
switch(prior)
{
case '>':
push(temp,&OPTR);
printf("將符號位%c入棧\n",temp);
express++;
break;
case '<':
//int a,b;
//char oper,result;
a=pop(&OPND)-'0';//存在棧中的都是char字元
b=pop(&OPND)-'0';
oper=pop(&OPTR);
result=evaluate(b,a,oper);//出棧一個操作符,計算結果
//printf("%d",result-'0');
push(result,&OPND);//結果入OPND
printf("%d%c%d結果為:%d\n",b,oper,a,result-'0');
break;
case '=':
//消除括弧
pop(&OPTR);
printf("消除括弧\n");
express++;
break;
}
}
if(isValue(temp))//輸入的是數值
{
push(temp,&OPND);//將數值位入棧;
express++;
printf("將數值%c壓入棧\n",temp);
//show(&OPND);
}
}
else //表達式中有非法字元
{
printf("表達式中有非法字元\n");
exit(-1);//退出程序
}
}
// show(&OPND);
// show(&OPTR);
return getTop(&OPND)-'0';
}
void inputExpress(char *express)//輸入表達式
{
int length=0;
printf("請輸入一個表達式:");
scanf("%s",express);
int len =strlen(express);
express[len]='#';//表達式最後一位默認為'#';
express[len+1]='\0';
}
void output(char *express,int result)//輸出表達式
{
int i=0;
printf("----------------------------------------\n表達式:");
while(express[i]!='#')
{
printf("%c",express[i]);
i++;
}
printf("=%d\n",result);
}
int main()
{
char express[100];//表達式
int result =0;
inputExpress(express);//輸入表達式
result = calculateExpress(express);//計算表達式;
output(express,result); //輸出表達式
//、、、、、、、、、、、、、測試優先順序。
/**//*
char m='7' ;
m=Priority('+','*');
printf("優先順序為%c",m);
int m=evaluate(5,6,'m');
printf("%d",m);
*/
return 0;
}
㈧ 如何用C語言設計一個程序模擬有圖形界面的計算器
首先,打開Vs 2010,如圖
㈨ 利用c語言設計開發一個簡單計算器,可進行加減乘除運算。
#include<stdio.h>
int main()
{ long a,b,r;
char c;
scanf("%ld%c%ld",&a,&c,&b);
switch(c)
{
case'+':r=a+b;break;
case'-':r=a-b;break;
case'*':r=a*b;break;
case'/':if(b!=0) r=a/b;
else printf("error");break;
default:printf("error");
}
printf("=%ld",r);
return 0;
}
我運行過,正確的,你試試
㈩ 急求啊 用c語言設計一個簡單計算器
#include<stdio.h>
void add(int a,int b,int c)
{
c=a+b;
printf("%d+%d = %d",a,b,c);
printf("\n");
}
void minus(int a,int b,int c)
{
c=a-b;
printf("%d-%d=%d",a,b,c);
printf("\n");
}
void multiplication(int a,int b,int c)
{
c=a*b;
printf("%d*%d=%d",a,b,c);
printf("\n");
}
void div(int a,int b,int c)
{
(float)c=(float)a/(float)b;
printf("%f/%f=%f",a,b,c);
printf("\n");
}
main()
{
int a,b,c;
char p;
printf("請輸入數字 A:");
scanf("%d",&a);
printf("請輸入數字 B:");
scanf("%d",&b);
printf("請輸入運算的符號:");
getchar();
p=getchar();
if(p=='+') add(a,b,c);else
if(p=='-') minus(a,b,c);else
if(p=='*') multiplication(a,b,c);else
if(p=='/') div(a,b,c);else
puts("沒有注冊這個運算符號\n");
}