从键盘输入的 5 个正整数的数组。 用户输入一个字符。 如果用户输入字符“G”或“g”,则查找数组中最大的元素并显示该元素的索引。 如果用户输入字符“R”或“r”,则将数组的元素从大到小排序。 如果用户输入字符“E”或“e”,则求数组元素乘积的平方根。
label MK1;
const N=5;
var
sw:char;
arr:array[1..N] of integer;
i, j: byte;
min, min_index: integer;
sum:integer;
procedure swap(var a, b: integer);
var tmp:integer;
begin
tmp := a;
a:=b;
b:=tmp;
end;
begin
randomize;
for i:=1 to N do
begin
write('输入', i, '数组的第一个元素: ');
readln(arr[i]);
//arr[i]:=random(1,10);
end;
writeln(arr);
MK1:
writeln;
writeln('处理数组');
writeln('如果用户输入字符“G”或“g”,则查找数组中最大的元素并显示该元素的索引。');
writeln('如果用户输入字符“R”或“r”,则将数组元素从大到小排序。');
writeln('如果用户输入字符“E”或“e”,则求数组元素乘积的平方根。');
writeln;
write('输入一个字符: ');
readln(sw);
case uppercase(sw) of
'G':
begin
max:=arr[N];
max_index:=N;
for i:=1 to N-1 do
if max > arr[i] then
begin
max:=arr[i];
max_index:=i;
end;
writeln(max, ' 指数 ', max_index);
end;
'R':
begin
for i:= 1 to N do
for j:=1 to N-i do
begin
if arr[j] < arr[j+1] then swap(arr[j], arr[j+1]);
end;
writeln(arr);
end;
‘E':
begin
for j:=1 to N do pro
sqrt
sqrt(j:real):real
writeln(j);
end;
else //上面没有列出的所有其他情况
begin
writeln('错误!输入的字符无效!');
goto MK1;
end;
参考GPT和自己的思路:
在代码中有几个语法错误需要进行修正:
在第7行,声明了一个min变量,但后面没有使用,可以删除。
在第20行,写成了pro,应该改为sqrt。
在第32行,字符‘E’的单引号应该使用英文单引号或双引号。
在第35行,应该是writeln(sqrt(sum)),而不是writeln(j)。
修正后的代码如下:
label MK1;
const N=5;
var sw:char;
arr:array[1..N] of integer;
i, j: byte;
max, max_index: integer;
sum:integer;
procedure swap(var a, b: integer);
var tmp:integer;
begin
tmp := a;
a:=b;
b:=tmp;
end;
begin
randomize;
for i:=1 to N do
begin
write('输入', i, '数组的第一个元素: ');
readln(arr[i]);
//arr[i]:=random(1,10);
end;
writeln(arr);
MK1:
writeln;
writeln('处理数组');
writeln('如果用户输入字符“G”或“g”,则查找数组中最大的元素并显示该元素的索引。');
writeln('如果用户输入字符“R”或“r”,则将数组元素从大到小排序。');
writeln('如果用户输入字符“E”或“e”,则求数组元素乘积的平方根。');
writeln;
write('输入一个字符: ');
readln(sw);
case uppercase(sw) of
'G':
begin
max:=arr[1];
max_index:=1;
for i:=2 to N do
if max < arr[i] then
begin
max:=arr[i];
max_index:=i;
end;
writeln(max, ' 指数 ', max_index);
end;
'R':
begin
for i:= 1 to N-1 do
for j:=1 to N-i do
if arr[j] < arr[j+1] then
swap(arr[j], arr[j+1]);
writeln(arr);
end;
'E':
begin
sum := 1;
for i:=1 to N do
sum := sum * arr[i];
writeln(sqrt(sum));
end;
else //上面没有列出的所有其他情况
begin
writeln('错误!输入的字符无效!');
goto MK1;
end;
end;
end.