首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明及C++程序代码,将应填入(n)处的语句写在对应栏内。 【说明】 本程序的功能是实现任意两个大整数的乘法运算,例如: 输入整数1:8934793850094505800243958034985058 输入整数2:234
阅读以下说明及C++程序代码,将应填入(n)处的语句写在对应栏内。 【说明】 本程序的功能是实现任意两个大整数的乘法运算,例如: 输入整数1:8934793850094505800243958034985058 输入整数2:234
admin
2010-01-15
32
问题
阅读以下说明及C++程序代码,将应填入(n)处的语句写在对应栏内。
【说明】
本程序的功能是实现任意两个大整数的乘法运算,例如:
输入整数1:8934793850094505800243958034985058
输入整数2:234584950989689084095803583095820923
二者之积:
209596817742739508050978890737675662366433464256830959194834854876 8534
【C++代码】
#include<iostream.h>
const int MAXINPUTBIT=100;
const int MAXRESULTBIT=500;
class LargeNumber{
int i,j;
int temp;
int one[MAXINPUTBIT+1];
int onebit; //one的位数
int two[MAXINPUTBIT+1];
int twobit; //two的位数
int result[MAXRESULTBIT+1];
public:
LargeNumber();
~LargeNumber();
int inputone(); //出错返叫0,否则返回1
int inputtwo(); //同上
void multiplication(); //乘
void clearresult(); //清零
void showresult(); //显示
};
LargeNumber∷LargeNumber()
{
for(i=0;i<=MAXINPUTBIT;i++)
{
one
=0;
two
=0;
}
onebit=0;
twobit=0;
inputone();
inputtwo();
}
LargeNumber∷~LargeNumber()
{
}
int LargeNumber∷inputone()
{
char Number[MAXINPUTBIT+1];
cout<<"Please enter one:";
cin>>Number;
i=0;
j=MAXINPUTBIT;
while(Number
!=’\0’)
i++;
onebit=i;
for(i--;i>=0;i--,j--)
{
if(int(Number
)>=48&&int(Number
)<=57)
(1); //由字符转换为数字
else
return 0;
}
return 1;
}
int LargeNumber∷inputtwo()
{
char Number[MAXINPUTBIT+1];
cout<<"Please enter two:";
cin>>Number;
i=0;
j=MAXINPUTBIT;
while(Number
!=’\0’)
i++;
twobit=i;
for(i--;i>=0;i--,j--)
{
if(int(Number
)>=48&&int(Number
)<=57)
two[j]=int(Number
-48); //由字符转换为数字
else
return 0;
}
return 1;
}
void LargeNumber∷multiplication() //乘法
{
clearresult();
int m;
for(i=MAXINPUTBIT;i>=0;i--)
{
temp=two
;
for(j=(2),m=MAXINPUTBIT;m>=0;m--,j--)
{
result[j]+=temp*one[m];
if(result[j]>9)
{
result[j-1]+=result[j]/10;
(3);
}
}
}
cout<<"one*two=";
showresult();
}
void LargeNumber∷showresult()
{
i=0;
while(result
==0&&i<=MAXRESULTBIT)
i++;
if(i>MAXRESULTBIT)
cout<<"0"; //输出0
for(;i<=MAXRESULTBIT;i++)
cout<<(4);
cout<<endl;
}
void LargeNumber∷clearresult()
{
for(i=0;i<=MAXRESULTBIT;i++)
(5);
}
void main()
{
LargeNumber a;
a.multiplication();
}
选项
答案
(1)one[j]=int(Number[i]-48) (2)MAXRESULTBIT-(MAXINPUTBIT-i) (3)result[j]%=10 (4)result[i] (5)result[i]=0
解析
本题考查用C++实现大整数的乘法运算。
题目要求程序能实现从键盘任意输入的两个大整数的乘法运算。在程序中定义了一个大整数类,在类中抽象了大整数的一些属性,如长度等,还声明了一些操作,有对大整数输入的操作和对大整数求乘积的操作等。下面来具体[分析]程序。
第(1)空在第一个大整数的输入函数中,根据此空后面的注释我们知道,其功能是把字符转换为数字。在这里需要注意的是,从键盘输入的是字符型的一串字符,此空所在的条件判断语句是用来把这串字符中的数字找出来,接下来就是此空,要求把字符型的数字转换为整型的数字,而字符型数字与整型数字之间的ASCⅡ码值相差48。从第二个大整数的输入函数中,我们也可以很容易知道此空答案为one[j]=int(Number
-48)。
第(2)空在对大整数求乘积的函数中,是一个循环的初始条件,从程序中不难看出,这个二重循环是用来实现对两个大整数求乘积的,而变量j是用来存放计算结果数组的当前下标的,根据乘法的规则,不难得出此空答案为MAXRESULTBIT-(MAXINPUTBIT-i)。
第(3)空也在求积的二重循环中,它是在语句if(result[j]>9)为真的情况下执行的语句,如果这个条件为真,说明当前需要进位,但到底是进几位,进位后余下的数又应该是多少呢?这就是这个条件判断语句下要完成的任务,从程序中不难看出,对于到底进几位这个问题已经解决,剩下的就是对进位后余数的处理,此空的任务就是求出进位后的余数并存放到数组的当前位置。所以,此空答案为result[j]%=10。
第(4)空在输出计算结果的函数中,从程序中可以看出,此空在_个循环中,循环的作用是输出计算结果,而计算结果存放在数组中,因此,这个循环是用来输出数组中的所有元素。因此,此空答案为result
。
第(5)空是在清除计算结果的函数中,函数中只有一个循环,此空就在循环下面,计算结果存放在数组中,要清除计算结果就是把数组清零,那么此空的任务是把数组中的每个元素变成零,因此,此空答案为result
=0。
转载请注明原文地址:https://kaotiyun.com/show/mBjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在Word2010文档中,某个段落最后一行只有一个字符,()不能把该字符合并到上一行。
将四个元素a,b,c,d分成非空的两组,不计组内顺序和组间顺序,共有()种分组方法。
在Excel工作表中,已输入的数据如下所示:按回车键后,B2单元格显示的值为()。
抽样调查是收集数据的重要方法之一。抽样调查所遵循的原则不包括______。
某班级有40名学生,本次数学考试大多在80分上下。老师为了快速统计平均分,对每个学生的分数按80分为基准,记录其相对分(多出的分值用正数表示,减少的分值用负数表示,恰巧等于80分时用0表示),再统计出各种相对分的人数,如下表:根据上表可推算出,这次考试
下列关于输入声音时的采样频率和信息储存量的叙述中,正确的是(8)。
在Excel2007中,设A1单元格中的值为80,若在A2单元格中输入公式“=.A1
假设在Access中已经建立了“学生”表,表中包括“学号”、“姓名”、“性别”和“班级”等字段,如果要统计出每个班级的人数,那么在查询设计视图的“班级”的“总计”行和“学号”的“总计”行中应分别选择(65)。
在Word2007中,若用户需要将一篇文章中的字符串“Internet”全部替换为字符串“因特网”,则可以在编辑菜单中选择()命令。
为了测量航天员每分钟的心跳次数,甲建议测量2分钟的心跳次数再除以2,乙建议测量10秒钟的心跳次数再乘以6,两者相比______。
随机试题
决定肺部气体交换方向的主要因素是
下列描述中,不符合继发性肺结核病的是
护士准备为患者进行造瘘伤口更换敷料和静脉穿刺。关于该操作的洗手的叙述,错误的是
男性,47岁,农民。在田间喷洒农药3小时,昏倒在地,被家人急送医院。查体:BP90/60mmHg,HR24次/分,昏迷,角膜反射消失,瞳孔如针尖大小,两肺满布湿啰音。在用药过程中病人病情好转,意识转清醒,但突然患者出现烦躁不安、谵妄、瞳孔扩大,病人
A.医源性传播B.垂直传播C.食物传播D.接触传播E.飞沫传播肠道传染病发生,通常是经
企业应当按照《出口打火机、点火枪类商品生产企业登记证》和有关法律法规的规定进行出口打火机、点火枪类商品的生产、包装、储存。
设有下面的定义:structst{inta;floatb;}d;int*p;要使P指向结构变量d中的a成员,正确的赋值语句是()。
有如下程序:#includeusingnamespacestd;voidfun(int&a,______________){intc;c=a;a=b;b=c;}
CurrentlymyfavoritecoursethatIamtakingiseconomics.Ilikethiscourseforthefollowingreasons.Thecourseteachesme
—Hello!CanIspeaktoAlice,please?—Sorry.Sheisn’tinatthemoment.—______?Pleasetellhertocallmebackonmymobile
最新回复
(
0
)