回 帖 发 新 帖 刷新版面

主题:各位高手帮个忙,超简单的PASCAL编程我不会...哭

2、    读入三个整数a,b,c,先按读入顺序输出,再按从大到小输出,每个数间空一格。
样例:
输入:3 37 25
输出:3 37 25
      37 25 3

3、    将字母a,b,c,d和A,B,C,D转换成1,2,3,4,其余字母转换为5。
样例:
输入:B
输出:2
输入:T
输出:5

4、    读入一个整数,若它是一个平方数,则给出它是哪个数的平方,否则输出“NO”。
样例:
输入:9
输出:3
输入:10
输出:NO

5、    读入一个英文字母并将它输出,当该字母处于字母表的前半部时,输出它的后继,当它处于字母表的后半部时,输出它的前趋。当该字母是第一个或最后一个时没有前趋或后继,则输出“NO”。

6、    某企业经理根据X,Y指标给下属评定等级,方法如下:如果X大于等于4而且Y也大于等于4则评为A;如果X大于等于4而Y小于4则评为B;如果X小于4则评为C。编程给出评定程序。

7、    已知,x在1~8之间,按如下公式计算y的值。(清华P47例)
         3x+5        1≤x<2  
         2sinx-1      2≤x<3   
               3≤x<5
x2-2x+5     5≤x<8

回复列表 (共18个回复)

沙发

帮个忙编一下~~

板凳

3:for i:=1 to 4 do
  begin
  if chr(ch)=(i+64)or(i+96) then write(i);
  else write(5);
  end;
end.
  

3 楼

下题?

4 楼

var
   i:integer;
begin
     read(i);
     if sqrt(i)=trunc(sqrt(i)) then write'YES' else write'NO';
end.

5 楼

第一道题(题2)不会不应该了吧
不过我6年没碰过pascal了,语法忘差不多了
思路是:
读入数组
write数组
排序(任何一种,冒泡总会吧,双循环,i:=1 to max-1,j:=2 to max,比较a[i]和a[j],如果不满足约定顺序就交换,这里假定输入数组为a[],数组最大下标是max)
write排序后数组
readln;
end.

题5就是判断多了点
先要判断输入字符对应的ascll(此后舍弃原字符,一律用这个ascll值计算)是不是=65、90、97、122里的一个,是就输出NO,结束
然后判断他是不是在97~122是的话把值-32并且赋标志量为1(否则为0,这里简化计算)
接下来判断是否在66~78之间,是的话输出字符,字符的ascll值为被判断值-1+32*标志量
否则判断是否在78~89之间,是的话输出字符,字符的ascll值为被判断值+1+32*标志量
否则报错
readln;
end.

6很简单吧
先判断x是否大于4
如果是那么再次判断y是否大于4,是的话输出A,否的话输出B
否的话输出C
readln;
end.

7真的没什么好说的了
if x<1 or x>8 报错,end
if x)=1 and x<2
  y=3*x+5
else if x<3
y=...
else if x<5
y=...
else 
y=...
write(y);
readln;
end.
公式自己补齐……

6 楼

貌似这些东西是应该用我初中学的语法编小学4年即时候做的思考题

7 楼

还是不清楚...可以再详细一点吗

8 楼

[quote]3:for i:=1 to 4 do
  begin
  if chr(ch)=(i+64)or(i+96) then write(i);
  else write(5);
  end;
end.
  
[/quote]
这个是错的
else里直接打5的话超过1的都会打出5

9 楼

题5就是判断多了点
先要判断输入字符对应的ascll(此后舍弃原字符,一律用这个ascll值计算)是不是=65、90、97、122里的一个,是就输出NO,结束
然后判断他是不是在97~122是的话把值-32并且赋标志量为1(否则为0,这里简化计算)
接下来判断是否在66~78之间,是的话输出字符,字符的ascll值为被判断值-1+32*标志量
否则判断是否在78~89之间,是的话输出字符,字符的ascll值为被判断值+1+32*标志量
否则报错
readln;
end.
这一段里,按着编就可以
挺明白的了,原理是A65a97

10 楼

哪句不明白再问我吧
整体上真的没什么好解释的

我来回复

您尚未登录,请登录后再回复。点此登录或注册