小火山的计算能力

小火山的计算能力

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 471   Solved: 123

Description

别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来。

Input

首先是一个t(1<=20)表示测试组数。然后一个表达式,表达式长度不超过200,只有加法和减法,并且保证第一个字符不会是运算符号,最终结果小于2^63-1。

Output

输出运算结果。

Sample Input

2
1+1
2+1-1

Sample Output

2
2

这道题挺坑的哭刚开始想的是先输出字符串,然后再逐个找出数字跟字符,然而比赛时并没有敲出来具体代码。。后来先输入数字,再输入符号,结果是对了,然而超时。。赛后看别人的解题思路,还是要先整体输入。。看代码:

#include<cstdio>
#include<cstring>
int main(){
	int t;
	char ch[205];
	scanf("%d",&t);
	while(t--){
		scanf("%s",ch);
		int i=0,l=strlen(ch);
		long long sum=0;//最后总和 
		long long ans=0;//暂存每一位数
		while(ch[i]>='0'&&ch[i]<='9') {//找第一个数
			sum=sum*10+ch[i]-'0';
			i++;//一直循环到符号位 
		}
		char sign;//符号 
		while(i<l){
			sign=ch[i];
			i++;
			ans=0;
			while(ch[i]>='0'&&ch[i]<='9') {
				ans=ans*10+ch[i]-'0';
				i++;//与找第一个数类似 
			}
			if(sign=='-')
				sum-=ans;
			if(sign=='+')
			 	sum+=ans;
		}
		printf("%lld\n",sum);
	}
	return 0;
}
再来个比赛时敲出来的 超时代码!!欢迎评价。。
#include<cstdio>
long long a,b,k,sum;
int main(){
	int t;
	char s;
    scanf("%d",&t);
    while(t--){
		scanf("%lld",&a);
    	while(scanf("%c",&s)&&(s!='\n')){
    		scanf("%lld",&b);
    		if(s=='+')
    			a+=b;
			else
				a-=b;
		}
    	printf("%lld\n",a);
	}
    return 0;  
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值