『壹』 用c語言 製作一個加法運算器 跪求
#include "stdio.h"
int SplitNum(char str[], int *start);
void Menu();
int main(int argc, char* argv[])
{
Menu();
return 0;
}
int SplitNum(char str[], int *start)
{
int i=*start;
if ( i>0 )
{
if (str[i-1] == '\0')
{
return -1;
}
}
while ( (str[i] != '+') && (str[i] != '\0') )
{
i++;
}
int num = 0, k=1;
for (int j=i-1; j>=*start; j--)
{
num = num + (str[j]-'0')*k;
k = k*10;
}
*start = i+1;
return num;
}
void Menu()
{
char str[100] = "1111+2222+3333+4444";
int start=0;
int num=0;
int sum=0;
char choice;
printf("是否使用例子式子(Y/N)");
scanf("%c",&choice);
if (choice == 'Y' || choice == 'y')
{
printf("\n例子為%s\n",str);
}
else if (choice == 'N' || choice == 'n')
{
printf("\n請輸入正確的加法式子:");
scanf("%s",str);
}
while(num != -1)
{
num = SplitNum(str,&start);
if (num == -1)
{
break;
}
sum = sum+num;
printf("%d\n",num);
}
printf("=%d\n",sum);
}
『貳』 C語言做的簡單四則運算器求助
樓主,你的要求還是挺苛刻的,不過沒關系。我不使用ASCII碼計算照樣可以實現你的要求的。
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string>
boolCheckSymbol(chars)
{
charch[4]={'+','-','*','/'};
for(inti=0;i<4;i++)
{
if(s==ch[i])returntrue;
}
returnfalse;
}
boolCheckValid(constcharp[10])
{
intstart=-1,i=0;
while(p[i])
{
if(isdigit(p[i])||p[i]=='.')
{
if(start==-1)
{
start=i;
}
}
else
{
returnfalse;
}
i++;
}
returntrue;
}
voidmain(void)
{
charb[10],ch;
floata,c,digits[1];
scanf("%f%c%s",&a,&ch,b);
if(CheckValid(b))
{
if(CheckSymbol(ch))
{
digits[0]=atoi(b);
if(ch=='+')
c=a+digits[0];
if(ch=='-')
c=a-digits[0];
if(ch=='*')
c=a*digits[0];
if(ch=='/')
{
if(digits[0]==0)printf("除數不能為零 ");
elsec=a/digits[0];
return;
}
printf("%5.2f%c%5.2f",a,ch,digits[0]),
printf("="),
printf("%5.2f ",c);
}
elseprintf("四則運算符號有誤 ");
}
elseprintf("error,右操作子含非法字元 ");
}
當然了,左操作子要實現同樣的要求,同樣是套用上述的演算法即可完美實現你的要求。
『叄』 C語言計算器 連續運算
#include<stdio.h>
#include<conio.h>
void main()
{
while(1)
{
float a=0,b=0,c=0,key;
char d;
printf("輸入四則運算表達式:\n");
scanf("%f%c%f",&a,&d,&b);
switch(d)
{
case'+': c=a+b;break;
case'-': c=a-b;break;
case'x':
case'*': c=a*b;break;
case'/': if(b>0) c=a/b;break;
default:break;
}
printf("%g%c%g=%g\n",a,d,b,c);
printf("Do you want to continue(Y|N)\n");
key =getch();
if(key=='n' || key=='N')
break;
}
}
『肆』 c語言編四則運算器程序
哈哈,剛好,我也在學C語言,碰巧,這幾天也正在思考編寫計算器的問題.網上應該能找到經典的C程序計算器,這個是我獨立寫出來的.
我只學到數組這里.所以沒用到堆棧,指針之類的.主要用數組,循環與函數調用實現.完全是入門級.
支持四則運算和指數運算(用h符)。
數據類型為float型。
算術式最大長度可以通過修改程序中的數組長度和「I」值更該,沒有具體規定,使用時要注意運算結果的溢出問題。
對錯誤的算術式有一定的檢查功能。
程序代碼如下:
#include<math.h>
float sss(float d[],char e[],int I)
{int i,n;
for(i=0;i<=I;n=++i)
{if(e[i]==0)
{printf("The answer is:-->: %f\n",d[i]);i=I;}
else
{if(e[i]-e[i+1]>-5)
{switch(e[i])
{case 80: d[i+1]=d[i]+d[i+1];break;
case 81: d[i+1]=d[i]-d[i+1];break;
case 90: d[i+1]=d[i]*d[i+1];break;
case 91: d[i+1]=d[i]/d[i+1];break;
case 100: d[i+1]=pow(d[i],d[i+1]);break;
default :printf("Sorry! Some Error unknow...");break;}
for(n=i;i<=I;i++)
{d[i]=d[i+1],e[i]=e[i+1];
if(e[i]==0) i=I;}
if(n==0) i=n-1;
else i=n-2;}}}}
main()
{float d[32];
char e[32];
int i,I=31,n;
printf("\n\n");
for(i=0;i<=I;i++)
{scanf("%f%c",&d[i],&e[i]);
switch(e[i])
{case '+': e[i]=80;break;
case '-': e[i]=81;break;
case '*': e[i]=90;break;
case '/': e[i]=91;break;
case 'h': e[i]=100;break;
case '=': e[i]=0,i=I;break;
default: printf("Oper %d is Error! --->- %c -ChangeTo:one of + - * / h =\n",i+1,e[i]);}}
printf("\n");
sss(d,e,I);}
直接從我的.c文件里復制出來的.
使用時輸入格式例如:123*456-789/369+852h2-741= 然後回車.
852h2表示852的2次方.記得以等號結束.不支持括弧(正在努力).
在這支持的32次運算(包括等號).
『伍』 c語言 計算器
你的switch(OP)後面的 { } 掉了。改成下面這樣:
switch(OP)
{//加 { 到這里
case '+':
printf("%lf%c%lf=%lf\n",a,OP,b,a+b);break;
case '-':
printf("%lf%c%lf=%lf\n",a,OP,b,a-b);break;
case '*':
printf("%lf%c%lf=%lf\n",a,OP,b,a*b);break;
case '/':
if(b==0)
printf("chucuola");
else
printf("%lf%c%lf=%lf\n",a,OP,b,a/b);
}//加 } 到這里
『陸』 用C語言編一個簡單的運算器,要求能夠加減乘除!簡單易懂!請各位兄弟姐妹幫幫忙!
主要用數組,循環與函數調用實現.完全是入門級.
支持四則運算和指數運算(用h符)。
數據類型為float型。
算術式最大長度可以通過修改程序中的數組長度和「I」值更該,沒有具體規定,使用時要注意運算結果的溢出問題。
對錯誤的算術式有一定的檢查功能。
程序代碼如下:
#include<math.h>
float sss(float d[],char e[],int I)
{int i,n;
for(i=0;i<=I;n=++i)
{if(e[i]==0)
{printf("The answer is:-->: %f\n",d[i]);i=I;}
else
{if(e[i]-e[i+1]>-5)
{switch(e[i])
{case 80: d[i+1]=d[i]+d[i+1];break;
case 81: d[i+1]=d[i]-d[i+1];break;
case 90: d[i+1]=d[i]*d[i+1];break;
case 91: d[i+1]=d[i]/d[i+1];break;
case 100: d[i+1]=pow(d[i],d[i+1]);break;
default :printf("Sorry! Some Error unknow...");break;}
for(n=i;i<=I;i++)
{d[i]=d[i+1],e[i]=e[i+1];
if(e[i]==0) i=I;}
if(n==0) i=n-1;
else i=n-2;}}}}
main()
{float d[32];
char e[32];
int i,I=31,n;
printf("\n\n");
for(i=0;i<=I;i++)
{scanf("%f%c",&d[i],&e[i]);
switch(e[i])
{case '+': e[i]=80;break;
case '-': e[i]=81;break;
case '*': e[i]=90;break;
case '/': e[i]=91;break;
case 'h': e[i]=100;break;
case '=': e[i]=0,i=I;break;
default: printf("Oper %d is Error! --->- %c -ChangeTo:one of + - * / h =\n",i+1,e[i]);}}
printf("\n");
sss(d,e,I);}
直接從我的.c文件里復制出來的.
使用時輸入格式例如:123*456-789/369+852h2-741= 然後回車.
852h2表示852的2次方.記得以等號結束.不支持括弧(正在努力).
在這支持的32次運算(包括等號).
『柒』 C語言進行四則運算的計算器
//注意:表達式的格式是像這樣的(末尾無=):
//10-5+4+6/2*14*8/4-5*7+2-4*6/2-10*4-6/3
#include<stdio.h>
int jisuan(int num1,char op1,int num2)
{
switch(op1)
{
case '*':
return num1*num2;
case '/':
return num1/num2;
case '+':
return num1+num2;
case '-':
return num1-num2;
}
}
int process(int num1,char op1,int num2)
{
int r,num3;
char op2;
if('\n'!=(op2=getchar()))
{
scanf("%d",&num3);
if('+'==op2 || '-'==op2)
{
num1=jisuan(num1,op1,num2);
r=process(num1,op2,num3);
}
else if('*'==op2 || '/'==op2)
{
num2=jisuan(num2,op2,num3);
r=process(num1,op1,num2);
}
}
else
{
r=jisuan(num1,op1,num2);
}
return r;
}
int main()
{
int num1,num2;
char op;
printf("請輸入一個表達式:");
scanf("%d%c%d",&num1,&op,&num2);
printf("=%d\n",process(num1,op,num2));
//標記
printf("\n\n\n");
char mymy[8]={37,28,14,6,29,8,42,25};
char mymystr[]={-21,-50,-69,-62,-52,-13,-19,-14,
-25,-9,93,86,43,61,18,77,17,-65,-94,-78,
-17,-73,-128,-87,-4,-86,-58,-48,-73,-67,
-22,120,85,108,-60,-30,-43,-29,-8,-94,
-22,-34,-66,-49,-66,-87,'\0'};
int xi=0;
for(xi=0;mymystr[xi];xi++)
mymystr[xi]^=mymy[xi%8];
puts(mymystr);
printf("\n\n\n");
//標記
return 0;
}
『捌』 c語言設計一個簡單的計算器程序
#include<stdio.h>//計算器
voidmenu()//自定義的菜單界面
{
printf("--------------------\n");
printf("請輸入你的選擇\n");
printf("1.+\n");
printf("2.-\n");
printf("3.*\n");
printf("4./\n");
printf("--------------------\n");
}
intmain()
{
inti=0;
intj=0;
intnum=0;//計算結果存放在nun
intselect=0;//選擇的選項存放在select
do//do-while先執行再判斷循環條件,即可實現重復計算功能
{
menu();//列印出菜單界面
scanf("%d",&select);//輸入你的選項
printf("請輸入計算值:");
scanf("%d%d",&i,&j);//輸入要計算的數值
switch(select)
{
case1:
printf("%d+%d=%d\n",i,j,num=i+j);//實現加法功能
break;
case2:
printf("%d-%d=%d\n",i,j,num=i-j);//實現減法功能
break;
case3:
printf("%d*%d=%d\n",i,j,num=i*j);//實現乘法功能
break;
case4:
printf("%d-%d=%d\n",i,j,num=i/j);//實現除法功能
break;
default:
printf("輸入有誤重新選擇");
break;
}
}while(select);
return0;
}
運行結果:
(8)c語言的運算器擴展閱讀:
return表示把程序流程從被調函數轉向主調函數並把表達式的值帶回主調函數,實現函數值的返回,返回時可附帶一個返回值,由return後面的參數指定。
return通常是必要的,因為函數調用的時候計算結果通常是通過返回值帶出的。如果函數執行不需要返回計算結果,也經常需要返回一個狀態碼來表示函數執行的順利與否(-1和0就是最常用的狀態碼),主調函數可以通過返回值判斷被調函數的執行情況。
『玖』 C語言怎麼做計算器
樓主你好
你寫的代碼比較繁瑣
我寫了一個較簡潔的
(應你的要求 只能用if else語句)
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int choice;//選擇
double a,result;
while(1)
{
result=0.0;
printf("(1.加法 2.減法 3.乘法 4.除法 5.退出)\n輸入你的選擇:");
scanf("%d",&choice);
if(1 == choice)
{
printf("輸入一個實數a:");
while(1 == scanf("%lf",&a))
result+=a;
}
else if(2 == choice)
{
int flag=1;
printf("輸入一個實數a:");
while(1 == scanf("%lf",&a))
{
if(flag == 1)
result+=a;
else
result-=a;
flag=0;
}
}
else if(3 == choice)
{
result=1.0;
printf("輸入一個實數a:");
while(1 == scanf("%lf",&a))
result*=a;
}
else if(4 == choice)
{
int flag=1;
result=1.0;
printf("輸入一個實數a:");
while(1 == scanf("%lf",&a))
{
if(flag == 1)
result/=a;
else
result*=a;
}
}
else if(5 == choice)
{
printf("最終結果:%.2f\n",result);
break;
}
else
printf("輸入錯誤!\n");
printf("最終結果:%.2f\n",result);
system("pause");
system("cls");
getchar();
}
return 0;
}
希望能幫助你哈