C 언어 수업 설계 의 계산기 기능

4228 단어 C 언어계산기
본 논문 의 사례 는 C 언어 실현 계산기 의 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.

/*===============================================*\
**     :     ,    10*(20.2-30.6)+5.0/2     
**     :        (   )
** IDE:Dev-Cpp 4.9.9.2
**     :           
**   : 2014-6-17
\*===============================================*/
 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxn 1000
char buf[maxn], str[maxn], signStack[maxn], ch[2];
int len, id, idSign, idAns, i, n;
double ans[maxn];
 
void checkSign(char sign){
 if(sign == '(') signStack[idSign++] = sign;
 else if(sign == '*' || sign == '/'){
 while(idSign && (signStack[idSign-1] == '*' || signStack[idSign-1] == '/'))
 str[id++] = signStack[--idSign];
 signStack[idSign++] = sign;
 }else if(sign == ')'){
 while(signStack[idSign-1] != '(') str[id++] = signStack[--idSign];
 --idSign;
 }else{
 while(idSign && signStack[idSign-1] != '(') str[id++] = signStack[--idSign];
 signStack[idSign++] = sign;
 }
 str[id++] = ' ';
}
 
int check(double a, char sign){
 if(a == 0 && sign == '/'){
 printf("     0!,    。
"); system("pause"); exit(EXIT_FAILURE); } return 1; } double cal(double a, double b, char sign){ switch(sign){ case '+': return a + b; case '-': return a - b; case '*': return a * b; case '/': return a / b; } } int main(){ printf("\t\t\t\t

"); printf("\t\t ======================================
"); printf("\t\t || + - * / ( ) ||
"); printf("\t\t ======================================
"); printf("\t\t\t\t\t\t :
"); printf("\t\t\t\t\t\t :2014 6 17
"); printf("\t\t\t\t\t\tEmail:[email protected]
"); printf(" , -10*(20.2-30.6)+5.0/2
:
"); do{ gets(buf); id = idSign = idAns = 0; if((len = strlen(buf)) == 0) continue; int flag = 0; // '-' 。1 ,0 +*/( /* : -, , +*-/( , */ for(i = 0; i < len; ++i){ if(buf[i] == ' ') continue; if(buf[i] >= '0' && buf[i] <= '9' || buf[i] == '.' || buf[i] == '-' && !flag){ str[id++] = buf[i]; flag = 1; } else { str[id++] = ' '; checkSign(buf[i]); if(buf[i] != ')') flag = 0; else flag = 1; } } while(idSign) str[id++] = signStack[--idSign]; for(i = 0, n = 0; i < id; ++i){ if(str[i] == ' ') continue; /* ‘-' , ‘-' , */ if(str[i] >= '0' && str[i] <= '9' || str[i] == '.' || str[i] == '-' && (str[i+1] >= '0' && str[i+1] <= '9' || str[i+1] == '.')){ sscanf(str + i, "%lf%n", &ans[idAns++], &n); i += n - 1; continue; }else if(check(ans[idAns-1], str[i])){ ans[idAns-2] = cal(ans[idAns-2], ans[idAns-1], str[i]); --idAns; } } printf(" %.2lf
", ans[0]); printf(" Y , N : "); scanf("%s", ch); }while(ch[0] == 'Y' || ch[0] == 'y'); printf(" !
"); system("pause"); return 0; }
계산기 에 관 한 멋 진 글 은 보 세 요《계산기 특집》.더 많은 멋 진 것 을 발견 하 기 를 기다 리 겠 습 니 다!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기