當前位置:首頁 » 編程語言 » c語言加強四則運算
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言加強四則運算

發布時間: 2022-08-10 03:24:16

『壹』 c語言則么怎麼實現四則運算

#include<stdio.h>
#include<conio.h>
void main()
{
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);
getchar();
}

『貳』 請大家幫忙用C語言編寫一個四則運算程序

~~rand()%100用來產生0~100以內的隨機數,不能每次都存入一樣的數吧,所以用隨機數好些,。。,,我學的也是譚浩強的,沒有rand()用於產生隨機數,cystem(「pause」)用於暫停,相當於getchar()或getch(),cystem("cls")用於清屏,可以去掉,這些東西都是我網路上百得。,。呵呵譚浩強書上確實沒有這些東西。。
把問題先想清楚是一種很好的習慣,,呵呵
/* Note:Your choice is C IDE */
#include "stdio.h"
#include"windows.h"
int right=0,wrong=0;
void add()
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("請回答:%d+%d=",a,b);
scanf("%d",&c);
if(a+b!=c){printf("回答錯誤\n");wrong++;}
else {printf("回答正確\n");right++;}
}
void minu()
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("請回答:%d-%d=",a,b);
scanf("%d",&c);
if(a-b!=c){printf("回答錯誤\n");wrong++;}
else {printf("回答正確\n");right++;}
}
void mul()
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("請回答:%d*%d=",a,b);
scanf("%d",&c);
if(a*b!=c){printf("回答錯誤\n");wrong++;}
else {printf("回答正確\n");right++;}
}
void di()
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("請回答:%d/%d=",a,b);
scanf("%d",&c);
if(a/b!=c){printf("回答錯誤\n");wrong++;}
else {printf("回答正確\n");right++;}
}
void main()
{
int choise,con=0;

printf("\n\n\t\t歡迎光臨我的C語言四則運算程序\n");
system("pause");
system("cls");
while(1)
{
printf("\n\n\t\t請選擇:\n加(輸入1)\n減(輸入2)\n乘(輸入3)\n除(輸入4)\n");
if(con==0)scanf("%d",&choise);
switch(choise)
{
case 1:add();break;
case 2:minu();break;
case 3:mul();break;
case 4:di();break;

}
printf("請問您想繼續進行這個運算還是重新選擇其他運算還是退出程序?\n繼續(輸入1),重新(輸入2),退出(輸入3)");
scanf("%d",&con);
if(con==1)con=1;
if(con==2)con=0;
if(con==3)break;
}
printf("您總做了%d個題,正確%d的道,錯誤%d道!\n",right+wrong,right,wrong);
system("pause");
}
編譯器不同可能不能運行,這是通用的VC6.0的編譯器。另外,採用了 100之內的隨機數做的題目

『叄』 C語言四則運算

你可以才網路文庫里找找,應該有很多例子的,也比較詳細,不需要在這里懸賞

『肆』 如何用c語言編寫可以實現四則運算的計算器

#include <stdio.h>#include <stdlib.h>#include <string.h>void resolve(char *p);void del(int n);void find(char *p);int last();char s[80];int num[80];char sign[80]; /*此程序所有數組為全局變數*/int main(){ int n=1; while(n==1) { printf("Enter:\n"); scanf("%s",s); resolve(s); find(sign); /*尋找乘號和除號*/ printf("result= %d\n\n",last()); printf("please Enter:\n1:continue 2:exit\n\n "); scanf("%d",&n); }
return 0;}
void resolve(char *p) /*數字放在NUM中,符號放在SIGN中*/{ int n=0,k=0; while(*p!='\0') { if(*p>='0'&&*p<='9') n=n*10+(*p-'0'); else {
num[k]=n; n=0; sign[k++]=*p; } p++; } num[k]=n;
}
void find(char *p) { int i,n; for(i=0;*p;i++) { if(*p=='*'||*p=='/') { n=(*p=='*' ? num[i]*num[i+1] : num[i]/num[i+1]); num[i]=n; del(i); /*刪除其中的乘除號和已經運算過的數字*/ i--; } else p++;
} }

void del(int n){ int i; for(i=n;i<strlen(sign);i++) { sign[i]=sign[i+1]; num[i+1]=num[i+2]; }
}
int last(){ int i,sum; sum=(sign[0]=='+' ? num[0]+num[1] : num[0]-num[1]); for(i=1;sign[i];i++) sum=(sign[i]=='+' ? sum+num[i+1] : sum-num[i+1]); return sum;
}
剛出爐的 沒有實現其中的括弧功能 也只能處理整數

『伍』 關於c語言四則運算的簡單編程

大致看了下
你if後面有2個語句
得加花括弧
if
(c=43)
{answer=a+b;printf("answer=%d",answer);}
ni
shishi
kan
對了
還要改等號

