主题:TJU1018
XVenus
[专家分:20] 发布于 2005-05-16 19:20:00
编制一个乘法运算的程序
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个回复)
沙发
davidw017 [专家分:4170] 发布于 2005-05-16 19:26:00
Hint:
如果题目输入的是 17 6,打印的算式应该是:
// 1234567 (不用输出这一行)
17
* 6
-------
102
你应该明白为什么哇了吧
板凳
XVenus [专家分:20] 发布于 2005-05-16 19:30:00
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 楼
XVenus [专家分:20] 发布于 2005-05-16 19:55:00
请问当式子是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 楼
XVenus [专家分:20] 发布于 2005-05-16 19:58:00
对了,忘了说了,它显示的错误是:Run Time Error[106]
5 楼
davidw017 [专家分:4170] 发布于 2005-05-16 19:59:00
你是最后判断什么时候停止的时候出了问题:
Until e<0;
应为
Until eof(input);
6 楼
XVenus [专家分:20] 发布于 2005-05-16 20:46:00
Until eof(input);
请问这是什么意思?
7 楼
XVenus [专家分:20] 发布于 2005-05-16 20:47:00
改过了,不过还是老毛病,没过~~
8 楼
XVenus [专家分:20] 发布于 2005-05-17 16:38:00
各位帮忙看一下这道题呀~~~
9 楼
davidw017 [专家分:4170] 发布于 2005-05-17 18:28:00
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 楼
eastcowboy [专家分:25370] 发布于 2005-05-26 20:48:00
这个……我觉得还是不要发现成的代码比较好,尤其是已经通过的。
关于输出格式的问题,如果不清楚的话可以把样例程序下载到本地,利用DOS的管道功能查看之。步骤如下:
1、打开windows命令行,或进入DOS环境
2、运行你下载的exe文件,在后面加命令行参数 >***.txt,即是一个大于符号,后面跟一个文件名(为了查看方便最好是以.txt结尾)这样程序执行的结果就会保存到你指定的文件中(而不是显示在屏幕上),这样就可以把输出的格式看得很清楚,回车的个数、末尾有无空格都可以轻易的看出。空格和tab符号也可以分得出来。
我来回复