回 帖 发 新 帖 刷新版面

主题:[讨论]新手,问个不知所以然又不想问老师的问题

我用的是pascal。这些内容老师还没教到,不想问老师,于是……
问题1、
输入三个字符,然后按输入字符次序输入这三个字符,并输出每个字符的序号,最后按与输入字符相反的次序输出这三个字符。(求序号用ORD函数)

我的看法:这题主要不明白的是:“求序号用ORD函数”这个句子,如何才能用ORD函数求出序号?我写的是:
program exe_1;
  var a,b,c:real;
  begin
    writeln('input:a,b,c');
    readln(a,b,c);
    ......
后面就不懂写了……赐教
问题2、
输入三个正整数,若能用这三个数作为边长组成三角形,就计算并输出该三角形的面积,否则就输出can't。
我的看法:如果仅仅知道三角形的三条边,在不知道高或角度或是直角三角形的情况下,如何算出三角形的面积?我写的是:
program exe_2;
const
  pi=3.14  
  var a,b,c,s:integer;
  writeln('input a,b,c');
  readln(a,b,c);
  if (a+b>c)and(a+c>b)and(b+c>a) then wrietln(………)
eles writeln('can't');
readln;
end.
省略号不懂写了……同样请赐教……
问题三、
输入一个三位数的整数,将数字位置重新排列,组成一个尽可大的三位数。例如:输入 213,重新排列可得到尽可能大的三位数是 321。
我请教了下朋友,他写得非常麻烦,而且不知道对不对:
program exe_3;
  var a,b,c,s:integer;
  begin
    write('into a,b,c=');//abc三数请隔开(注解)
    redln(a,b,c);
    if (a>b)and(a>c) then write(a);
    if (b>a)and(b>c) then write(b);
    if (c>a)and(c>b) then write(c);
    if (a<b)and(a>c)or(a<c)and(a>b) then write(a);
    if (b<a)and(b>c)or(b<c)and(b>a) then write(b);
    if (c<a)and(c>b)or(c<b)and(c>a) then write(a);
    if (a<b)and(a<c) then write (a);
    if (b<a)and(b<c) then write (b);
    if (c<a)and(c<b) then write (c);
readln;
end.

他说:它主要是通过把三位数拆分成三个数值,然后通过"write"不换行的特点,把三个数值逐一表现出来,而我则认为倘若这样,是大不可能是标准答案……于是求正解,求完正解完后,就去扁我朋友……

总而言之:拜托了!
  





  

回复列表 (共4个回复)

沙发

第一个问题
  ord()(括号中为你想要求序号的字符)
  你知道,电脑上所有的字符都有一个对应的序号码,叫ASCll码,比如'a'的序号为69
  所以第一个程序应该这么写
 Program exe_1;
 var
  a,b,c:char(char是字符的意思,'我是猪'是字符串,'猪'是字符');
 begin
  Read(a,b,c);
  Writeln(a,' ',b,' ',c);
  Writeln(ord(a),ord(b),ord(c));
 end.

第二个问题
  三角形还有一个面积公式,但是小学是不学的,就是已知三边求面积的公式,叫海伦公式,中国叫秦九韶公式,是这样的,
  令a,b,c是三角形的三边长,p是周长的一半,则
  S=sqrt(p*(p-a)*(p-b)*(p-c))
  (sqrt(x)表示给x开平方,你应该会做了吧。)
第三个问题
  不要扁你朋友,他是对的。
我用我在www.vijos.com上过了64题的名誉向你保证!!!

板凳

我是学C语言的,该程序在b3下成功.
  第二题: #include<stdio.h>
     #include<math.h>
     main()
     {float a,b,c,p,s;
      printf("\ninput three number:\n");
       scanf("%f,%f,%f",&a,&b,&c);
    p=1.0/2*(a+b+c);
    if((a-b<c)&&(a+b>c))
     {s=sqrt(p*(p-a)*(p-b)*(p-c));
      printf("%f",s);
      }
      else printf("can't");
      }

3 楼


第三题:
  技术含量低,但我保证在bc下成功.
    #include<stdio.h>
     main()
     {int a,b,c,t;
      printf("\ninput three number:\n");
       scanf("%d,%d,%d",&a,&b,&c);
    if(a<b)
    {t=a;
    a=b;
    b=t;
    }
    if(a<c)
    {t=a;
    a=c;
    c=t;
    }
    if(b<c)
    {t=b;
    b=c;
    c=t;
    }
    printf("%d%d%d",a,b,c);
    }

4 楼


需纠正一下,上述程序在turbo 3++下成功.

我来回复

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