『陸』 請問怎麼用c語言程序編寫輸入任意數字進行四則運算呢

#include<stdio.h>
struct
{
int op;
double num;
}ret[200];
int topa,topb;
int opstk[200];
int level[200];
double cal(double a,double b,char op)
{
if(op=='+')
return a+b;
if(op=='-')
return a-b;
if(op=='*')
return a*b;
if(op=='/')
return a/b;
}
int main()
{
int i,temp,sign,j,x,y;
char s[200];
level['+']=level['-']=0;
level['*']=level['/']=1;
level['(']=level[')']=2;
while(scanf("%s",s)!=EOF)
{
topa=topb=0;
for(i=0;s[i];i++)
{
if(s[i]=='(')
{
opstk[topa++]='(';
}
else if(s[i]==')')
{
while(topa>0&&opstk[topa-1]!='(')
{
topa--;
ret[topb++].op=opstk[topa];
}
topa--;
}
else if(s[i]=='+'||s[i]=='*'||s[i]=='/')
{
while(topa>0&&opstk[topa-1]!='('&&level[opstk[topa-1]]>=level[s[i]])
{
topa--;
ret[topb++].op=opstk[topa];
}
opstk[topa++]=s[i];
}
else if(s[i]=='-')
{
if((i>0&&s[i-1]=='(')||i==0)
{
sign=-1;
temp=0;
for(j=i+1;s[j]&&s[j]>='0'&&s[j]<='9';j++)
temp=temp*10+s[j]-'0';
ret[topb].op=-1;
ret[topb++].num=sign*temp;
i=j-1;
}
else
{
while(topa>0&&opstk[topa-1]!='('&&level[opstk[topa-1]]>=level['-'])
{
topa--;
ret[topb++].op=opstk[topa];
}
opstk[topa++]='-';
}
}
else if(s[i]>='0'&&s[i]<='9')
{
temp=0;
for(j=i;s[j]&&s[j]>='0'&&s[j]<='9';j++)
temp=temp*10+s[j]-'0';
ret[topb].op=-1;
ret[topb++].num=temp;
i=j-1;
}
}
while(topa>0)
{
topa--;
ret[topb++].op=opstk[topa];
}
for(i=0;i<topb;i++)
{
if(ret[i].op=='+'||ret[i].op=='-'||ret[i].op=='*'||ret[i].op=='/')
{
for(y=i-1;y>=0;y--)
if(ret[y].op==-1)
break;
for(x=y-1;x>=0;x--)
if(ret[x].op==-1)
break;
ret[i].num=cal(ret[x].num,ret[y].num,ret[i].op);
ret[i].op=-1;
ret[x].op=0;
ret[y].op=0;
}
}
printf("%.4lf\n",ret[topb-1].num);
}
return 0;
}

『柒』 C語言怎麼實現四則運算

我曾用c編了個計算器,支持四則運算,支持括弧改變優先順序,你看看吧:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define Esc 27
#define Tab 9

void needle(char* s,char* carriage,int start)//needle意為「用針縫」
{
int size_carriage=(int)strlen(carriage);
int i,j;
for(j=0;j<size_carriage;j++)
{
for(i=(int)strlen(s);i>=start;i--)
s[i+1]=s[i];
s[i+1]=carriage[j];
start=i+2;
}
}

double factorial(double d)//factorial意為「階乘」
{
return d==0?1:d*factorial(d-1);
}

void handle(char* carriage)//handle意為「處理」
{
void find_start(char*,int*);
char* save1,*save2,ch;
char op[111];
double d1,d2;
int start,i;
find_start(carriage,&start);
ch=carriage[start];
d1=strtod(carriage,&save1);//strtod是庫函數,功能是將字元串carriage中出現的第一個浮點數轉化為double,並將剩餘字元儲存在save1中
if(ch=='!')
{
sprintf(op,"%g",factorial(d1));//springf是庫函數,功能是將顯示在屏幕上的內容儲存在op中
strcpy(carriage,op);
return;
}
for(i=0;i<(int)strlen(save1);i++)//對於第一個不是'+'或'-'或數字的字元串,strtod無法作用。所以得去掉諸如"*22"字元串中的'*'
save1[i]=save1[i+1];
d2=strtod(save1,&save2);
switch(ch)
{
case '*':sprintf(op,"%.32g",d1*d2);break;
case '/':sprintf(op,"%.32g",d1/d2);break;
case '+':sprintf(op,"%.16g",d1+d2);break;
case '-':sprintf(op,"%.16g",d1-d2);
}
strcpy(carriage,op);
}

void del(char* s,int start,int end)//delete意為「刪除」
{
int i,j;
int size=(int)strlen(s);
for(i=end;i>=start;i--)
for(j=i;j<size;j++)
s[j]=s[j+1];
}

