文档库 最新最全的文档下载
当前位置:文档库 › 大整数运算·字串对象版

大整数运算·字串对象版

大整数运算·字串对象版
大整数运算·字串对象版

大整数运算·字串对象版

一·实验名称:

大整数运算·字串对象版

二·实验目的:

有一些整数,其位数可能上百位。在功能上对这些整数做加、减、乘、整除

以及取余运算。在程序组织上要求通过大整数类型的设计,来体现更好的可读性

和可维护性,并且对错误采用异常方法处理。

输入数据有若干组,每组数据由一个运算符(+、-、*、/、%)和两个整数

构成,整数的范围在-10^150~10^150之间,如果遇到运算符‘@’,则表示运算结

束。

对于每组数据,输出其运算序号和运算结果,以‘/’为例,每个结果单独成行。

1)如果结果超过200位,则输出“Too Large Number.”;

2)如果结果为空,或者前导为0,则输出“Illegal Number.”;

3)如果运算符不为上面5种,则输出“Illegal Operator.”,跳过后续的2个操作数;

4)如果除0,则输出“Divide By Zero.”。

三·实验内容与步骤:

本实验主要包括四个模块——StrInt.h MyExcept.h StrIntApp.cpp StrInt.cpp

(一)界面设计

根据实验要求,设计类strint,该类型以string串作为存储数据的主体,再加上

符号属性。同时满足能进行大整数的四则运算,应该将5种运算设计为该类的普

通友元函数。根据功能要求,大整数类型一共要进行加、减、乘、除、取余五

种操作,而大整数无法用内部数据类型来描述,所以采用string类型,然后构造

函数将其计算结果转化成大整数类型。由于考虑到类型功能的扩从,最终应能自

然地允许字串表示的大整数参与大整数对象的四则运算,所以这五种运算都要设

计成为该类型友元的普通函数。

class StrInt

{

string _sign;

string _num;

public:

friend StrInt add(const StrInt& a, const StrInt &b);

friend StrInt sub(const StrInt& a, StrInt &b);

friend StrInt mul(const StrInt& a, const StrInt &b);

friend StrInt div(const StrInt& a, const StrInt &b);

friend StrInt mod(const StrInt& a, const StrInt &b);

};

当默认创建一个对象时,为了使对象有意义,赋以0值。

StrInt(const string& a="0");

又要完成流设备对其对象进行输入输出操作。

friend istream& operator>>(istream& in,StrInt& a);

friend ostream& operator<<(ostream& out ,const StrInt& a);

位数的上限值常量BYTENUM只用于大整数类型,所以应在类型中说明。但是为了避免在实现代码中专门定义和初始化,可以使用枚举的技巧。

enum{BYTENUM=200};

(二)异常类设计

在strint实现中须判断出错,错误来自乘法超大溢出,除0以及输入非法数字表示。我们设计一个异常类。

class MyExcept

{

public:

virtual string getwhat()=0;

};

class MyDivideZero: public MyExcept{

public:

string getwhat(){return "........";}

};

class MyTooLarge: public MyExcept{

public:

string getwhat(){return "..........";}

};

class MyIllegal: public MyExcept{

public:

string getwhat(){return "..........";}

};

class MyIlleagalop: public MyExcept

{

public:

string getwhat(){return "..........";}

};

(三)应用框架设计

在应用框架设计中涉及大整数类型和异常类型的使用。所以要包括: #include"StrInt.h"

#include"MyExcept.h"

根据输入的运算符号选择运算类型:

StrInt a,b;

for(char ch;cin>>ch&&ch!='@';)

{

cin>>a>>b;

switch(ch)

{

case'-':cout<

case'+':cout<

case'*':cout<

case'/':cout<

case'%':cout<

default: throw MyIlleagalop();

}

}

并且使用catch的基类应用对象来截获各种错误: for(char ch;cin>>ch&&ch!='@';)

{

Try{

Cin>>a>>b;

Switch(){

............

}

} catch(MyExcept& e){

cout<

}

}

(四)大整数类实现设计

构造函数设计:将字串拆成符号和字符串,同时判断是否非法,判断字串是否含有前导零或为空串,是则抛出Illegal Number异常;如果数串超长,则应抛出Too Large Number异常:

StrInt::StrInt (const string& a):_num(a)

{

if(a.length()==0||a[0]=='0'&&a.length()>1) throw MyIllegal();

if(a[0]=='-'){_sign="-";_num=_num.substr(1);}

if(_num.length()>BYTENUM) throw MyTooLarge();

}

为了实现各个运算,需要在add 、sub 、mul 、div 、mod五个单元内部实现五个位操作:按位加,按位减,按位乘,按位除以及按位小于比较:static string adding(const string& a,const string& b);

static string subing(const string& a,const string& b);

static string muling(const string& a,const string& b);

static string diving(const string& a,const string & b,string& c=string());

static bool numLess(const string& a,const string& b);

函数算法的设计:输入输出流算法:由于StrInt类型是我们自己设计的一个数据类型,在main 函数中cin与cout无法识别它,所以要设计输入输出流算法,让它识别StrInt类型数据,把string字串分为sigh与num两部分,并使数据可以正常输入与输出:

istream& operator>>(istream& in, StrInt& a)

