C语言编程中,怎样使输出的加减乘除是运算符? 用c语言编一个计算器程序,能够实现基本的加减乘除,能够输出运...

\u5982\u4f55\u5229\u7528c\u8bed\u8a00\u7f16\u51fa\u52a0\u51cf\u4e58\u9664\u7684\u7f16\u7a0b

\u8fd9\u4e2a\u52a0\u51cf\u4e58\u9664\u7684\u529f\u80fd\u6709\u8981\u6c42\u4e48\uff0c\u4e0d\u9700\u8981\u5f39\u51fa\u8ba1\u7b97\u5668\u4e00\u6837\u7684\u5427\uff1f
#include
void
main()
{
float
fValue1,fValue2;
char
cStr;
printf("\u8bf7\u8f93\u5165\u4e24\u4e2a\u6570\u503c\uff1a\n");
scanf("%f",&fValue1);
scanf("%f",&fValue2);
printf("\u8bf7\u8f93\u5165\u76f8\u5173\u64cd\u4f5c\uff08+
-
*
/\uff09");
getchar();

scanf("%c",&cStr);
switch(cStr)
{
case
'+':
{
printf("%.2f+%.2f
=
%.2f\n",fValue1,fValue2,fValue1+fValue2);
break;
}
case
'-':
{
printf("%.2f-%.2f
=
%.2f\n",fValue1,fValue2,fValue1-fValue2);
break;
}
case
'*':
{
printf("%.2f*%.2f
=
%.2f\n",fValue1,fValue2,fValue1*fValue2);
break;
}
case
'/':
{
printf("%.2f/%.2f
=
%.2f\n",fValue1,fValue2,fValue1/fValue2);
break;
}
default:printf("\u5bf9\u4e0d\u8d77\uff01\u6ca1\u6709\u76f8\u5173\u64cd\u4f5c\u8fd0\u7b97~\n");
}
}

# include int main(void){double a, b;int chose;printf("\u6b22\u8fce\u4f7f\u7528\u6211\u7684\u8ba1\u7b97\u5668\n");while (1){printf("********************\n");printf("1\u3001\u4e24\u6570\u76f8\u52a0\n");printf("2\u3001\u4e24\u6570\u76f8\u51cf\n");printf("3\u3001\u4e24\u6570\u76f8\u4e58\n");printf("4\u3001\u4e24\u6570\u76f8\u9664\n");printf("5\u3001\u9000\u51fa\n");printf("********************\n");scanf("%d", &chose);/*if (chose5){printf("\u4f60\u7684\u8f93\u5165\u6709\u8bef\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165!\n");continue;}*/switch (chose){case 1:printf("\u8bf7\u8f93\u5165\u7b2c\u4e00\u4e2a\u6570\u5b57\uff1a\n");scanf("%lf", &a);printf("\u8bf7\u8f93\u5165\u7b2c\u4e8c\u4e2a\u6570\u5b57\uff1a\n");scanf("%lf", &b);printf("%lf+%lf = %lf\n", a, b, a+b);break;case 2:printf("\u8bf7\u8f93\u5165\u7b2c\u4e00\u4e2a\u6570\u5b57\uff1a\n");scanf("%lf", &a);printf("\u8bf7\u8f93\u5165\u7b2c\u4e8c\u4e2a\u6570\u5b57\uff1a\n");scanf("%lf", &b);printf("%lf-%lf = %lf\n", a, b, a-b);break;case 3:printf("\u8bf7\u8f93\u5165\u7b2c\u4e00\u4e2a\u6570\u5b57\uff1a\n");scanf("%lf", &a);printf("\u8bf7\u8f93\u5165\u7b2c\u4e8c\u4e2a\u6570\u5b57\uff1a\n");scanf("%lf", &b);printf("%lf*%lf = %lf\n", a, b, a*b);break;case 4:printf("\u8bf7\u8f93\u5165\u7b2c\u4e00\u4e2a\u6570\u5b57\uff1a\n");scanf("%lf", &a);printf("\u8bf7\u8f93\u5165\u7b2c\u4e8c\u4e2a\u6570\u5b57\uff1a\n");scanf("%lf", &b);printf("%lf/%lf = %lf\n", a, b, a/b);break;case 5:printf("\u518d\u89c1!\n");return ;default:printf("\u4f60\u7684\u8f93\u5165\u6709\u8bef\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165!\n");continue;}}}

#include<stdio.h>
#include<string.h>
#define N 100

typedef struct{ //操作数栈
float d[N];
int len; //len相当于top
}stacks,*lists;

typedef struct{ //运算符栈
char c[N];
int len; //len相当于top
}stack,*list;

int init(list p); //stack 初始化
int inits(lists p); //stacks 初始化
int pushs(lists p,float m); // stacks 入栈
int push(list p,char c); //stack 入栈
int pops(lists p,float *m); //stacks 出栈
int pop(list p,char *c); //stack 出栈
int in(char c); //判断C是否为数据 是则返回 1 否则 返回 0
char pre(char s,char c); //判断s c的优先级 s>c return '>'; s<c return '<';s=c return '=' ;
float operate(float a,char t,float b); //对a b进行t(+-*/)运算 return a+b or a-b, a*b ,a/b
float value(char s[]); //求表达式S 的值

void main(){
char s[N]; int n; float f;
printf("*******************Express Evaluate***********************\n");
while(1){
printf("please input a express\n");
scanf("%s",s); //输入表达式
n=strlen(s); //求表达式的长度
printf("express length=%d\n",n); //输出表达式的长度
s[n]='#'; //在表达式尾部插入'#' 注: # 表示操作结束
f=value(s); //计算表达式的长度
printf("f=%.5f\n",f); //输出表达时的值 注 只输出前五位小数
printf("continue input 1,break input 0\n");
scanf("%d",&n); printf("\n"); //判断是否继续进操作 是则输入 1,否则输入 0
if(!n) break; }
}

int init(list p){
if(!p) {printf("Error,init stack NULL\n"); return 0;}
p->len=0;
return 1;
}
int inits(lists p){
if(!p) {printf("Error,init stacks NULL\n"); return 0;}
p->len=0;
return 1;
}
int pushs(lists p,float m){
if(!p) {printf("Error,pushs stacks NULL\n"); return 0;}
p->d[p->len++]=m; return 1;
}
int push(list p,char c){
if(!p) {printf("Error,push stack NULL\n"); return 0;}
p->c[p->len++]=c; return 1;
}
int pops(lists p,float *m){
if(!p) {printf("Error,push stacks NULL\n"); return 0;}
*m=p->d[--p->len]; return 1;
}
int pop(list p,char *c){
if(!p) {printf("Error,push stack NULL\n"); return 0;}
*c=p->c[--p->len]; return 1;
}
int in(char c){ //判断C是否为数据 是则返回 1 否则 返回 0
if(c>='0'&&c<='9'||c=='.') return 1; return 0;}
char pre(char s,char c){ //判断s c的优先级 s>c return '>'; s<c return '<';s=c return '=' ;
char m= '<' , n= '=' , k='>' , r;
if((s=='-')||(s=='+')){
if((c=='*')||(c=='(')||(c=='/'))
r=m;
else r=k; }
if((s=='*')||(s=='/')){
if((c=='(')) r=m;
else r=k; }
if(s=='('){
if(c==')') r=n;
else r=m; }
if(s==')')
r=k;
if(s=='#') {
if(c=='#') r=n;
else r=m; }
return r;
}
float operate(float a,char t,float b){ //对a b进行t(+-*/)运算 return a+b or a-b, a*b ,a/b
if(t=='-') return a-b; if(t=='+') return a+b;
if(t=='*') return a*b; if(t=='/') return a/b; }

float value(char s[]){
stacks opnd; stack optr; char *p,*pr,x,t; float a,b,m=0;
inits(&opnd); init(&optr); int k=0,i,tp=10;
push(&optr,'#'); //将'#'压入栈optr中,作结束标志
p=pr=s; //初始化 指针 p pr 使pr p 指向 表达式
while(*p!='#'||optr.c[optr.len-1]!='#'){//当p指向的操作符 和optr 中的栈顶元素都为'#'时 操作结束
if(in(*p)) //如果p指向数字 则把 数字字符串转化为实型(float)数据 并存入栈opnd中
{
m=0; k=0; tp=10;
while(in(*p)) p++; //使p指向下一个运算符
while(pr!=p)
{
if(*pr!='.') //如果pr指向小数点 则跳过
m=(m+*(pr++)-'0')*10; //将单个字数字符转化为数据 并逐位求和
else{ //如 12.3 -> 1230
k=p-pr; pr++; }
}
for(i=0,tp=10;i<k;i++) //求出除数tp 使1230除以tp(100)等于 12.3
{
tp=tp*10;
if(i==k-1)
tp=tp/10;
}
pushs(&opnd,m/tp); //输入栈opnd中
}
else switch(pre(optr.c[optr.len-1],*p)){
case'<':push(&optr,*p);p++;pr=p;break;
case'=':pop(&optr,&x);p++;pr=p;break;
case'>':pop(&optr,&t); pops(&opnd,&b); pops(&opnd,&a); //输出一个操作符和两个数据
pushs(&opnd,operate(a,t,b));break;} //运算
}
return opnd.d[opnd.len-1]; //返回表达式的值
}

应该是输入加减乘除运算符吧就是直接输入计算表达式吧这个需要你自己定义,检测表达式中的字符,是数字正常,是加减乘除则变为加减乘除,你输入的加减乘除号,系统是不认的,只有让系统自己输入就行了,不过这个有点难,要涉及到宏定义,还要判断符号优先级……

printf("a+b=%d",a+b);
显示的结果就是a+b=值

printf("+ - * /");
就是写在引号里

本人专写烂程序...呵呵#include<stdio.h>
#include<string.h>
int main()
{
int a=0,b=0,i,flag=0;
char c,s[100];
printf("please input :");
scanf("%s",s);
for(i=0;i<strlen(s);i++)
{
if(s[i] >= 48)
{
if(flag == 0)
a=a*10+s[i] - 48;
else
b=b*10+s[i] - 48;
}
else
{
flag++;
c=s[i];
}
}
switch(c)
{
case '+' : printf("%d%c%d=%5.2f\n",a,c,b,(double)a+b); break;
case '-' : printf("%d%c%d=%5.2f\n",a,c,b,(double)a-b); break;
case '*' : printf("%d%c%d=%5.2f\n",a,c,b,(double)a*b); break;
case '/' : printf("%d%c%d=%5.2f\n",a,c,b,(double)a/b); break;
}
return 0;
}

  • C璇█缂栫▼涓,鎬庢牱浣胯緭鍑虹殑鍔犲噺涔橀櫎鏄繍绠楃?
    绛旓細int pops(lists p,float *m); //stacks 鍑烘爤 int pop(list p,char *c); //stack 鍑烘爤 int in(char c); //鍒ゆ柇C鏄惁涓烘暟鎹 鏄垯杩斿洖 1 鍚﹀垯 杩斿洖 0 char pre(char s,char c); //鍒ゆ柇s c鐨勪紭鍏堢骇 s>c return '>'; s<c return '<';s=c return '=' ;float operate...
  • 濡備綍鐢C璇█缂栫▼瀹炵幇鍔犲噺杩愮畻?
    绛旓細1銆佸缓绔嬩竴涓伐绋嬪拰.c鏂囦欢锛屽涓嬪浘鎵绀猴細2銆佽緭鍏ュご鏂囦欢鍜屼富鍑芥暟锛屽涓嬪浘鎵绀猴細3銆佸畾涔夊彉閲忕被鍨嬪苟鍒濆鍖栵紝濡備笅鍥炬墍绀猴細4銆佽緭鍏ユ暣鏁帮紝濡備笅鍥炬墍绀猴細5銆佸厛涔樹互鏁存暟鐨勪釜浣嶆暟锛屽涓嬪浘鎵绀猴細6銆佸墧闄ゆ暣鏁扮殑涓綅鏁 7銆杈撳嚭缁撴灉 8銆佺紪璇戯紝杩愯
  • c璇█涓浣闅忔満杈撳嚭鍔犲噺涔橀櫎
    绛旓細缁欏畾鍔犲噺涔橀櫎鐨勭鍙凤紝缁欎竴涓瓧绗︿覆锛岀劧鍚庨殢鏈哄垎閰嶄竴涓暟锛岃緭鍑鸿繖涓暟鎵瀵瑰簲鐨勫瓧绗︿覆涓殑瀛楃銆俰nclude<stdio.h> main(){ float a,b;char c;printf("璇锋寜鐓ц繖鏍风殑鏍煎紡杈撳叆zhuan:a(+,-,*,/)b\n");scanf("%f%c%f",&a,&c,&b);switch(c){ case'+': printf("%f",a+b);break;case'-...
  • C璇█濡備綍杩涜鍔犲噺涔橀櫎?
    绛旓細鍒嗘瀽C璇█涓殑鍔犲噺涔橀櫎鍜屾暟瀛︿腑鐨勫姞鍑忎箻闄や竴鏍凤紝涓嶅悓鍦ㄤ簬绗﹀彿鐨勮〃绀洪棶棰橈紝涔樺彿闇瑕佺敤鈥*鈥濊〃绀恒傞櫎鍙烽渶瑕佺敤鈥/鈥濊〃绀銆傛柊鎵嬪涔燙璇█锛屽緢瀹规槗鎶婇櫎鍙峰拰鍙栦綑濂芥贩娣嗭紝寮鸿皟涓涓嬶紝鍙栦綑鍙锋槸鈥%鈥濓紝鐧惧垎鍙峰氨鏄彇浣欑殑鎰忔濄傚洜姝ゅ湪杈撳叆涓や釜鏁存暟浠ュ悗锛屾寜鐓ф暟瀛︽柟娉曞氨鍙互鐩存帴杈撳嚭缁撴灉锛屾暣鏁扮殑杈撳叆鐢╯canf()鍑芥暟銆
  • C璇█涓浣瀹炵幇鍔犲噺涔橀櫎杩愮畻?
    绛旓細瀹炵幇鏂规硶濡備笅锛氳鍏ョ殑鏃跺欑敤%x璇诲叆锛岀劧鍚庡湪绋嬪簭閲岄潰鐩存帴鐢+锛岋紞锛*锛/杩愮畻灏辫浜嗭紝杈撳嚭鐨勬椂鍊欏啀鐢%x銆傜ず渚嬩竴锛歩nt a,b;scanf("%x%x",&a,&b);printf("%x\n%x\n",a+b,a-b);杈撳叆:9 7 杈撳嚭:10 2 绀轰緥浜岋細int a = 0, b = 0;char char1 = 0;int val = 0;printf("杈撳叆锛");...
  • C璇█,鍦ㄩ敭鐩樿緭鍏ヤ竴涓畻鏈殑杩愮畻寮忓瓙,杈撳嚭杩愮畻缁撴灉銆傚寘鎷鍔犲噺涔樻暟涔樻柟...
    绛旓細C璇█,鍦ㄩ敭鐩樿緭鍏ヤ竴涓畻鏈殑杩愮畻寮忓瓙,杈撳嚭杩愮畻缁撴灉銆傚寘鎷鍔犲噺涔樻暟涔樻柟銆傝阿璋㈣阿璋! 閿洏杈撳叆涓涓畻鏈殑杩愮畻寮忓瓙,杈撳嚭杩愮畻缁撴灉銆傝繖閲岃瀹氬彲浠ユ帴鏀朵簲涓畻鏈繍绠楃殑绗﹀彿:+銆-銆*銆/銆乛(涔樻柟)銆傝緭鍏ヨ繖浜斾釜绗﹀彿浠ュ鐨勮繍绠楃鍙峰垯鎻愰啋鍑洪敊銆 璇峰皢鍙橀噺瀹氫箟涓篸ouble绫诲瀷 鏈绋嬪簭闇瑕佷粠閿洏鎺ユ敹涓涓〃杈惧紡,鏍规嵁琛ㄨ揪寮忎腑鐨勮繍绠楃鍙...
  • c璇█瀹炵幇绠鍗鐨勫姞鍑涔橀櫎
    绛旓細1銆佹墦寮C-Free5.0鏂板缓涓涓┖鐧介〉闈紝鐒跺悗灏C璇█鐨鍩虹鏍煎紡鍐欏畬锛屾敞鎰忔牸寮忕缉杩涖傚涓嬪浘鎵绀恒2銆佺劧鍚庤緭鍏モ int a=10; float b=5,c; 鈥濇敞鎰忥細 float 鏄诞鐐瑰瀷锛宨nt 鏄暣鍨嬨傝繖涓槸鐢ㄦ潵瀹氫箟C璇█涓鐨勬暟鍊肩殑绫诲瀷锛岃繕鏈夊鏋滀竴涓鍙ョ粨鏉熼偅灏辫鎵撲笂鈥滐紱鈥濓紝杩欎釜寰堥噸瑕侊紝涓嶈蹇樿浜嗐備笂闈㈢殑璇彞...
  • 鐢C璇█鍋氫竴涓绠楀櫒,鑳藉疄鐜鍔犲噺涔橀櫎娣峰悎杩愮畻?
    绛旓細鏄殑锛屽彲浠ヤ娇鐢C璇█缂栧啓涓涓绠楀櫒绋嬪簭锛岃兘澶熷疄鐜板姞銆佸噺銆佷箻銆侀櫎绛夋贩鍚堣繍绠椼備笅闈㈡槸涓涓畝鍗曠殑绀轰緥绋嬪簭锛歚``c include <stdio.h> int main() { char operator;double num1, num2, result;printf("Enter an operator (+, -, *, /): ");scanf("%c", &operator);printf("Enter two ...
  • c璇█涓紪鍐欑▼搴,杈撳叆2涓暟,瀹氫箟鍥涗釜鍑芥暟,鍒嗗埆瀹炵幇鍔犲噺涔橀櫎鍥涘垯杩愮畻...
    绛旓細1銆佹墦寮python璇█涓殑鍛戒护绐楀彛锛屽畾涔夊嚱鏁癱om_result锛屼紶鍏ヤ笁涓弬鏁皒銆亂鍜宖unc銆2銆佸畾涔変竴涓彉閲弐esult锛岀劧鍚庤皟鐢ㄧ涓姝ヤ腑鐨勫嚱鏁帮紝浣跨敤lambda琛ㄨ揪寮忋3銆佷娇鐢ㄥ悓鏍风殑鏂规硶锛岃皟鐢ㄥ嚱鏁癱om_result锛岃繖娆ambda琛ㄨ揪寮忎娇鐢ㄥ噺鍙枫4銆佸啀娆¤皟鐢ㄥ嚱鏁帮紝lambda琛ㄨ揪寮忎娇鐢ㄤ箻鍙凤紝杩炴帴涓や釜鎿嶄綔鏁般5銆佸鏋滆璁$畻涓や釜鏁扮殑闄ゆ硶锛...
  • c璇█涓浣瀵瑰瓧绗﹀瀷杩涜鍔犲噺涔橀櫎
    绛旓細c璇█涓鏁村舰鍜屽瓧绗﹀瀷鍙橀噺鏄氱敤鐨勶紝鍗冲瓧绗﹀瀷鍙橀噺鏄敤ASCII鐮佽〃绀虹殑锛屾槸鏁村舰鐨勶紝鍙互鐩存帴鍋鍔犲噺涔橀櫎杩愮畻锛屽彧鏄渶鍚庤緭鍑鸿鐢ㄥ瓧绗﹀瀷杈撳嚭锛濡傦細char a;a=98;a++;printf("%c",a);
  • 扩展阅读:c++编程适合多大孩子 ... c十十编程教学视频 ... c++免费视频教程 ... 女孩为啥不推荐学软件工程 ... c++语言入门自学 ... 学编程一般不要超过多少岁 ... 少儿学编程的弊端 ... c++编程考级一共几级 ... c++编程可以自学吗 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网