void (char* s,char* carriage,int start,int end)//意為「復制」
{
int i;
for(i=0;start<=end;i++,start++)
carriage[i]=s[start];
carriage[i]='\0';
}

void scissor(char* s,char* carriage,int* start)//scissor意為「用剪刀剪」
{
int sta,end;
for(sta=*start-1;(s[sta]>='0'&&s[sta]<='9')||s[sta]=='.';sta--);
if(sta!=0||s[*start]=='!') //處理式子是-2+3或-2!的特殊情況
sta++;
if(s[*start]=='!')//'!'是單目運算符
end=*start;
else
{
for(end=*start+1;(s[end]>='0'&&s[end]<='9')||s[end]=='.';end++);
if((s[end-1]=='*'||s[end-1]=='/')&&(s[end]=='+'||s[end]=='-'))//處理式子是2*-2等的特殊情況
for(end++;(s[end]>='0'&&s[end]<='9')||s[end]=='.';end++);
end--;
}
(s,carriage,sta,end);
del(s,sta,end);
*start=sta;//記住等下針線函數needle要開始縫的地方
}

void find_start(char* s,int* start)//find_start意為「找到操作符號開始處」
{
int i;
int size=(int)strlen(s);
//由優先順序決定從上而下的順序
for(i=0;i<size;i++)
if(s[i]=='!')
{
*start=i;
return;
}
for(i=0;i<size;i++)
if(s[i]=='*'||s[i]=='/')
{
*start=i;
return;
}
if(s[0]=='+'||s[0]=='-')
{
for(*start=1;(s[*start]>='0'&&s[*start]<='9')||s[*start]=='.';(*start)++);
return;
}
for(i=0;i<size;i++)
if(s[i]=='+'||s[i]=='-')
{
*start=i;
return;
}
}

int judge(char* s)//judge意為「判斷」
{
int i;
int size=(int)strlen(s);
for(i=1;i<size;i++)
if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/'||s[i]=='!')
return 1;
return 0;
}

void count(char* s)//count意為「計算」
{
int start,i;
char carriage[555];//carriage意為「運載體」
while(judge(s))//判斷式子是否還需要進行運算
{
for(i=0;i<(int)strlen(s);i++)//此循環作用是將式子中出現的'--'替換為'+'
{
for(;s[i]!='-' && i<(int)strlen(s);i++);//循環結束
if(s[i+1]=='-')
{
del(s,i,i+1);
needle(s,"+",i);
}

}
find_start(s,&start);//讓下標start指向式子應該最先開始處理的運算符
scissor(s,carriage,&start);//用剪刀scissor將start指向的運算符及相對應的操作數剪下並儲存在運載體carriage上
handle(carriage);//處理該運載體,並將運載體上運載的式子的計算結果儲存在運載體上
needle(s,carriage,start);//見函數simplify中的說明
}
}

void simplify(char* s)//simplify意為「簡化」,即將括弧去除
{
char carriage[555];//carriage意為「運載體」
int start,end,i;
int size=(int)strlen(s);
while(1)
{
for(i=0;s[i] != '(' && i<size;i++);//注意這里末尾是分號
if(i==size)
break;//說明式子已不含括弧,簡化完成
for(end=0;s[end] != ')';end++);//使end下標指向式子中第一個出現')'的地方
end--;
for(start=end;s[start] != '(';start--);//尋找與上面一個')'配對的'('
start++;
(s,carriage,start,end);//將括弧里的內容復制給運載體carriage
del(s,start-1,end+1);//刪除整個括弧及其裡面的內容
count(carriage);//計算運載體運載的表達式,運算結果儲存在運載體上
needle(s,carriage,start-1);//將運載體運載過來的結果用針線needle縫在剛才刪除式子s括弧及其內容的地方
}
}

