发布网友 发布时间:2024-10-24 02:16
共3个回答
热心网友 时间:2024-11-22 01:43
有没有括号的,有的话很烦喔,要用栈来写,没的话一个switch函数和一个循环函数就可以搞定了。用getchar()函数一个个读入所有字符,然后操作数的话用ASCII换成十进制的,switch里面分别就是+-*/四个运算,然后循环两次4个数读完就printf()出来,思路够清晰了吧,代码自己实践。。。无法实现我再附代码。。。
热心网友 时间:2024-11-22 01:42
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(void)
{
float a,b,f;
int ctl=0,p;
char Cflag='Y';
char c;
char sa[10],sb,sc[10];
while((Cflag == 'Y') || (Cflag == 'y') )
{
for(p=0;p<10;p++) sa[p]='\0';
sb='\0';
for(p=0;p<10;p++) sc[p]='\0';
p=0;
ctl=1;
printf("加、减、乘、除四则运算算式:\n");
scanf("%c", &c);
while(c!='\n')
{
if (c>='0' && c<='9' || c=='.')
{
if ( ctl==1 ) sa[p]=c;
if ( ctl==2 ) sc[p]=c;
p++;
}else if ( c=='+'||c=='-'||c=='*'||c=='/')
{
ctl=2;
sa[p]='\0';
sb=c;
p=0;
}
scanf("%c", &c);
}
sc[p]='\0';
//printf("[%s%c%s]",sa,sb,sc);
a=atof(sa);
b=atof(sc);
switch(sb)
{
case '+':
f=a+b;
break;
case '-':
f=a-b;
break;
case '*':
f=a*b;
break;
case '/':
f=a/b;
break;
defalt:
;
}
printf("[%.2f%c%.2f]=%.2f",a,sb,b,f);
printf("\n是否继续计算(Y/N)?");
scanf("%c", &Cflag);
getchar();
}
}
热心网友 时间:2024-11-22 01:38
#include"stdio.h"
#include"math.h"
main()
{
int x,y;
char flag;
printf("请输入操作数1,运算符,操作数2\n")
scanf("%d%c%d",&x,&flag,&y);
switch(flag)
case +:printf("=%d\n",x+y); break;
case -:printf("=%d\n",x-y); break;
case *:printf("=%d\n",x*y); break;
case /:printf("=%d\n",x/y); break;
default: error;
}