- 600 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 22:55:00 ]
- [1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のプログラムのmainとnumberは変更しないで、 intのスタックを2つ作る。1つは数値をいれる。もう1つには演算子を表す数をいれる #include <stdio.h> #include <stdlib.h> #include <ctype.h> char *p; char c[100]; int expression(void);int term(void); int number(void);main(){ int ans;while(1){ printf("Enter expression : ");fgets(c,90,stdin); p=c;if(*p == '\n') break;ans = expression(); printf("Answer:%d\n", ans);}}int expression(){ int ans;ans = term();while(1){if(*p == '+'){ p++;ans = ans + term();}else if(*p == '-'){ p++;ans = ans - term();}else break;} return(ans);}int term(){int ans,x;ans = number(); while(1){if(*p == '*'){p++;ans = ans * number();} else if(*p == '/'){p++;x = number(); if(x == 0){printf("Division by 0\n"); exit(1);}ans = ans / x;} else break;}return(ans);} int number(){int i=0;while (isdigit(*p)){i=i*10+(*p++)-48;} return(i);} [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 年07月23日 [5] その他の制限: 特になし
|

|