int main()
{
int i=0;
char s[555],ch;
puts(" 本程序不對用戶輸入數據進行檢測:");
puts(" 即用戶應輸入規范的計算式,包括分母不能為0:");
puts(" 式子不能含有空格及其他非計算字元;");
puts(" 按任意一個鍵開始,按回車鍵顯示運算結果;");
while(1)
{
i++;
ch=getch();
if(Esc==ch)
break;
if(Tab==ch)
{
system("cls");//清除當前屏幕
puts("顯示運算結果後:按「Esc」鍵退出,按「Tab」鍵清除當前屏幕");
}
if(i==1)
{
system("cls");
puts("顯示運算結果後:按「Esc」鍵退出,按「Tab」鍵清除當前屏幕");
}
puts("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
gets(s);
simplify(s);
count(s);
puts(s);
//實驗數據:23.243*(5!-23.123/.133+(2!-13/13.23)*(2!-.235)-((4!-20)!/2!)-32*(3!+2.23/(2*3)!))
//其正確結果是:-5953.9401265774754346182917611489
}
puts("謝謝使用!\n有問題可加q問我:281754179");
getch();
return 0;
}

我記得學了數據結構後我又重新用棧寫了個,容錯能力會更好,上面的代碼可以改進很多,也只是給你一個思路罷了

『捌』 如何用C語言實現多個操作數的基本四則運算

#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>

void SplitPrem(char *str);
float Combine();

char str[200],str1[200],str2[50][30],operate_c[50],sub_str[30];
int operate_2str[50];
int strnum=0,operatenum=0; /* 子字元串個數,操作符個數 */
int i,j,k,flag;
float f=0.0,str_f[50];

void main()
{
float temp;

printf("請輸入一個字元串表達式:\n");
gets(str);
strcpy(str1,str);
SplitPrem(str1);
temp=Combine();
printf("%s=%g\n",str,temp);
}
/* 分解為子字元串和操作符 */
void SplitPrem(char *str1)
{

j=strlen(str1);
sub_str[0]=str1[0];
k=1;
for( i=1; i<j; i++)
{
if(str1[i]=='*'||str1[i]=='/'||str1[i]=='+'||str1[i]=='-')
{
sub_str[k]=0;
strcpy(str2[strnum],sub_str);
operate_c[operatenum]=str1[i];
operate_2str[operatenum]=strnum;
strnum++;
operatenum++;
k=0;
}
else
{
sub_str[k]=str1[i];
k++;
}
}
if(k>0)
{
sub_str[k]=0;
strcpy(str2[strnum],sub_str);
strnum++;
}
for( i=0; i<strnum; i++)
str_f[i]=atof(str2[i]); /* 字元串轉化為浮點數 */
}
/*先計算乘除,後計算加減,每計算一次,子字元串和操作符向前移動 */
float Combine()
{
while(1)
{
flag=0;
for( i=0; i<operatenum; i++)
{
if(operate_c[i]=='*'||operate_c[i]=='/')
{
if(operate_c[i]=='*')
{
f=str_f[operate_2str[i]]*str_f[operate_2str[i]+1];
str_f[operate_2str[i]]=f;
for( j=i; j<operatenum-1; j++)
{
operate_c[j]=operate_c[j+1];
operate_2str[j]=operate_2str[j+1]-1;
}
for( j=operate_2str[i]+1; j<strnum-1; j++)
str_f[j]=str_f[j+1];
operatenum=operatenum-1;
strnum=strnum-1;
flag=1;
}
else
{
f=str_f[operate_2str[i]]/str_f[operate_2str[i]+1];
str_f[operate_2str[i]]=f;
for( j=i; j<operatenum-1; j++)
{
operate_c[j]=operate_c[j+1];
operate_2str[j]=operate_2str[j+1]-1;
}
for( j=operate_2str[i]+1; j<strnum-1; j++)
str_f[j]=str_f[j+1];
operatenum=operatenum-1;
strnum=strnum-1;
flag=1;
}
}
}
if(flag==0)break;
}

while(1)
{
flag=0;
for( i=0; i<operatenum; i++)
{
if(operate_c[i]=='+'||operate_c[i]=='-')
{
if(operate_c[i]=='+')
{
f=str_f[operate_2str[i]]+str_f[operate_2str[i]+1];
str_f[operate_2str[i]]=f;
for( j=i; j<operatenum-1; j++)
{
operate_c[j]=operate_c[j+1];
operate_2str[j]=operate_2str[j+1]-1;
}
for( j=operate_2str[i]+1; j<strnum-1; j++)
str_f[j]=str_f[j+1];
operatenum=operatenum-1;
strnum=strnum-1;
flag=1;
}
else
{
f=str_f[operate_2str[i]]-str_f[operate_2str[i]+1];
str_f[operate_2str[i]]=f;
for( j=i; j<operatenum-1; j++)
{
operate_c[j]=operate_c[j+1];
operate_2str[j]=operate_2str[j+1]-1;
}
for( j=operate_2str[i]+1; j<strnum-1; j++)
str_f[j]=str_f[j+1];
operatenum=operatenum-1;
strnum=strnum-1;
flag=1;
}
}
}
if(flag==0)break;
}
return f;
}

『玖』 輸入兩個整數,進行加減乘除四則運算的c語言程序怎麼寫啊,拜託了~

代碼

#include<stdio.h>

int main()

{

int a,b;

scanf("%d %d",&a,&b);

printf("%d ",a + b);

printf("%d ",a - b);

printf("%d ",a * b);

printf("%d ",a / b);

return 0;

}

運行截圖


分析

C語言中的加減乘除和數學中的加減乘除一樣,不同在於符號的表示問題,乘號需要用「*」表示。除號需要用「/」表示。新手學習C語言,很容易把除號和取余好混淆,強調一下,取余號是「%」,百分號就是取余的意思。因此在輸入兩個整數以後,按照數學方法就可以直接輸出結果,整數的輸入用scanf()函數。