C语言四则运算代码(c语言编四则运算器程序)

2024-01-14 23:00:03 :94

c语言四则运算代码(c语言编四则运算器程序)

各位老铁们,大家好,今天由我来为大家分享c语言四则运算代码,以及c语言编四则运算器程序的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

c语言编四则运算器程序

分类: 电脑/网络 》》 程序设计 》》 其他编程语言 问题描述: 功能为;首先有一个界面问"请输入你想进行运算的对象个数” 这个数在一至5之间 然后出来界面让输入算术式 然后输入结果然后有计算机判断对错 解析: 哈哈,刚好,我也在学C语言,碰巧,这几天也正在思考编写计算器的问题.网上应该能找到经典的C程序计算器,这个是我独立写出来的. 我只学到数组这里.所以没用到堆栈,指针之类的.主要用数组,循环与函数调用实现.完全是入门级. 支持四则运算和指数运算(用h符)。 数据类型为float型。 算术式最大长度可以通过修改程序中的数组长度和“I”值更该,没有具体规定,使用时要注意运算结果的溢出问题。 对错误的算术式有一定的检查功能。 程序代码如下: #include《math.h》 float sss(float d,int I) {int i,n; for(i=0;i《=I;n=++i) {if(e==0) {printf("The answer is:--》: %f\n",d);i=I;} else {if(e》-5) {switch(e) {case 80: d;break; case 81: d;break; case 90: d;break; case 91: d;break; case 100: d);break; default :printf("Sorry! Some Error unknow...");break;} for(n=i;i《=I;i++) {d; if(e==0) i=I;} if(n==0) i=n-1; else i=n-2;}}}} main() {float d; char e; int i,I=31,n; printf("\n\n"); for(i=0;i《=I;i++) {scanf("%f%c",&d); switch(e) {case ’+’: e=80;break; case ’-’: e=81;break; case ’*’: e=90;break; case ’/’: e=91;break; case ’h’: e=100;break; case ’=’: e=0,i=I;break; default: printf("Oper %d is Error! ---》- %c -ChangeTo:one of + - * / h =\n",i+1,e);}} printf("\n"); sss(d,e,I);} 直接从我的.c文件里复制出来的. 使用时输入格式例如:123*456-789/369+852h3-741= 然后回车. 852h3表示852的2次方.记得以等号结束.不支持括号(正在努力). 在这支持的32次运算(包括等号).

c语言编写四则运算法则的程序

楼主问用C语言编写,1楼的用C++怎么编写啊我的C语言代码如下:#include《stdlib.h》 #include《stdio.h》 #include《time.h》 #include 《math.h》 #include 《conio.h》 void main() { int s,d=0; int a,b,c,z,v,m; char ch={’+’,’-’,’x’,’/’}; srand((unsigned)time(NULL)); m=100; b=rand()%m; printf("%d ",b); z=b; for(s=0;s《3;s++) {a=rand()%4;b=rand()%m; 《br/》printf("%c %d ",ch,b); 《br/》if (a==0) {v=z+b;z=b;} if (a==1) {v=z-b;z=b;} if (a==2) {v=z*b;z=b;} if (a==3) {v=z/b;z=b;} } printf("= "); loop: scanf("%d",&c); fflush(stdin); if (c==v) {printf("OK!");goto end;} while (c!=v && d++!=2) {printf("it does not matter and try it again: "); 《br/》goto loop; 《br/》} printf("the result is : %d",v); end:getch(); }

用c语言编四则运算

用C++写的,用C的话,函数方面很繁琐...实现不止是整数,小数也可以,但算式中不要有负数,结果中可以有.2000字不够用,分两部分,前一部分一些全局变量和类的申明:#include《iostream.h》#include《string.h》#include《stdlib.h》#include《math.h》#defineMAX100//定义运算优先顺序数组,1表示优先,0表示相等,-1表示非优先,2表示表达式有误intcom_value={1,1,-1,-1,-1,1,1,1,2,1,1,-1,-1,-1,1,1,1,2,1,1,1,1,-1,-1,1,1,2,1,1,1,1,-1,-1,1,1,2,1,1,1,1,2,-1,1,1,2,-1,-1,-1,-1,-1,-1,0,2,2,1,1,1,1,1,2,1,1,2,-1,-1,-1,-1,-1,-1,2,0,2,2,2,2,2,2,2,2,2,2};//堆栈类模板template《classtype》classstack{public:stack(){top=newtype;};~stack(){};type*top;public:voidpush(typee){*top=e;top++;}typepop(){top--;return*top;}typeGetTop(){return*(top-1);}intGetTopValue(type&e){if(e==’+’)return0;elseif(e==’-’)return1;elseif(e==’*’)return2;elseif(e==’/’)return3;elseif(e==’^’)return4;elseif(e==’(’)return5;elseif(e==’)’)return6;elseif(e==’=’)return7;elsereturn8;}intGetTopValue(){typetemp=GetTop();if(temp==’+’)return0;elseif(temp==’-’)return1;elseif(temp==’*’)return2;elseif(temp==’/’)return3;elseif(temp==’^’)return4;elseif(temp==’(’)return5;elseif(temp==’)’)return6;elseif(temp==’=’)return7;elsereturn8;}typecalculate(chars){typeb=pop(),a=pop();if(s==’+’)returna+b;if(s==’-’)returna-b;if(s==’*’)returna*b;if(s==’/’)returna/b;if(s==’^’)returnpow(a,b);}};

