Pascal 2013年普及组试题
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。【输入】输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符和乘法运算符,且没有括号,所有参与...
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。
【输入】 输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符和乘法运算符,且没有括号,所有参与运算的数字均为0到231-1之间的整数。输入数据保证这一行只有0~ 9、加,乘这12种字符。
【输出】 输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于4位时,请只输出最后4位,前导0不输出。 展开
【输入】 输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符和乘法运算符,且没有括号,所有参与运算的数字均为0到231-1之间的整数。输入数据保证这一行只有0~ 9、加,乘这12种字符。
【输出】 输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于4位时,请只输出最后4位,前导0不输出。 展开
1个回答
展开全部
var s,s1,s2,ss:string;
i,x1,x2,j,x3,xx:longint;
begin
readln(s);
s:=s+'='; //最后加上=,方便下面计算
i:=1;
while i<=length(s) do //先解决乘法
begin
if s[i]='*' then
begin
s1:='';s2:='';
for j:=i-1 downto 1 do
if s[j]in['0'..'9'] then s1:=s[j]+s1 //取出第一个因数
else break;
xx:=j+1; //为了不让第二个因数出错,先用xx寄存开头位置
for j:=i+1 to length(s) do
if s[j]in['0'..'9'] then s2:=s2+s[j] //取出第二个因数
else break;
i:=xx; //求出一个乘法算式的答案
if length(s1)>4 then s1:=copy(s1,length(s1)-4+1,4);
//如果超过四位那么只取四位
if length(s2)>4 then s2:=copy(s2,length(s2)-4+1,4);
val(s1,x1);val(s2,x2);
x3:=x1*x2;
str(x3,ss);
if length(ss)>4 then ss:=copy(ss,length(ss)-4+1,4);
delete(s,i,j-i);
insert(ss,s,i); //插入得数
end
else inc(i); //如果不是乘号就进行下一位
end;
s1:='';
for i:=1 to length(s) do //取出第一个加数
if s[i]in['0'..'9'] then s1:=s1+s[i] else break;
val(s1,x1);s1:='';
for i:=i+1 to length(s) do //算加法
if s[i]in['0'..'9'] then s1:=s1+s[i]
else
begin
if length(s1)>4 then s1:=copy(s1,length(s1)-4+1,4);
//同上,只去最后四位
val(s1,x2);
x1:=x1+x2;
str(x1,s1);
if length(s1)>4 then val(copy(s1,length(s1)-4+1,4),x1);
s1:='';
end;
str(x1,s1);
if length(s1)<=4 then writeln(s1) //输出,如果超过四位就输出最后四位
else writeln(copy(s1,length(s1)-4+1,4));
end.
i,x1,x2,j,x3,xx:longint;
begin
readln(s);
s:=s+'='; //最后加上=,方便下面计算
i:=1;
while i<=length(s) do //先解决乘法
begin
if s[i]='*' then
begin
s1:='';s2:='';
for j:=i-1 downto 1 do
if s[j]in['0'..'9'] then s1:=s[j]+s1 //取出第一个因数
else break;
xx:=j+1; //为了不让第二个因数出错,先用xx寄存开头位置
for j:=i+1 to length(s) do
if s[j]in['0'..'9'] then s2:=s2+s[j] //取出第二个因数
else break;
i:=xx; //求出一个乘法算式的答案
if length(s1)>4 then s1:=copy(s1,length(s1)-4+1,4);
//如果超过四位那么只取四位
if length(s2)>4 then s2:=copy(s2,length(s2)-4+1,4);
val(s1,x1);val(s2,x2);
x3:=x1*x2;
str(x3,ss);
if length(ss)>4 then ss:=copy(ss,length(ss)-4+1,4);
delete(s,i,j-i);
insert(ss,s,i); //插入得数
end
else inc(i); //如果不是乘号就进行下一位
end;
s1:='';
for i:=1 to length(s) do //取出第一个加数
if s[i]in['0'..'9'] then s1:=s1+s[i] else break;
val(s1,x1);s1:='';
for i:=i+1 to length(s) do //算加法
if s[i]in['0'..'9'] then s1:=s1+s[i]
else
begin
if length(s1)>4 then s1:=copy(s1,length(s1)-4+1,4);
//同上,只去最后四位
val(s1,x2);
x1:=x1+x2;
str(x1,s1);
if length(s1)>4 then val(copy(s1,length(s1)-4+1,4),x1);
s1:='';
end;
str(x1,s1);
if length(s1)<=4 then writeln(s1) //输出,如果超过四位就输出最后四位
else writeln(copy(s1,length(s1)-4+1,4));
end.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询