1. 程式人生 > >杭電acm—1237 簡單計算器

杭電acm—1237 簡單計算器

簡單計算器

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 21912    Accepted Submission(s): 7894


Problem Description 讀入一個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。

Input 測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用一個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。

Output 對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。

Sample Input 1 + 2 4 + 2 * 5 - 7 / 11 0
Sample Output 3.0013.36

本來以為要涉及大數的運算,後來寫了一個這個ac掉了,就是簡單的,先乘除,後加減。

AC的程式碼如下:若哪兒有不對或是什麼建議,請各位不吝指出!

#include<stdio.h>
#include<string.h>
int main(){
	char str[205],str2[205];
	int i,j,k,s,index,length,flag;
	double x,y,count[200],add;
	while(gets(str)!=NULL){
		length=strlen(str);
		flag=0;
		for(i=0;i<length;i++){
			if(str[i]==' '||str[i]=='0')
			  flag++;
		}
		if(flag>=length)
		  break;
		k=0;
		x=y=0;
		add=0;
		for(i=0;i<length;i++){//先計算乘和除 
			if(str[i]>='0'&&str[i]<='9'){
				x=str[i]-'0';
				for(j=i+1;j<length;j++){
					if(str[j]==' ')
					   break;
					else
					   x=x*10+str[j]-'0';
				}
				i=j;
			}
			if(str[i]=='+'||str[i]=='-'){//把加減的數和符號儲存起來 
				count[k]=x;
				str2[k++]=str[i];
			}
			if(str[i]=='*'||str[i]=='/'){//計算乘除並用x儲存
				if(str[i+2]>='0'&&str[i+2]<='9'){
				    y=str[i+2]-'0';
			  	    for(j=i+3;j<length;j++){
					   if(str[j]==' ')
						   break;
					   else
						   y=y*10+str[j]-'0';
				    }
				    if(str[i]=='*')
				       x=x*y;
				    else
				       x=x*1.0/y;				
				}
				i=j;
			}
		}
		count[k]=x;
		add=count[0];
		for(i=0;i<k;i++){
			if(str2[i]=='-')
			  add-=count[i+1];
			else
			  add+=count[i+1];
		}
		printf("%.2lf\n",add);
	}
	return 0;
}


相關推薦

acm1237 簡單計算器

簡單計算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub

sincerit-oj 1237 簡單計算器

1237 簡單計算器 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 26856 Accepted Submission(s): 9

acm 1084 What Is Your Grade? 比較考人的簡單

#include <iostream> #include <cstdio> #include <algorithm> #include <cstring>

2017ACM集訓隊單人排位賽 - 2 題解

需要 6.0 hdu2045 owb style 適應 freopen count 枚舉   1001,水題,直接模擬即可。比賽中開局連wa三發,因為把int寫成了bool..   1002,積分題,比賽中找到了下面這個積分公式,   但是並沒什麽用,,因為帶入以後存在誤

HDU 1237 簡單計算器

math.h tle 小數 ems target tor getchar style pac 題目代號:HDU 1237 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1237 題目原文: 簡單計算器 Problem Desc

HDU-1237- 簡單計算器--棧的基本應用

++ 現在 amp hdu print 簡單 循環條件 har pop 簡單計算器 Problem Description 讀入一個只包含 +, -, *, / 的非負整數計算表達式,計算該表達式的值。 Input 測試輸入包含若幹測試用例,每個測試用例占一行,每行不超

acm 1173

ace 學習 一個點 bsp esp != 所有 fin 數學 從1173這道題,我學習到了一個數學思想...... 假設所有的點都在一個直線上,要求一個點,到所有點的距離之和最短,那麽,把值最大的點和值最小的點連成一條直線,這條直線上的所有點到所有的點的距離之和相等且都是

acm 1180 詭異的樓梯 BFS

script 朋友 mission emp temp ont pty content using 詭異的樓梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Other

acm 1181 變形課 DFS

小寫 pty space ring 隊列 set amp ott panel 變形課 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Subm

acm 1210 Eddy's 洗牌問題

input pro sample 就是 pre ble 通過 iss ont Eddy‘s 洗牌問題 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot

acm 1230 火星a+b(進制)

進制數 a+b 第一個 進行 () 地球 iss class font 火星A+B Time Limit: 2000/1000 MS (Java/

ACM hdu 2079 選課時間 (模板)

Problem Description 又到了選課的時間了,xhd看著選課表發呆,為了想讓下一學期好過點,他想知道學n個學分共有多少組合。你來幫幫他吧。(xhd認為一樣學分的課沒區別) Input輸入資料的第一行是一個數據T,表示有T組資料。每組資料的第一行是兩個整數n(1 <= n <

acm 1231 最大連續子序列

                          

acm 1230 火星a+b(進位制)

                          

acm 1210 Eddy's 洗牌問題

Eddy's 洗牌問題 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5504  &n

ACM-2602 Bone Collector

                                          &nb

ACM-2075 A|B?

A|B?                                         &nbs

ACM-2071 Max Num

Max Num Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 29053  

ACM-1064 Financial Management

Financial Management                                     &n

ACM-2104 hide handkerchief

hide handkerchief                                     &nb