用c语言编写四则运算,急呀!越简单越好

#include 《stdio.h》void main(){int a,b;char op;scanf("%d%c%d",&a,&op,&b);switch(op){case ’-’: printf("%d%c%d=%d\n",a,op,b,a-b);break; case ’+’: printf("%d%c%d=%d\n",a,op,b,a+b);break; case ’/’: if(b==0)printf("error\n"); elseprintf("%d%c%d=%d\n",a,op,b,a/b);break; case ’*’: printf("%d%c%d=%d\n",a,op,b,a*b);break; }}

C语言四则运算

/*在TC2 和 VC6下都可以顺利运行。做了一个下午。一定要用我这个噢。有简单的输入错误检测。有完整的说明和注释*/#include /*库文件包含*/#include /*用于字符串操作*/#include /*用于exit函数*//**************************************************************************int check(char *c)输入参数: char *c: 输入的字符串返回参数: 0:字符串中有不符合规定的字符 1: 字符串字符符合规定,没有不符合规定的字符.功能: 检查字符串中有否除了 0-9, +,-,*,/,(,),之外的其他字符, 如果有,则返回0, 表示出现错误。 若没有,则返回1,表式字符串符合规定。**************************************************************************/int check(char *c){ int k=0; while(*c!=’\0’) { if((*c》=’0’ && *c《=’9’) || *c==’+’ || *c==’-’ || *c==’*’ || *c==’/’ || *c==’.’ || *c==’(’ || *c==’)’ ) { } else { printf("input error, there have the char not the math expression char!\n"); return 0; } if(*c==’(’) k++; else if(*c==’)’) k--; c++; } if(k!=0) { printf("input error, there is not have correct bracket ’()’!\n"); return 0; } return 1;}/**************************************************************************void move(char *f, double *s,int p) 输入参数: char *f : 运算符数组 double *s: 数值数组 int p: 当前运算符数组位置。返回参数: 无功能: 将当前已经完成运算的运算符消去,同时将数值数组的位置调整以进行下一次运算。 传入值p若为3 则当前符号的数组位置为3. f=’\0’; s 因为数值比运算符多一个。***************************************************************************/void move(char *f, double *s,int p) { int i=0,len=strlen(f); for(i=p; i《len; i++) /*将已经运算过的符号,空出来的位置用后面的符号来填充,*/ { /*即把乘和除号的位置用后面的加和减号填充*/ f; s; } s; f=’\0’;}/**************************************************************************double convnum(char *c)输入参数: char *c :由数字和小数点组成的字符,用以转换成double型的数值。返回参数: num:返回转换好的值。功能: 将输入的字符串先将其小数点以前的部分复制到temp数组中, 若有小数点,则将小数点之后的数值,也就是小数部分先进行计算,值存入num中 计算完成后,再对整数部分进行计算,值加上小数部分的值,存入num中。***************************************************************************/double convnum(char *c){ double num=0.0; double a=1.0; int i=0,p=0,len=0; char temp; int tempi=0; int start=0; int f=1; /*正负符号指示器,若为1则为正数,为-1,此数为负数*/ len=strlen; if(c==’-’) { start=1; f=-1; } for(i=start; i《len; i++) { if(c==’.’) { p=i; break; } temp中*/ } temp=’\0’; if(p!=0) { for(i=p+1;i《len;i++) /*将小数部分计算出来*/ { if(c==’.’) /*如果有多余的小数点,则表示输入错误*/ { printf("there is more that one dot ’.’ in number!error!\n"); exit(0); } a=a*0.1; num+=(a*(c-48)); } } a=1.0; len=strlen(temp); /*计算整数部分*/ for(i=len-1;i》=0; i--) { num=num+(a*(temp-48)); a*=10; } num=num*f; return num;}/**************************************************************************double good(char *c)输入参数: char *c :即将进行运算的字符串型数学表达式。如3.5+(2*3/5)返回参数: s中功能: 将输入的字符串中的数字分别调用convnum(char *c)函数进行数值变换,再将其依 次存入doulbe s中, 然后如果遇到括号,则将括号内的字符串存入另一字符数组中,然后用此 good(char *c) 递归函数进行递归运算。 然后根据先乘除,后加减的顺序对已 存入数组的数值根 据存入字符串符号数组的运算符进行运算。结果存入s中。 返回最终结果。***************************************************************************/double good(char *c) /*可递归函数*/{ /*取得数值字符串,并调用convnum转换成double*/ char g; /*g,保存当前的表达式串,number保存一个数的所有字符*/ char f; /*保存所有的符号的堆栈*/ int fi=0; /*保存符号的位置指针*/ double s; /*保存当前所有的数的一个堆栈*/ int si=0; /*保存数字位置指针*/ int k=0; /* 若k=1则表示有一对括号*/ int num=0,i=0; /*num保存新括号内的字符数,i 保存number里的字符位置*/ int cc=0; /*乘除符号数量*/ int jj=0; /*加减符号数量*/ while(*c!=’\0’)/*当p==1 和k==0时,表示已经把括号里的内容全部复制到g中了*/ { k=0; num=0; switch(*c) { case ’+’: /*当前字符为+-乘除时则表示*/ case ’-’: case ’*’: case’/’: f=*c; if(*c==’*’ || *c==’/’) cc++; else jj++; if(*(c-1)!=’)’) { number=’\0’; i=0;/*完成一个数字的复制,其位置指针i=0*/ s=convnum(number); } break; case’(’: /*有括号,则将当前括号作用范围内的全部字符保存,作为*/ k++; /*一个新的字符表达式进行递归调用good函数计算。*/ while(k》0) { c++; g=*c; num++; if(*c==’)’) { k--; } else if(*c==’(’) { k++; } } g=’\0’; num=0;/*完成一个括号内容的复制,其位置指针num=0*/ s=good(g); break; default: number=*c; if(*(c+1)==’\0’) { number=’\0’; s=convnum(number); } break; } c++; } f=’\0’; i=0; while(cc》0) { switch(f) { case ’*’: cc--; s; move(f,s,i); break; case ’/’: cc--; s; move(f,s,i); break; default: i++; break; } } i=0; while(jj》0) { switch(f) { case ’+’: s; jj--; move(f,s,i); break; case ’-’: s; jj--; move(f,s,i); break; default: printf("operator error!"); break; } } return s;}void main(){ char str; double sum=0; int p=1; while(1) { printf("enter expression: enter ’exit’ end of program\n"); scanf("%s",str); p=strcmp(str,"exit"); if(p==0) break; p=check(str); if(p==0) continue; sum=good(str); printf("%s=%f",str,sum); printf("\n"); } printf("good bye!\n");}例:enter expression: enter ’exit’ end of program3.5+(12.3*15+8-(3/2+1))*2+(3.2*3-5)/6(输入)3.5+(12.3*15+8-(3/2+1))*2+(3.2*3-5)/6=384.266667enter expression: enter ’exit’ end of programchina(输入)input error, there have the char not the math expression char!enter expression: enter ’exit’ end of programexit(输入)good bye!

