回 帖 发 新 帖 刷新版面

主题:TJU1018

编制一个乘法运算的程序
Time Limit:1s Memory Limit:640k
Total Submit:4129 Accepted:1367
下载样例程序(PE)
下载样例程序(ELF)


--------------------------------------------------------------------------------

Problem
从键盘读入两个100以内的正整数,进行乘法计算并输出

Input
该题有多组测试数据,每组数据为一行,包含两个乘数,用空格分开。

Output
输出格式请看样例.注每一行末尾没有任何空格,比如样例数据中的89后面没有空格。

Sample Input
89 13

Sample Output
1234567(这个仅作格式参照,不属于输出部分)

     89
*    13
-------
    267
    89
-------
   1157

Source
noip96普及组


Program TJU1018;
Var
  a, b, c, d, e: Longint;
Begin
  e := 0;
  Repeat
  Read(a,b);
  Writeln(a:7);
  Writeln('*':1,b:6);
  Writeln('-------');
  c := a*(b Mod 10);
  d := a*(b Div 10);
  Writeln(c:7);
  Writeln(d:6);
  Writeln('-------');
  Writeln(a*b:7);
  Until e<0;
End.

怎么又没过去?~~

回复列表 (共14个回复)

沙发

Hint:

如果题目输入的是 17 6,打印的算式应该是:
// 1234567 (不用输出这一行)

        17
   *     6
   -------
       102

你应该明白为什么哇了吧

板凳

Program TJU1018;
Var
  a, b, c, d, e: Longint;
Begin
  e := 0;
  Repeat
  Read(a,b);
  If b>=10 Then Begin
  Writeln(a:7);
  Writeln('*':1,b:6);
  Writeln('-------');
  c := a*(b Mod 10);
  d := a*(b Div 10);
  Writeln(c:7);
  Writeln(d:6);
  Writeln('-------');
  Writeln(a*b:7);
  End;
  If b<10 Then Begin
    Writeln(a:7);
    Writeln('*':1,b:6);
    Writeln('-------');
    Writeln(a*b:7);
  End;
  Until e<0;
End.

改成这样了,不过还是不行

3 楼

请问当式子是89*10的时候,竖式应该是什么样的?

     89
*    10
-------
     00
    89
-------
    890

还是
     89
*    10
-------
      0
    89
-------
    890

如果是第一种的话,我把程序改了一下,不过那个<>的地方好像出错了。
Program TJU1018;
Var
  a, b, c, d, e, f: Longint;
Begin
  e := 0;
  f := 0;
  Repeat
  Read(a,b);
  If (b>=10) And (b Div 10 <> f) Then Begin
  Writeln(a:7);
  Writeln('*':1,b:6);
  Writeln('-------');
  c := a*(b Mod 10);
  d := a*(b Div 10);
  Writeln(c:7);
  Writeln(d:6);
  Writeln('-------');
  Writeln(a*b:7);
  End;
  If (b>=10) And (b Div 10=0) Then Begin
  Writeln(a:7);
  Writeln('*':1,b:6);
  Writeln('-------');
  c := a*(b Mod 10);
  d := a*(b Div 10);
  Writeln('00':7);
  Writeln(d:6);
  Writeln('-------');
  Writeln(a*b:7);
  End;
  If b<10 Then Begin
    Writeln(a:7);
    Writeln('*':1,b:6);
    Writeln('-------');
    Writeln(a*b:7);
  End;
  Until e<0;
End.

4 楼

对了,忘了说了,它显示的错误是:Run Time Error[106]

5 楼

你是最后判断什么时候停止的时候出了问题:
  Until e<0;
应为
  Until eof(input);

6 楼

Until eof(input);
请问这是什么意思?

7 楼

改过了,不过还是老毛病,没过~~

8 楼

各位帮忙看一下这道题呀~~~

9 楼

Program TJU1018;
Var
  a, b, c, d, e: integer;
Begin
  e := 0;
  Repeat
  Readln(a,b);
  If b>=10 Then Begin
  Writeln(a:7);
  Writeln('*':1,b:6);
  Writeln('-------');
  c := a*(b Mod 10);
  d := a*(b Div 10);
  Writeln(c:7);
  Writeln(d:6);
  Writeln('-------');
  Writeln(a*b:7);
  End;
  If b<10 Then Begin
    Writeln(a:7);
    Writeln('*':1,b:6);
    Writeln('-------');
    Writeln(a*b:7);
  End;
  Until eof(input);
End.

{我帮你改了一下,没什么大问题}
246241  ----- 1018  Accepted 44 k 0 ms Free Pascal 2005-05-17 18:36:43

10 楼

这个……我觉得还是不要发现成的代码比较好,尤其是已经通过的。

关于输出格式的问题,如果不清楚的话可以把样例程序下载到本地,利用DOS的管道功能查看之。步骤如下:
1、打开windows命令行,或进入DOS环境
2、运行你下载的exe文件,在后面加命令行参数 >***.txt,即是一个大于符号,后面跟一个文件名(为了查看方便最好是以.txt结尾)这样程序执行的结果就会保存到你指定的文件中(而不是显示在屏幕上),这样就可以把输出的格式看得很清楚,回车的个数、末尾有无空格都可以轻易的看出。空格和tab符号也可以分得出来。

我来回复

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