C語(yǔ)言編寫計(jì)算器
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比坪山網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式坪山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋坪山地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
我們可以用printf和scanf函數(shù)輸出結(jié)果和獲取用戶的輸入。需要stdio.h頭文件。scanf函數(shù)在讀取數(shù)據(jù)的時(shí)候不需要再一行上輸入每個(gè)數(shù)據(jù),只要數(shù)據(jù)和數(shù)據(jù)之間留出空白就可以了。先聲明兩個(gè)變量number1和number2,operation變量用來(lái)存儲(chǔ)運(yùn)算符。用scanf函數(shù)獲取這兩個(gè)數(shù)字和運(yùn)算符。分別用%lf %c %lf
請(qǐng)點(diǎn)擊輸入圖片描述
然后需要檢測(cè)輸入是否是正確的,檢查是不是+ - * / %,在這里要用到switch函數(shù),用來(lái)看operation變量是否別傳入了正確的值。
switch(operation)
{
case '+':
printf........
}
具體的運(yùn)算我們只需要再case之后的printf語(yǔ)句中設(shè)定和輸出就可以了。
請(qǐng)點(diǎn)擊輸入圖片描述
由于除法和取余運(yùn)算比較特殊,我們單獨(dú)說(shuō)明。除法的除數(shù)不能為零,所以除法需要檢測(cè)除數(shù)是否為零,只需要用if else語(yǔ)句就可以,if(number2 == ),取余運(yùn)算符對(duì)于浮點(diǎn)數(shù)沒(méi)有意義,所以將浮點(diǎn)數(shù)轉(zhuǎn)換為long類型,強(qiáng)制類型轉(zhuǎn)換,if((long)number2 == 0) ? else ,這樣整個(gè)代碼就完成了。
請(qǐng)點(diǎn)擊輸入圖片描述
簡(jiǎn)單計(jì)算器的編輯并不難,但是要注意一些細(xì)節(jié),除法的處理要注意除數(shù)不能為零的情況,而且取模運(yùn)算要將兩個(gè)操作數(shù)轉(zhuǎn)化為整型,當(dāng)然,作為真正的計(jì)算器,只實(shí)現(xiàn)這些功能是不夠的,還需要更多的功能,不過(guò)有一個(gè)好的開(kāi)始也不錯(cuò)。
下面我們就運(yùn)行一下這個(gè)程序吧。25*13的值和8%5的值??梢钥吹绞俏覀兤谕闹?。
請(qǐng)點(diǎn)擊輸入圖片描述
請(qǐng)點(diǎn)擊輸入圖片描述
#includestdio.h
#includestdlib.h
double jia(double a,double b)
{
return a+b;
}
double jian(double a,double b)
{
return a-b;
}
double cheng(double a,double b)
{
return a*b;
}
double chu(double a,double b)
{
return a/b;
}
double juedui(double a)
{
return a0 ? a : -a;
}
double chengfang(double a,double b)
{
return pow(a,b);
}
double sinx(double a)
{
return sin(a);
}
int main()
{
int m;
double a,b;
while(1)
{
printf("請(qǐng)輸入第一個(gè)操作數(shù):");
scanf("%lf",a);
printf("0、退出\n1、加\n2、減\n3、乘\n4、除\n5、絕對(duì)值\n6、乘方\n7sin、\n請(qǐng)選擇一個(gè):");
scanf("%d",m);
if(1==m || 2==m || 3==m || 4==m || 6==m)
{
printf("請(qǐng)輸入第二個(gè)操作數(shù):");
scanf("%lf",b);
}
switch(m)
{
case 0:
exit(0);
break;
case 1:
printf("%lf+%lf=%lf\n",a,b,jia(a,b));
break;
case 2:
printf("%lf-%lf=%lf\n",a,b,jian(a,b));
break;
case 3:
printf("%lf*%lf=%lf\n",a,b,cheng(a,b));
break;
case 4:
if(0.0==b)
{
printf("除數(shù)不能為0。\n");
}
else
{
printf("%lf/%lf=%lf\n",a,b,chu(a,b));
}
break;
case 5:
printf("|%lf|=%lf\n",a,juedui(a));
break;
case 6:
printf("%lf的%lf方=%lf\n",a,b,chengfang(a,b));
break;
case 7:
printf("sin(%lf)=%lf\n",a,sinx(a));
break;
default:
printf("無(wú)法處理的命令。\n");
break;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
#include stdio.h
struct s_node
{
int data;
struct s_node *next;
};
typedef struct s_node s_list;
typedef s_list *link;
link operator=NULL;
link operand=NULL;
link push(link stack,int value)
{
link newnode;
newnode=(link) malloc(sizeof(s_list));
if(!newnode)
{
printf("\nMemory allocation failure!!!");
return NULL;
}
newnode-data=value;
newnode-next=stack;
stack=newnode;
return stack;
}
link pop(link stack,int *value)
{
link top;
if(stack !=NULL)
{
top=stack;
stack=stack-next;
*value=top-data;
free(top);
return stack;
}
else
*value=-1;
}
int empty(link stack)
{
if(stack==NULL)
return 1;
else
return 0;
}
int is_operator(char operator)
{
switch (operator)
{
case '+': case '-': case '*': case '/': return 1;
default:return 0;
}
}
int priority(char operator)
{
switch(operator)
{
case '+': case '-' : return 1;
case '*': case '/' : return 2;
default: return 0;
}
}
int two_result(int operator,int operand1,int operand2)
{
switch(operator)
{
case '+':return(operand2+operand1);
case '-':return(operand2-operand1);
case '*':return(operand2*operand1);
case '/':return(operand2/operand1);
}
}
void main()
{
char expression[50];
int position=0;
int op=0;
int operand1=0;
int operand2=0;
int evaluate=0;
printf("\nPlease input the inorder expression:");
gets(expression);
while(expression[position]!='\0'expression[position]!='\n')
{
if(is_operator(expression[position]))
{
if(!empty(operator))
while(priority(expression[position])= priority(operator-data)
!empty(operator))
{
operand=pop(operand,operand1);
operand=pop(operand,operand2);
operator=pop(operator,op);
operand=push(operand,two_result(op,operand1,operand2));
}
operator=push(operator,expression[position]);
}
else
operand=push(operand,expression[position]-48);
position++;
}
while(!empty(operator))
{
operator=pop(operator,op);
operand=pop(operand,operand1);
operand=pop(operand,operand2);
operand=push(operand,two_result(op,operand1,operand2));
}
operand=pop(operand,evaluate);
printf("The expression [%s] result is '%d' ",expression,evaluate);
getch();
}
用C語(yǔ)言編寫一個(gè)簡(jiǎn)單的可以進(jìn)行加減乘除運(yùn)算混合運(yùn)算的計(jì)算器的方法:
1、打開(kāi)visual C++ 6.0-文件-新建-文件-C++ Source File;
2、輸入預(yù)處理命令和主函數(shù):
#includestdio.h /*函數(shù)頭:輸入輸出頭文件*/
void main()/*空類型:主函數(shù)*/
3、定義變量:
int a,b,d; /*定義變量的數(shù)據(jù)類型為整型*/
char c;/*定義變量的數(shù)據(jù)類型為字符型*/
4、輸入四則運(yùn)算式:
printf("輸入如“3*4”或“5+2”的四則運(yùn)算式:");/*輸出文字提示*/
scanf("%d%c%d",a,c,b);/*輸入四則運(yùn)算式*/
5、判斷運(yùn)算符號(hào):
switch(c) /*判斷運(yùn)算符號(hào)*/
{
case'+':d=a+b;break;/*進(jìn)行加法運(yùn)算*/
case'-':d=a-b;break;/*進(jìn)行減法運(yùn)算*/
case'*':d=a*b;break;/*進(jìn)行乘法運(yùn)算*/
case'/':d=a/b;break; /*進(jìn)行除法運(yùn)算*/
}
6、輸出結(jié)果:
printf("%d%c%d=%d\n",a,c,b,d);/*輸出結(jié)果*/
完整的源代碼:
#includestdio.h /*函數(shù)頭:輸入輸出頭文件*/
void main()/*空類型:主函數(shù)*/
{
int a,b,d;/*定義變量的數(shù)據(jù)類型為整型*/
char c;/*定義變量的數(shù)據(jù)類型為字符型*/
printf("輸入如“3*4”或“5+2”的四則運(yùn)算式:");/*輸出文字提示*/
scanf("%d%c%d",a,c,b);/*輸入四則運(yùn)算式*/
switch(c)/*判斷運(yùn)算符號(hào)*/
{
case'+':d=a+b;break;/*進(jìn)行加法運(yùn)算*/
case'-':d=a-b;break;/*進(jìn)行減法運(yùn)算*/
case'*':d=a*b;break;/*進(jìn)行乘法運(yùn)算*/
case'/':d=a/b;break;/*進(jìn)行除法運(yùn)算*/
}
printf("%d%c%d=%d\n",a,c,b,d);/*輸出結(jié)果*/
}
在jisuanqi()已經(jīng)輸出,在main()又一次輸出jisuanqi()的返回值a+b??梢孕薷娜缦?
#include
"stdio.h"
int
jisuanqi(int
a,char
c,
int
b)
{
switch(c)
{
case
'+':
printf("%d\n",a+b);
break;
case
'-':
printf("%d\n",a-b);
break;
case
'*':
printf("%d\n",a*b);
break;
case
'/':
printf("%d\n",a/b);
break;
}
return
0;
}
int
main(int
argc,
char*
argv[])
{
int
a,b;
char
c;
scanf("%d
%c
%d",a,c,b);
jisuanqi(a,c,b);
return
0;
}
總算看懂了,一個(gè)只能兩個(gè)數(shù)相加減乘除的計(jì)算器何必寫的那么復(fù)雜,竟然還用了六個(gè)函數(shù),下面我寫一個(gè)功能一樣的,更精簡(jiǎn)方便的,只要一個(gè)函數(shù)。
/*
Note:Your
choice
is
C
IDE
*/
/*一個(gè)具有兩個(gè)數(shù)加減乘除功能的計(jì)算器*/
#include
"stdio.h"
void
main()
{
int
iFirNum,iSecNum,iResult;
char
ch,ch1;
printf("請(qǐng)輸入表達(dá)式如
5+6=
然后按回車鍵:");
scanf("%d%c%d%c",iFirNum,ch,iSecNum,ch1);
switch(ch)
{
case
'+':
iResult=iFirNum+iSecNum;
printf("%d+%d=%d\n",iFirNum,iSecNum,iResult);
break;
case
'-':
iResult=iFirNum-iSecNum;
printf("%d-%d=%d\n",iFirNum,iSecNum,iResult);
break;
case
'*':
iResult=iFirNum*iSecNum;
printf("%d*%d=%d\n",iFirNum,iSecNum,iResult);
break;
case
'/':
iResult=iFirNum/iSecNum;
printf("%d/%d=%d\n",iFirNum,iSecNum,iResult);
break;
default:
printf("輸入表達(dá)式錯(cuò)誤或該計(jì)算器不具備
%ch
功能\n",ch);
}
}
文章標(biāo)題:MySQL里乘法怎么算,mysql相乘函數(shù)
URL地址:http://jinyejixie.com/article34/hsihse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、虛擬主機(jī)、全網(wǎng)營(yíng)銷推廣、微信公眾號(hào)、云服務(wù)器、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
移動(dòng)網(wǎng)站建設(shè)知識(shí)