{

string s;

in>>s;

a=StrInt(s);

return in;

}

ostream& operator<<(ostream& out ,const StrInt&a)

{

return out<

}

add(a,b)算法:若a为0,则返回b。若b为0则返回a。为方便进行位

加减操作比较a,b的大小,将大的放入s,将小的放入t。若a,b同号则计算位

加,若a,b异号,则计算位减。

sub (a,b)算法:将b变一下符号,调用add算法。

mul(a,b)算法:分别处理符号和数串乘法,若a,b两者符号相同,则符号

结果为正,否则为负,若a,b两者有一位0,则返回0.然后计算位乘

muling(a._mun,b._num)。

div(a,b)算法:分别处理符号和数串除法,若a,b两者符号相同,则符号

结果为正,否则为负,若b为0,则出现异常,若数串a小于数串b,则由于是整

除,所以直接返回0。计算位除diving(a,b)。

mod(a,b)算法:分别处理符号和数串除法,若a,b两者符号相同,则结果

为正,否则为负。若b为0,则异常,若a为0或者b为1,则返回0,若数串a

小于数串b,则由于是取余,不用计算,直接返回a。计算位除diving (a._num,b._num,c),并根据所获得的c数串,产生大整数对象。

四·实验结果:

将上面的工作完成以后,建立一个工程,包涵上述文件,然后进行编译。

编译完成后,我们进行测试、调试、最终满足实验要求。

五·总结:

这是我第一次做这样大规模的实验,历时差不多一个月。刚开始的时候感觉

无从下手,我先把书好好看了两遍,开始模仿着书上的提示来做。就这样摸索着

写了两个cpp文件,两个头文件,可是放不到一起,打开一个cpp文件时,另外

三个文件就是不能同时在一个工程中打开。我很着急,找同学帮忙讲解,这才解

决了这个问题。

但是实验书上基本上的程序框架都已给出,但是加、减、乘、除以及取余的

算法没有整体给出,需要我自己写。我根据书上的思路去编写五种计算方法,慢

慢的雏形大体出来了,但是调试的时候系统会一直报错,调试的过程真是一个考

验人的过程。明明感觉对了的,就是不过。这个过程持续了四五天,终于只剩一

个错误了,但是我怎么都改不对,最后请同学帮忙调试,原来我把一个大写I小写i了。就这么一个粗心大意一直困扰着我,这让我明白了编程的严谨性,不能有一点点错误。调试好了之后,运行结果只有一个不对。但就是这一个不对,让我感觉万分沮丧。我找到相关的代码详细研究,看到底哪里错了,上网搜索原因。终于被我改对了。终于写成功了,感觉积压了很久的东西清空了。这次的实验让我提高了分析问题、解决问题的能力,我让更进一步的了解了c++。我很珍惜这次实验带给我的感悟,希望我的下一次实验可以做的比这次好。

五年级上册数学整数乘法运算定律推广到小数教案

第1单元小数乘法 第7课时整数乘法运算定律推广到小数 【教学内容】:教材P12例7及练习三第4、5题。 【教学目标】: 知识与技能:使学生知道整数乘法的运算定律对于小数乘法同样适用,能运用乘法的运算定律正确、合理、灵活地进行小数乘法的简便计算。 过程与方法:让学生相互交流、合作并体验成功的喜悦。 情感、态度与价值观:培养学生的观察能力、类推能力和灵活运用所学知识解决问题的能力。 【教学重、难点】 重点:理解整数乘法的运算定律在小数乘法中同样适用。 难点:运用运算定律进行小数乘法的简便计算。 【教学方法】:观察猜想,合作交流,验证运用。 【教学准备】:多媒体、卡片。 【教学过程】 一、谈话引入 师:同学们,你们知道有哪些运算规律适用于小数吗?这节课我们就一起来探讨整数乘法运算定律是否适用于小数。(教师板书课题) 二、探究新知 1.教学整数乘法的运算定律对于小数乘法同样适用。 师:谁来说说你们在整数乘法中学过了哪些运算定律,并用字母表示? 生:乘法交换律:a·b=b·a; 乘法结合律:(a·b)·c=a·(b·c); 乘法分配律:(a+b)·c=a·c+b·c 板书:0.7×1.2=1.2×0.7 (0.8×O.5)×0.4=0.8×(0.5×0.4) (2.4+3.6)×0.5=2.4×0.5+3.6×0.5 师:这些算式各说明了什么呢? 生1:第一行算式运用了整数乘法的交换律。 生2:第二行算式运用了整数乘法的结合律。 生3:第三行算式运用了整数乘法的分配律。 师:谁能用一句话来概括一下这些算式说明了什么? 生4:说明了整数乘法的运算定律对于小数乘法同样适用。 2.教学怎样运用乘法运算定律进行简便计算。 教师板书:0.25×4.78×4 师:请同学们认真观察,看看这道题能不能用简便方法计算,怎样算简便,并在小组里相互交流。(学生观察,思考,再小组交流,教师巡视,参与其中,共同研讨。) 让学生在班级内汇报交流。(教师随着学生的归纳板书:看、想、算。) 师:现在请同学们用刚才总结的方法来计算这道题,看怎样算简便。

Java大数

