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);
祝你修改成功!