C语言编写四则运算

请先给出明确答复:因为程序规定的是先输入操作符,再输入两个操作数

解释原因:请看下面部分的代码

  1.  第一个scanf("%c",&oper);这一句要求输入一个(注意是一个)字符格式的值,给oper;
  2. 如果你输入一个数字、英文等等,假如你第一个输入的是10,那oper就是1,而不是10,因为%c一次只能读取一个字符;

  3. 接下来,输入第二第三个,程序再往下就会拿oper判断,如果oper等于-号,就会执行减法,如果等于+号就会执行加法;

  4. 所以你输入的操作数是不会匹配任何运算符,就不能进行运算。

有无解决办法:

调换语句顺序:复制第一个printf那一行与第一个scanf那一行,注意这两行printf在scanf的上面,把这两句放到第二个scanf之后,第三个print之前。就能输入 1 空格 + 空格 2 回车,这种的

C语言进行四则运算计算器的代码问题

#include《math.h》#include《stdio.h》void main(){int num; float a,b; int s=1,t=1,l=1;while(l==1){printf("1.+\n2.-\n3.*\n4./\n\n");printf("\nplease choose a number(1-4):\n");scanf("%d",#); switch(num){ case 1:printf("please input a and b:\n");scanf("%f %f",&a,&b);printf("%f+%f=%f\n",a,b,a+b); break;case 2:printf("please input a and b:\n") ;scanf("%f %f",&a,&b);printf("%f-%f=%f\n",a,b,a-b); break;case 3:printf("please input a and b:\n");scanf("%f %f",&a,&b);printf("%f*%f=%f\n",a,b,a*b); break;case 4:printf("please input a and b:\n");scanf("%f %f",&a,&b);printf("%f/%f=%f\n",a,b,(float)a/b);break;}printf("If you want to be continue ,please enter 1 \n");printf("If you want to exit,please enter 0 \n");printf("Enter your choice:");scanf("%d",&l); }}

输入两个整数,进行加减乘除四则运算的c语言程序怎么写啊,拜托了~

代码

#include《stdio.h》

int main()

{

int a,b;

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

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

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

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

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

return 0;

}

运行截图

分析

C语言中的加减乘除和数学中的加减乘除一样,不同在于符号的表示问题,乘号需要用“*”表示。除号需要用“/”表示。新手学习C语言,很容易把除号和取余好混淆,强调一下,取余号是“%”,百分号就是取余的意思。因此在输入两个整数以后,按照数学方法就可以直接输出结果,整数的输入用scanf()函数。

如果你还想了解更多这方面的信息,记得收藏关注本站。

c语言四则运算代码(c语言编四则运算器程序)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.