BigInteger 类 import java.math.BigInteger; import java.util.Random; //表示整数 函数: System.out.println("构造两个BigInteger对象: "); //BigInteger(int numBits, Random rnd) //构造一个随机生成的BigInteger,它是在0 到(2^numBits - 1)(包括)范围内均匀分布的值 BigInteger bi1 = new BigInteger(55,new Random()); System.out.println("bi1 = " + bi1); //BigInteger(byte[] val) //将包含BigInteger 的二进制补码表示形式的byte 数组转换为BigInteger。 BigInteger bi2 = new BigInteger(new byte[]{3,2,3}); System.out.println("bi2 = " + bi2); //加 System.out.println("bi1 + bi2 = " + bi1.add(bi2)); //减 System.out.println("bi1 - bi2 = " + bi1.subtract(bi2)); //乘 System.out.println("bi1 * bi2 = " + bi1.multiply(bi2)); //指数运算 System.out.println("bi1的2次方= " + bi1.pow(2)); //整数商 System.out.println("bi1/bi2的整数商: " + bi1.divide(bi2)); //余数 System.out.println("bi1/bi2的余数: " + bi1.remainder(bi2)); //整数商+余数 System.out.println("bi1 / bi2 = " + bi1.divideAndRemainder(bi2)[0] + "--" + bi1.divideAndRemainder(bi2)[1]); System.out.println("bi1 + bi2 = " + bi1.add(bi2)); //比较大小,也可以用max()和min() if(https://www.wendangku.net/doc/d76748187.html,pareTo(bi2) > 0) System.out.println("bd1 is greater than bd2"); else if(https://www.wendangku.net/doc/d76748187.html,pareTo(bi2) == 0) System.out.println("bd1 is equal to bd2"); else if(https://www.wendangku.net/doc/d76748187.html,pareTo(bi2) < 0) System.out.println("bd1 is lower than bd2"); //返回相反数 BigInteger bi3 = bi1.negate(); System.out.println("bi1的相反数: " + bi3); //返回绝对值 System.out.println("bi1的绝对值: " + bi3.abs());

大整数乘法--C++

大整数乘法 仅供参考 #include #include using namespace std; void MUL_max(string a,int la,string b,int lb,int **c);//相乘函数 void ADD_max(int * d,int **c,int la,int lb);//相加函数 char * ZhuanH(string); void main() { string a; string b; int **c=NULL; int *d=NULL; int la=0,lb=0; int i=0,j=0,k=0; cout<<" ************大整数乘法**************"<>a; cout<<"请输入被乘数:"; cin>>b; la=a.length(); lb=b.length(); //分配2维C数组,存储数组a和b的乘积 c=new int*[la]; for(k=0;k

d[i]=0; //初始化数组C,便于后面判断相加后的有效位数for(i=0;i

数与代数-数的运算资料

数的运算(1) 一、教学目标 1.四则运算意义的深入理解,归纳整数、小数、分数计算法则的异同点,进一步总结计算时应遵循的一般规律及四则运算中的一些特殊情况。 2. 培养运用法则熟练计算的能力和对学过的知识进行归类整理、比较异同、形成知识结构的能力。 3.探索知识间的内在联系,认识事物本质。 二、教材分析 已掌握整数、小数、分数、百分数的意义,掌握十进制计数法和整数、小数数位顺序表,能正确并熟练地读、写整数与小数,比较数的大小,能熟练地进行小数、分数与百分数的运算。 三、教学重点 整理四则运算的意义计算法则。 四、教学难点 对四则运算算理本质规律的认识和理解。 五、教学方法 新授法 六、教学准备 电脑课件 七、课时划分 一课时 八、教学流程

一个数和乘假分数或带分数的意义,是求这个数的假分数(或带分数)倍是多少。除法的意义:已知两个因数的积与其中一个因数,求另一个因数的运算。 (4)提问:说说整数、小数、分数的哪些运算的意义相同?哪些意义有扩展? 整数、小数、分数的加法意义相同,减法意义相同,除法意义相同,只有乘法意义在小数和分数中有所扩展。 (5)人能用图示的形式表示出四则运算之间的关系吗? 2.整理四则运算的法则。 (1)加法和减法的法则。 ①出示三道题,请分析错误原因并改正。308330.83 +602+6.21/2+13=1/5 910331.45 ②三条法则分别是怎样的? 整数加法的计算方法: 相同数位对齐,从个位加起,哪一位上的数相加满十,就向前一位进一。 整数减法的计算方法: 相同数位对齐,从个位减起,哪一位上的数不够减,要从前一位退1,在本位上加十再减。 小数加法的计算方法: 把小数点对齐,从末位加起,哪一位上

1.5整数乘法运算定律推广到小数乘法练习题及答案

1 推广到小数(2) 不夯实基础,难建成高楼。 1. 口算下面各题。 0.25×4=0.125×8= 0.125×0.8×4=0.2×5+0.5= 50×0.32×0.2=9.8×7+3×9.8= 2. 填上合适的数。 (1)0.125×1.3×0.8=(____×____)×____ (2)2.3×(100+2)=____×____+____×____ (3)(7.5-1.25)×0.8=____×____-____×____ (4)3.26×102=3.26×(____+____)=3.26×____+3.26×____ (5)4.3×9.8=4.3×(____-____)=4.3×____-4.3×____ (6)30.8×10.1=30.8×(____+____)=30.8×____+30.8×____ 3. 用简便方法运算。 1.25×4.8×0.08 9.54×101 2.6×4.3+5.7×2.6

