free pascal编程题
题目:描述某百货公司为了促销,采用购物打折的办法。(1)在1000元或以上者,按九五折优惠;(2)在2000元或以上者,按九折优惠;(3)在3000元或以上者,按八五折优...
题目:描述
某百货公司为了促销,采用购物打折的办法。
(1) 在1000元或以上者,按九五折优惠;
(2) 在2000元或以上者,按九折优惠;
(3) 在3000元或以上者,按八五折优惠;
(4) 在5000元或以上者,按八折优惠。 编写程序,输入购物款数,计算并输出优惠价。
输入
第一行1个正整数t,表示有t组数据,以下t行,每行1个正整数t,即购物款数。
输出
共t行,每行一个数,即相应的优惠价格,要求保留一位小数。
样例输入
2
2000
1550
样例输出
1800.0
1472.5
为什么网站说我答案错误呢?
program jiage;
var n,a:integer;
t:array[0..100000] of longint;
out:array[0..100000] of longint;
begin
readln(n);
for a:=1 to n do
begin
readln(t[a]);
if t[a]<1000 then out[n]:=100*t[a];
if(t[a]>=1000) and (n<2000) then out[a]:=95*t[a];
if(t[a]>=2000) and (n<3000) then out[a]:=90*t[a];
if(t[a]>=3000) and (n<5000) then out[a]:=85*t[a];
if t[a]>=5000 then out[n]:=80*t[n];
end;
a:=0;
for a:=1 to n do
writeln(out[a]/100:0:1);
readln
end. 展开
某百货公司为了促销,采用购物打折的办法。
(1) 在1000元或以上者,按九五折优惠;
(2) 在2000元或以上者,按九折优惠;
(3) 在3000元或以上者,按八五折优惠;
(4) 在5000元或以上者,按八折优惠。 编写程序,输入购物款数,计算并输出优惠价。
输入
第一行1个正整数t,表示有t组数据,以下t行,每行1个正整数t,即购物款数。
输出
共t行,每行一个数,即相应的优惠价格,要求保留一位小数。
样例输入
2
2000
1550
样例输出
1800.0
1472.5
为什么网站说我答案错误呢?
program jiage;
var n,a:integer;
t:array[0..100000] of longint;
out:array[0..100000] of longint;
begin
readln(n);
for a:=1 to n do
begin
readln(t[a]);
if t[a]<1000 then out[n]:=100*t[a];
if(t[a]>=1000) and (n<2000) then out[a]:=95*t[a];
if(t[a]>=2000) and (n<3000) then out[a]:=90*t[a];
if(t[a]>=3000) and (n<5000) then out[a]:=85*t[a];
if t[a]>=5000 then out[n]:=80*t[n];
end;
a:=0;
for a:=1 to n do
writeln(out[a]/100:0:1);
readln
end. 展开
3个回答
展开全部
明明用一个数就可以存储;为什么要用数组呢?我认为是数组太浪费空间。
program jiage;
var n,a:integer;
t:longint;
out:longint;
ans:real;
begin
readln(n);
for a:=1 to n do
begin
readln(t);
if t<1000 then out:=100*t;
if(t>=1000) and (n<2000) then out:=95*t;
if(t>=2000) and (n<3000) then out:=90*t;
if(t>=3000) and (n<5000) then out:=85*t;
if t>=5000 then out:=80*t;
ans:=out/100;
writeln(ans:0:1);
end;
end.
program jiage;
var n,a:integer;
t:longint;
out:longint;
ans:real;
begin
readln(n);
for a:=1 to n do
begin
readln(t);
if t<1000 then out:=100*t;
if(t>=1000) and (n<2000) then out:=95*t;
if(t>=2000) and (n<3000) then out:=90*t;
if(t>=3000) and (n<5000) then out:=85*t;
if t>=5000 then out:=80*t;
ans:=out/100;
writeln(ans:0:1);
end;
end.
展开全部
把var n,a:integer;
改为 var n,a:longint;试试
另外,没有必要用数组存数据和结果,直接一边读一边输出就行了
还有for循环前的a:=0; 是没用的
改为 var n,a:longint;试试
另外,没有必要用数组存数据和结果,直接一边读一边输出就行了
还有for循环前的a:=0; 是没用的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将longint改为real
用实型存储
用实型存储
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询