编制一个乘法运算的程序
2008-02-14 23:33
225 查看
FJNU.1405
Description
从键盘读入两个100以内的正整数,进行乘法计算并输出
Input
该题有多组测试数据,每组数据为一行,包含两个乘数,用空格分开。
Output
输出格式请看样例.注每一行末尾没有任何空格,比如样例数据中的89后面没有空格。
Sample Input
89 13
Sample Output
89
* 13
-------
267
89
-------
1157
My Program
#include<iostream>
using namespace std;
void MIDDLE(int m,int n,int lm,int ln)
...{
int a[3],i;
int k1,k2,k3;
int l1=2,l2=2,l3=2;
a[0]=n%10;a[1]=n/10;
if(ln==3)
...{
a[2]=n/10%10;
a[1]=n/100;
}
k1=a[0]*m;
if(k1<10) l1=1;
else
if(k1>=100) l1=3;
else
if(k1>=1000) l1=4;
k2=a[1]*m;
if(k2<10) l2=1;
else
if(k2>=100) l2=3;
else
if(k2>=1000) l2=4;
k3=a[2]*m;
if(k3<10) l3=1;
else
if(k3>=100) l3=3;
else
if(k3>=1000) l3=4;
for(i=7-l1;i>0;i--)
cout<<" ";
cout<<k1<<endl;
if(ln==3)
...{
for(i=7-l3;i>1;i--)
cout<<" ";
cout<<k3<<endl;
for(i=7-l2;i>2;i--)
cout<<" ";
cout<<k2<<endl;
}
else
...{
for(i=7-l2;i>1;i--)
cout<<" ";
cout<<k2<<endl;
}
cout<<"-------"<<endl;
}
int main()
...{
int m,n,s;
int lengthM=2,lengthN=2,lengthS=4;
int i;
while(scanf("%d%d",&m,&n)!=EOF)
...{
s=m*n;
lengthM=2;lengthN=2;lengthS=4;
if(m<10) lengthM=1;
if(m>=100) lengthM=3;
if(n<10) lengthN=1;
if(n>=100) lengthN=3;
if(s<10) lengthS=1;
else
if(s<100) lengthS=2;
else
if(s<1000) lengthS=3;
else if(s>=10000) lengthS=5;
for(i=7-lengthM;i>0;i--)
cout<<" ";
cout<<m<<endl;
cout<<"*";
for(i=7-lengthN;i>1;i--)
cout<<" ";
cout<<n<<endl;
cout<<"-------"<<endl;
if(lengthN!=1)
MIDDLE(m,n,lengthM,lengthN);
for(i=7-lengthS;i>0;i--)
cout<<" ";
cout<<s<<endl;
}
return 0;
}
YOYO's Note:
很白的写法……一直WA,我还以为是因为没有考虑百位,于是就多了一段写百位……
后来问了人家才知道是自己想太多……我把最后带0的都考虑了……变成
12
* 50
--------
600
实际上还是要分段输出的……郁闷……
Description
从键盘读入两个100以内的正整数,进行乘法计算并输出
Input
该题有多组测试数据,每组数据为一行,包含两个乘数,用空格分开。
Output
输出格式请看样例.注每一行末尾没有任何空格,比如样例数据中的89后面没有空格。
Sample Input
89 13
Sample Output
89
* 13
-------
267
89
-------
1157
My Program
#include<iostream>
using namespace std;
void MIDDLE(int m,int n,int lm,int ln)
...{
int a[3],i;
int k1,k2,k3;
int l1=2,l2=2,l3=2;
a[0]=n%10;a[1]=n/10;
if(ln==3)
...{
a[2]=n/10%10;
a[1]=n/100;
}
k1=a[0]*m;
if(k1<10) l1=1;
else
if(k1>=100) l1=3;
else
if(k1>=1000) l1=4;
k2=a[1]*m;
if(k2<10) l2=1;
else
if(k2>=100) l2=3;
else
if(k2>=1000) l2=4;
k3=a[2]*m;
if(k3<10) l3=1;
else
if(k3>=100) l3=3;
else
if(k3>=1000) l3=4;
for(i=7-l1;i>0;i--)
cout<<" ";
cout<<k1<<endl;
if(ln==3)
...{
for(i=7-l3;i>1;i--)
cout<<" ";
cout<<k3<<endl;
for(i=7-l2;i>2;i--)
cout<<" ";
cout<<k2<<endl;
}
else
...{
for(i=7-l2;i>1;i--)
cout<<" ";
cout<<k2<<endl;
}
cout<<"-------"<<endl;
}
int main()
...{
int m,n,s;
int lengthM=2,lengthN=2,lengthS=4;
int i;
while(scanf("%d%d",&m,&n)!=EOF)
...{
s=m*n;
lengthM=2;lengthN=2;lengthS=4;
if(m<10) lengthM=1;
if(m>=100) lengthM=3;
if(n<10) lengthN=1;
if(n>=100) lengthN=3;
if(s<10) lengthS=1;
else
if(s<100) lengthS=2;
else
if(s<1000) lengthS=3;
else if(s>=10000) lengthS=5;
for(i=7-lengthM;i>0;i--)
cout<<" ";
cout<<m<<endl;
cout<<"*";
for(i=7-lengthN;i>1;i--)
cout<<" ";
cout<<n<<endl;
cout<<"-------"<<endl;
if(lengthN!=1)
MIDDLE(m,n,lengthM,lengthN);
for(i=7-lengthS;i>0;i--)
cout<<" ";
cout<<s<<endl;
}
return 0;
}
YOYO's Note:
很白的写法……一直WA,我还以为是因为没有考虑百位,于是就多了一段写百位……
后来问了人家才知道是自己想太多……我把最后带0的都考虑了……变成
12
* 50
--------
600
实际上还是要分段输出的……郁闷……
相关文章推荐
- fjnu 1405 编制一个乘法运算的程序
- 【java学习记录】3.采用面向对象的方法设计一个能对复数(Complex)进行加、减、乘法的简单运算的程序
- 编制一个完成两个数的四则运算程序。如:用户输入34+56则输出结果90.00。要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入。
- 编制一个能演示执行集合的并、交和差运算的程序。(有序表)
- 编写一个程序,实现两个256位的十进制整数的乘法运算.
- 编制一个能演示执行集合的并、交和差运算的程序。(有序表)
- 一个小程序引发的讨论(运算优先级、参数传递与调用约定的问题)
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 一个计算复数四则运算的小程序
- 任务02——安装 Intellj IDEA,编写一个简易四则运算小程序,并将代码提交到 GitHub
- 编写一个能自动生成小学四则运算题目的程序。
- 作业二:编写一个自动生成四则运算的程序
- 编写一个程序,实现顺序栈的各种基本运算。
- 编写一个程序,实现顺序环形队列的各种基本运算。
- 软件工程第一个程序:像阿超那样,花20分钟写一个能自动生成小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算。
- 编写一个程序,实现二叉树的各种运算
- 用autoit写了一个珠心神算的小程序(数学运算)
- 通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
- oj程序调试--矩阵的乘法运算
- C语言习题——编写一个程序,生产一个乘法表