0.89×2.4-0.39×2.4 3.64×0.8+6.36×0.8-3.8 4. 学校为庆祝“教师节”举行文艺演出,做了36套合唱服,64套舞蹈服。如果平均每套用布料1.8米,一共需要布料多少米? 5. 一辆汽车一天节约汽油1.25千克,照如此运算,8辆汽车一个月(按31天运算)可节约汽油多少千克? 重点难点,一网打尽。

6. 一桶油连桶共重5.6千克,用去一半油后连桶还重3.1千克,油重多少千克?桶重多少千克? 7. 大货车每小时行35千米,面包车的速度是大货车速度的1.2倍,小轿车的速度是面包车速度的1.5倍,小轿车每小时行多少千米? 8. 一根铁比刚好围成周长是0.8米的正方形,另一根铁丝刚好能围成长0.25米,宽0.15米的正方形。这两根铁丝哪根长?是围成的正方形面积大,依旧围成的长方形面积大?大多少? 举一反三,应用创新,方能一显身手!

java求n个整数的最大公约数

实验报告三JA VA程序设计基础 1.实验目的 熟练运用分支、循环等语句控制程序流程,掌握方法的声明和调用,以及字符串。掌握使用命令行参数作为输入数据的方法,找出程序错误位置和出错原因。 2.实验内容 ():书上60页,2-26求N个整数的最大公约数。 代码: Gys.java——文件名 public class Gys { public static int gys(int a,int b) { int temp; while(b!=0) { temp=a%b; a=b; b=temp; System.out.print("gys("+a+","+b+")=");——输出运算过程 } System.out.println(a);——输出最大公约数 return a; } public static void main(String[] args) { int n=5,x,y,temp; int a[]={12,60,160,64,80}; temp=a[0]; for(int i=0;i

(2)验证性实验:书上P54例2.10从标准输入流中读取一行字符串再转换成整数。 代码: Input.java——文件名 import mypackage.*; public class Input { public static String readLine()throws java.io.IOException { System.out.println("输入一行字符串,以回车换行符结束"); byte buffer[]=new byte[512]; int count=System.in.read(buffer); System.in.close(); return(count==-1)?null:new String(buffer,0,count-2); } public static void main(String args[])throws java.io.IOException { String s=readLine(); int value=MyInteger.parseInt(s); System.out.println("MyInteger.toString("+value+",2)="+MyInteger.t oString(value,2)); System.out.println("MyInteger.toString("+value+",16)="+MyInteger. toString(value,16)); } } MyInteger.java——文件名 package mypackage; public class MyInteger { public static int parseInt(String s) throws NumberFormatException { if(s==null) throw new NumberFormatException("null"); char ch=s.charAt(0);

大整数的乘法实验报告

算法设计与分析实验报告 姓名:XXX 班级:XXX 学号:XXX

一、实验名称:大整数的乘法 时间:2012年3月7日,星期三,第四节 地点:12#311 二、实验目的及要求 实现大整数相乘,需要处理很大的整数,它无法在计算机硬件能直接表示的整数范围内进行处理。若用浮点数来表示它,则只能近似的表示它的大小,计算结果中的有效数字也受到限制。如要精确地表示大整数并在计算结果中要求精确地得到所有位数上的数字,就必须用软件的方法来实现大整数的算术运算。 三、实验环境 Vc++。 四、实验内容 从键盘上输入两个大整数,实现两个大整数相乘,并输出结果。 例如:在键盘上输入两个数a,b。 a=9876543210; b=369852147; 五、算法描述及实验步骤 定义三个数组a[100],b[100],c[199]。 用数组a来存放大整数a,a[0]=9,a[1]=8,a[2]=7,a[3]=6,a[4]=5,a[5]=4,a[6]=3, a[7]=2,a[8]=1,a[9]=0; 用数组b来存放大整数b,b[0]=3,b[1]=6,b[2]=9,b[3]=8,b[4]=5,b[5]=2,b[6]=1 b[7]=4,b[8]=7。 用数组c来存放数组a和b每一位的乘积, c[0]=a[0]*b[0]; c[1]=a[1]*b[0]+a[0]*b[1]; c[2]=a[2]*b[0]+a[1]*b[1]+a[0]*b[2]; …… …… c[17]=a[9]*b[8]; 六、调试过程及实验结果 void make(int a[],int aa,int b[],int bb,int c[]){ int i,j; for(i=0;i

人教版数学六下总复习数与代数:数的运算教学设计

人教版数学六下总复习数与代数:数的运算教学设计 【教学目标】 1.通过复习使学生熟练地掌握四则运算定律和性质,能应用运算定律进行简便运算。 2.能正确地掌握四则混合运算的运算顺序,并较熟练的进行计算。 3.通过探索运算定律的应用等数学活动,让学生体验数学的作用,培养学生的应用意识。 4.经历四则混合运算的简便过程,体验迁移的学习方法。 5.在学习活动中,体验数学知识之间的内在联系,感受数学的优化思想,培养学生观察发现和应用知识的能力。 【教学重难点】 重难点: 1.整理四则运算的运算顺序和运算定律。 2.能够准确灵活地选择简便方法。 【教学过程】 一、谈话导入 同学们,请你们回忆一下,我们学习了六年,已经学习了几级运算?几种运算?还记得混合运算的运算顺序和运算定律吗? 这节课,我们就来系统的复习一下吧。 二、复习讲授 1.复习四则运算的顺序: 课件出示: 5400-2940÷28×27 教师:这是两道四则混合运算的题,说说这两道计算题的运算顺序是什么?谁能说说四则混合运算的运算顺序是什么? 根据学生的回答板书: 2.复习简便运算: 课件出示:

3.87+2.99 75.2-19.8 10.47-5.68-1.32 5.39-2.88-1.39 4.37+ +0.63+ 1.25×72 38×56+44×3894×101 提问:把简算的式题进行分类,怎么分? 学生分类后汇报,说一说为什么这么分? (1)加上或减去接近整数、整十数的运算。 3.87+2.99 75.2-19.8 =3.87+3-0.01 =75.2-20+0.2 先让学生说出简便方法,教师再总结:像这类题目简算的时候一般先加上或减去整数,多加了几就减几,多减了几就加几。 (2)根据加法交换律和结合律,使运算简便。 指名说出结合律和交换律的内容并用字母表示。 板书:a+b=b+a (a+b)+c=a+(b+c) 计算下面的题。 4.37+ +0.63+ 指名板演,其余的学生做在练习本上。教师提问这样结合的目的是什么?(凑整) (3)根据减法性质,使运算简便。让学生说出减法的性质内容并用字母表示。 板书:a-b-c=a-(b+c)a-b-c=a-c-b 学生做下面的题: 10.47-5.68-1.32 5.39-2.88-1.39 一人板演,其余的同学做在练习本上,做完后集体订正。 教师:为什么要把后面两个数加起来?(凑整,也就是必须在能凑整的情况下才能用这个性质,否则就弄巧成拙了。第二个题目交换位置也是为了凑整,所以一道题到底怎样计算简便还是要认真分析题目的特征,再选择适当的性质来计算。) (4)根据乘法的交换律、结合律、分配律使运算简便。让学生说说交换律、

大整数的四则运算高质量c语言程序

设计题目:大整数的四则运算 1. 功能简介:编写出实现大整数之间相加,相减,相乘,相除的程序,并输出计算结构。 课程设计要求:采用模块化程序设计 源程序中应有足够的注释 必须上机调试通过 注重算法运用,优化存储效率与运算效率 需提交源程序(含有注释)及相关文件(数据或数据库文件); 提交设计报告书。 2.总体结构:

数据初判断运算符 加法 正整数非正整 转变为 减法 转变为 乘法除法 转变为 退出 流程图:

3 .概要设计:

1)加法运算 利用两个整形数组分别存放两个数a和b的每一位的数值,最低位存放符号。如果a 和b同号,从最低为开始计算,如果有进位则保存在高一位,本为则减10,然后反序将计算后的各个位的数值保存在一个数组c并输出,如果a和b都是负数则在前面要输出负号,函数的返回值为c的位数。如果a和b异号,也即两个正整数相减,从最低位开始相减,如果要借位则本位加10再相减,高一位要减1,然后反序将计算后的各个位的数值保存在一个数组c并输出,在前面要输出相应的符号位。 2)减法运算 可将减法运算转化为加法运算,只要将被减数的符号改变即可。 3)乘法运算 符号存放在最低位,将其中一个数a的每一位分别乘以另一个数b的每一位,并将结果保存在数组c中,然后重复计算a的下一位跟b的每一位的乘积,把上一次计算保存在c 的值加上本次计算后的值,并保存在c自身中,直到a的最高位,最后输出符号和相应的计算结果。 4)除法运算 利用乘法和减法,将除数分别乘以1到9,直到其值大于等于被除数的对应的数,然后被除数对应的数减去其乘积,保存在一个数组中,下一次循环把它归到被除数中继续做除法运算,最后得到余数并输出。 4.函数功能: 1.void init(int a[],int b[],int *p1,int *p2) 2.功能说明:读入所要计算的数值,数据初始化 3.i nt plus(int a[],int b[],int c[],int m,int n) 4.功能说明:两个正整数相加 3. void change(int a[],int b[],int m,int n) 功能说明:当两异号数相加时,改变其符号以符合加法运算 5.i nt minus(int a[],int b[],int d[],int m,int n)

非常经典的JAVA编程题全集(50题及答案)

【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少 //这是一个菲波拉契数列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M=24; for(int i=3; i<=M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i +"个月的兔子对数: "+f2); } } } 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=101; i<200; i+=2) { boolean b = false; for(int j=2; j<=Math.sqrt(i); j++) { if(i % j == 0) { b = false; break; } else { b = true; } } if(b == true) {count ++;System.out.println(i );} } System.out.println( "素数个数是: " + count); } } 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 public class lianxi03 { public static void main(String[] args) { int b1, b2, b3; for(int m=101; m<1000; m++) {

java大整数包课程设计、各种运算

import java.util.*; public class BigNum { public static void main(String[] args){ String s,s1=null,s2=null; Scanner cin = new Scanner(System.in); char op; System.out.println("请输入第一个大整数,并按回车结束:"); if(cin.hasNext()) { s1 = cin.next(); } System.out.println("请输入要进行的运算的运算符,并按回车结束:"); s = cin.next(); op = s.charAt(0); System.out.println("请输入第二个大整数,并按回车结束:"); if(cin.hasNext()) { s2 = cin.next(); } if(op=='+') { System.out.println("最终结果为:"); System.out.println(add(s1,s2)); } if(op=='-') { System.out.println("最终结果为:"); System.out.println(jianfa(s1,s2)); } if(op=='*') { System.out.println("最终结果为:"); System.out.println(chengfa(s1,s2)); } if(op=='/') { System.out.println("最终结果为:"); System.out.println(chufa(s1,s2)); } if(op=='%') { System.out.println("最终结果为:"); System.out.println(quyu(s1,s2)); } if(op=='M') { String s3 = null;

五年级数学:整数乘法运算定律推广到小数(教学设计)

小学数学新课程标准教材 数学教案( 2019 — 2020学年度第二学期 ) 学校: 年级: 任课教师: 数学教案 / 小学数学 / 小学五年级数学教案 编订:XX文讯教育机构

整数乘法运算定律推广到小数(教学设计) 教材简介:本教材主要用途为通过学习数学的内容,让学生可以提升判断能力、分析能力、理解能力,培养学生的逻辑、直觉判断等能力,本教学设计资料适用于小学五年级数学科目, 学习后学生能得到全面的发展和提高。本内容是按照教材的内容进行的编写,可以放心修改调整或直接进行教学使用。 教学内容:第12页例8的有关内容 教学目标:1.使学生知道整数乘法的运算定律对小数乘法同样适用,会灵活运用乘法运算定律进行小数乘法的简便运算. 2.培养学生的类推能力和灵活运用所学知识解决问题的能力 教学重难点:运算定律在小数乘法中的运用 教学过程: 一、复习铺垫 1.不计算,直接把上、下两排得数相等的算式用线连起来,并且说一说这样连的理由.7×12 8×(5×4)(24+36)×5 (8×5)×4 24×5+36×5 12×7 2.在整数乘法中你学过哪些运算定律?请分别说一说什么是乘法交换律、乘法结合律和乘法分配律.

3.用简便方法计算. 25×98×4 125×72×16 98×201 (5+60)×4=5×4+60×4 4.在整数乘法里,哪些数相乘的积是整十、整百、整千? 指导学生说出5×2=10、25×2=50、25×4=100、50×4=200、50×2=100、125×4=500、125×8=1000、500×2=1000等算式. 二、导入新课 前面我们复习了整数乘法的有关运算定律,灵活运用这些定律,可以使一些整数乘法的计算简便。整数乘法里的这些运算定律,在小数乘法中适用吗?如果适用,该怎样用?用这些运算定律后能使一些小数乘法运算简便吗?这就是这节课我们要探讨的问题─数乘法运算定律推广到小数。 三、探究新课 1、请同学们计算下面各题,左边的学生计算左竖排,右边的学生计算右竖排. 0.7×1.2 1.2×0.7 0.8×0.5)×0.4 0.8×(0.5×0.4) (2.4+3.6)×0.5 2.4×0.5+ 3.6×0.5

大整数乘法c实现

#include #include void chengfa(char *a,char*b) { char c[10000]; int fuhao1,fuhao2; if(a[0] == '-' || a[0] == '+') { if(a[0] == '-') fuhao1 = -1; else fuhao1 = 1; strcpy(c,a+1); strcpy(a,c); } if(b[0] == '-' || b[0] == '+') { if(b[0] == '-') fuhao2 = -1; else fuhao2 = 1; strcpy(c,b+1); strcpy(b,c); } int i , j; for(i = 0; i< 10000;i++){ c[i] = '0'; } int lena = strlen(a); int lenb = strlen(b); for(i = lena-1;i >=0;i--){ int k = 0; for(j = lenb-1;j >=0;j--) { char l = c[i+j+1]; c[i+j+1] = (c[i+j+1]-'0'+(b[j]-'0')*(a[i]-'0')+k)%10+'0'; k = (l-'0'+(b[j]-'0') * (a[i] -'0')+k)/10; } if(k!= 0) c[i] += k; } i = 0; j = 0; while(c[i] == '0') i++; while(i <= lena+lenb-1) { a[j] = c[i]; j ++; i ++; }

数与代数一(数的认识与运算)

总复习 第1节数与代数一(数的认识与运算) 【第一课时】数与代数一(数的认识与运算) 一、教学目标 1. 以元角分和常用的长度单位为背景,进一步理解小数的意义,巩固小数的读写方法和比较大小的方法。 2. 进一步巩固整数四则混合运算(两步)的运算顺序,整十、整百、整千数乘(除以)一位数及两位数乘(除以)一位数的口算方法,两、三位数乘一位数的竖式计算方法,简单小数加减法的计算方法;能正确进行计算。 3. 在梳理本学期数的认识与运算的过程中,进一步理解和掌握相关知识,体会它们之间的内在联系,逐步养成回顾与反思的良好习惯。 二、教学重点 进一步巩固四则混合运算的算理和方法,熟练进行四则混合运算,建立知识间的联系,形成知识网络结构图。 三、教学难点 建立知识间的联系,形成网络结构图。 四、教学具准备 学生对全册书知识点的整理 五、教学过程 (一)知识归纳整理 同学们,三年级上册都学完了,今天开始我们对整本书所学的知识进行归纳整理,下面打开数学书的目录。

在进行知识整理时,可以按照教材的编排顺序分单元进行,这样每单元的知识会比较清晰。也可以按照数学知识不同领域来进行整理,这样可以建立起知识间的前后联系,形成知识网络。 1.分领域整理数的认识与数的运算 观察主题图 提问:先看看哪几个单元是涉及到数的认识与运算内容的? 这些知识之间有什么联系? 怎样安排整理的顺序? 小结:第八单元是小数的认识,第一、三、四、六、八单元有数运算。先是加减运算,然后是乘除运算,还有四则混合运算;先学习整数的运算,再学习小数的运算。 2.将单元分块知识组合成结构 (1)展示数与代数领域各单元知识图 第一单元知识点: 第三单元知识点:

Java中常见的几种运算符

Java中常见的几种运算符 第一:算术运算符:{+、-、*、/、%取余或是取模、++与--递增和递减。} 需要注意的几个地方:在进行除法运行时当两个整数相除时结果为整数,若除以一个整数除不尽时,这是就会返回整数部分,小数部分则将省略,这时就要涉及到浮点型数据了!递增和递减应注意的是:++或—写在变量前面,则该式子的值等于变量变化以前的值。2)++或—写在变量后面,则该式子的值等于变量变化以后的值。 第二:关系运算符:{==等于若两个值相等,返回一个真值、!=不等于、<小于、>大于、<=小于等于、>=大于等于}主要用于根据某个变量的值来执行特定的操作,并且返回一个布尔值,一般形式为:做操作数关系运算符右操作数! 第三:位运算符:{“&”代表与运算符两个条件都成立才算成立;“︳”代表或运算符,满足其中一个即可成立,对应的二进制位有一个为1 则为1,否则为0;“?”代表异或运算符,对应的二进制位相同为零,不相同为1}

第四:逻辑运算符:{“&&”代表与逻辑运算符两个条件都成立算成立,“︳︳”代表或逻辑运算符,满足其中一个条件即可,他们的结果都是boolean类型的ture或false} 第五:移位运算符:{“<<”代表向左移多少位;“>>”代表向又移多少位;“>>>”又移补零} 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 语法格式:需要移位的数字<<(>>)移位的次数 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2 的1 次方,左移n 位就相当于乘以2 的n 次方;右移n 位相当于除以2 的n 次方。如:b<<8相当于b*16;b>>8相当于b/16. 第六:三元运算符{语法格式:(布尔表达式)?(真值):(假植)}如果布尔表达式的条件为真那么执行的条件位真值,否则反之。【a=a+5等于a+=5】 第七:运算符的优先级: 1 () [] . 从左到右 2 ! +(正) -(负) ~ ++ -- 从右向左 3 * / % 从左向右 4 +(加) -(减) 从左向右 5 << >> >>> 从左向右

大整数计算器..

数据结构课程设计报告撰写要求 (一)纸张与页面要求 1.采用国际标准A4型打印纸或复印纸,纵向打印。 2.封页和页面按照下面模板书写(正文为:小四宋体1.5倍行距)。 3.图表及图表标题按照模板中的表示书写。 (二)课设报告书的内容应包括以下各个部分:(按照以下顺序装订) 1.封页(见课设模版) 2、学术诚信声明,所有学生必须本人签字,否则教师拒绝给予成绩。 2.任务书(学生教师均要签字,信息填写完整) 3.目录 4.正文一般应包括以下内容: (1)题目介绍和功能要求(或描述) 课程设计任务的详细描述(注意不能直接抄任务书),将内容做更详细的具体的分析与描述; (2) 系统功能模块结构图 绘制系统功能结构框图及主要模块的功能说明; (3) 使用的数据结构的描述: 数据结构设计及用法说明; (4) 涉及到的函数的描述 ; (5) 主要算法描述( 程序流程图) (6) 给出程序测试/运行的结果 设计多组数据加以描述(包括输入数据和输出结果) (7) 课程设计的总结及体会 (8) 参考文献 格式要求:[1]作者,等. 书名.出版地:出版社,出版年 5.附录:程序清单 (应带有必要的注释)

沈阳航空航天大学 课程设计报告 课程设计名称:数据结构课程设计 课程设计题目:大整数计算器 院(系):计算机学院 专业: 班级: 学号: 姓名: 指导教师 说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。

学术诚信声明 本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期:年月日

数与代数数的运算易错题精选

数与代数-数的运算-易错题精选一、直接写出得数。 2.6-0.04=1+48%= 31 2-+= 44 3 0.3=561 += 11116 ?() 0.21+0.77= ÷ 25%425%4= ?÷?1111 ++= 4545 ÷ 二、填一填。 121.4,这个数是()。 2、要使1.8+8.2里应填()。 3、两个因数的积是12.6,一个因数扩大到原来的100倍,另一个因数缩小到原来的 1 10 ,积是()。 4、一个两位数,除以8,商和余数相同,这个两位数最大是(),最小是()。 5、在含盐30%的盐水中,加入3克盐和7克水,这时盐水中盐占水的()。 6、一件衣服进价120元,按标价打八折出售,仍赚32元,则标价是()元。 7、一个生日蛋糕,切成5等份的每一块比切成8等份的每一块重60克,这个生日蛋糕重()千克。 8、一段粗细均匀的钢材,3 5 米重 1 20 吨,这种钢材平均每米重()吨,每吨长()米。 9、4 5 千米增加 1 4 千米是()千米,16千克比()千克少20%。 10、你在计算器计算“12.9×4.3”时,发现计算器的小数点键坏了,你还能用这个计算器把正确的结果算出来吗?请把你想到的方法用算式表示出来:()。 三、选择。 1、光明小学六年级平均每班52.4人,六年级可能有()个班。 A.4 B.5 C.6 D.7 2、一双凉鞋若卖140元,可赚40%,若卖120元,可赚()。 A.20% B.22% C.25% D.30% 3、 3 9.5 5 ÷()9.535 ÷?。 A.> B.< C.= D.无法比较 4、估算 81 17 911 ?的值时,下列算式最合适的是()。 A.18×1 B.18×0.1 C.17×0.2 四、能简算的要简算。 1、3131 101- 5050 ?2、 13 42+ 27 ?? ÷ ? ??

《整数乘法运算定律推广到小数乘法》教学设计

《整数乘法运算定律推广到小数乘法》教学设计 教学内容:P12课文、例8、做一做,P13—15练习二第4、5、11—14题。 教学目的: 1、使学生知道整数乘法的运算定律对于小数同样适用,并会运用乘法的运算定律进行一些小数的简便计算。 2、培养自觉进行简算的意识,提高思维的灵活性。 教学重点:运用乘法的运算定律进行小数乘法的简便运算。 教学难点:能选择合理的方法进行小数乘法的计算。 教学过程: 一、激发 1、简便计算: 25×95×425×32 4×48+6×48 102×56 44*25 独立完成,指名板演,订正时说一说各用了什么运算定律。 2、在整数乘法中我们已学过哪些运算定律?请用字母表示出来。 根据学生的回答,板书: 乘法交换律ab=ba 乘法结合律a(bc)=(ab)c 乘法分配律a(b+c)=ab+ac 3、出示教材P.9页的3组算式:下面每组算式左右两边的结果相等吗? 0.7×1.2○1.2×0.7 (0.8×0.5)×0.4○0.8×(0.5×0.4) (2.4+3.6)×0.5○2.4×0.5+3.6×0.5 每组左右两边的算式有什么关系?你发现了什么? 从而得出结论:整数乘法的交换律、结合律和分配律,对于小数乘法同样适用。 4、揭题并板书课题:整数乘法的运算定律推广到小数乘法。 二、尝试 1、出示例8第(1)题:0.25×4.78×4 2、引导学生进行思维迁移:你能仿照整数乘法中,类似的题目的简算方法来计算这道题吗?请你试着做一下,指名板演。 3、你能说出每一步各应用了哪一条运算定律吗?根据学生的回答板书: 0.25×4.78×4 =0.25×4×4.78乘法交换律 =1×4.78乘法结合律 =4.78 指出:用虚线框起来的部分可以省略。 4、尝试后练习: 50×0.13×0.2 1.25×0.7×0.80.3×2.5×0.4 生独立完成,师巡视辅导有困难的学生。指名板演,集体订正。 5、示范:例7第⑵题:0.65×201

java基本数据类型练习题

1 . 用8位无符号二进制数能表示的最大十进制数为 ( C ) A. 127 B. 128 C. 255 D. 256 2 .以下能作为char类型的字面值的有( B ) A. "e" B. 'f' C. '\u12' D. '\u0012' E. '\n' 3 . byte变量的取值范围是( B ) A. 0~65535 B. -128~127 C. -256-255 D. 0~32767 4. 以下选项中正确的有(AC ) A. int i = 32; B. float f = 45.32; C. double d=3.2; D. double d=9.21D; 5 .假定x和y为double型,则表达式x=2,y=x+3/2的值是( D ) A. 3.5 B. 3 C. 2.0 D. 3.0 6 .下列对于>>和>>>操作符描述正确的是( ) A.当左面的操作数是正数时,>>和>>>结果相同。 B. B. (-1 >> 1)的结果是0。 C. C. (-1 >>> 1) 的结果是-1。 D. 只有在右面的操作数大于等于1时, >>> 才会返回负数。 7 .有如下一段代码: 1)public class ReturnIt{ 2) returnType methodA(byte x, double y){ 3) return x/y*2; 4) } 5) } 在第2行中,方法methodA的有效返回类型returnType应该是?(D) A. int B. byte C. short D. double 8. 下列代码的执行结果是( D ) 1)public class Beirun{ 2) public static void main(String args[]){ 3) float t=9.0f; 4) int q=5; 5) System.out.println((t++)*(--q)); 6) } 7)} A. 40 B. 40.0 C. 36 D. 36.0 9.下列代码的执行结果是( D ) 1)public class Beirun{ 2) public static void main(String args[]){ 3) System.out.println(5/2); 4) } 5)} A. 2.5 B. 2.0 C. 2.50 D. 2 10. 下列代码的执行结果是( B ) 1)public class Beirun{ 2) public static void main(String args[]){

相关文档