pascal程序问题(以下程序哪里错了)(新人求教)

发布网友 发布时间:2024-10-23 03:45

我来回答

4个回答

热心网友 时间:2024-11-01 00:19

program p91;
var a:array[‘A’..’D’] of integer;
b :array[1..4] of char;
i,j:integer;
t,ch:char;
begin
for i:=1 to 4 do b[i]:=chr(ord('A')+i-1);
read(ch)
While ch<>’#’
begin
if ch in[‘A’,’B’,’C’,’D’] then
begin
a[ch]:=a[ch]+1;
end;
read(ch);
end;
for i:=1to 3 do
for j:=i+1 to 4 do
if a[b[i]]<a[b[j]] then
begin
t:=b[i]; b[i]:=b[j];b[j]:=t;
end;
For i=1 to 4
Write(b[i],’:’,a[b[i]]);
end.
更改后的程序是这样,B组数值初始化时出了错.全部初始化成B了.
希望你能多研究一下数组

热心网友 时间:2024-11-01 00:18

for i:=1 to 4 do b[i]:=chr(ord(‘A’)+1);
这段有问题
改为
for i:=1 to 4 do b[i]:=chr(ord(‘A’)+i-1);
最后的排序,需要把a组也排下

热心网友 时间:2024-11-01 00:17

program p91;
var a:array['A'..'D'] of integer;
b :array[1..4] of char;
i,j:integer;
t,ch:char;
begin
for i:=1 to 4 do b[i]:=chr(ord('A')+i-1);
read(ch);
While ch<>'#' do
begin
if ch in['A','B','C','D'] then
begin
a[ch]:=a[ch]+1;
end;
read(ch);
end;
for i:=1to 3 do
for j:=i+1 to 4 do
if a[b[i]]<a[b[j]] then
begin
t:=b[i]; b[i]:=b[j];b[j]:=t;
end;
For i:=1 to 4 do
Write(b[i],':',a[b[i]]);
end.

不明白什么意思,上面的程序可以运行啊

热心网友 时间:2024-11-01 00:19

你这道题应该是一个投票统计问题,最后按票数多少输出排名
排序,统计都没问题,
只是你程序第一步初始化有问题,整个b数组都是‘B’,最后数据自然会出错了
正确的初始化程序段应该这样
for i:=1 to 4 do b[i]:=chr(ord('A')+i-1);
祝你修改成功!
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com