您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 理学 > 北大计算概论作业及答案
1、一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第10次落地时,共经过多少个米?第10次反弹多高?(ACM题号:3142)2、用牛顿迭代方法求一个数number的平方根,输出根以及迭代次数。本题提交ACM,题号是2868.注意:迭代的中止条件是误差=1E6(10的负6次方)输入数据只考虑整数就可以了.输出的根精确到小数点后两位3、一个最简单的计算器.用户输入:(1)两个操作数(float),(2)一个四则运算符(char),(+,-,*,/),输出:运算结果.(不需要提交到ACM,交到课程网站)注:如果输入的运算符是'/',要检查第二操作数是不是为0.如果为0,则报错.用case语句完成.4、四名专家对四款车进行评论(不需要提交到ACM,交到课程网站)A:2号车是最好的B:4号车是最好的C:3号车不是最好的(注意:不是最好的)D:B说错了事实上,只有一款赛车是最好的,且只有一名专家说对了,其他3人都说错了。请编程输出最佳车的车号,以及哪位专家说对了。思考题:验证“歌德巴赫猜想”,即任意一个大于6的偶数均可表示成两个素数之和.(题号:3143),此题可以不做,助教不需要批改。1、一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第10次落地时,共经过多少个米?第10次反弹多高?(ACM题号:3142)voidf1(){doubleh,m=0;inti;couthowheigh?;cinh;for(i=0;i10;i++){m=m+h;h=h/2;}coutm=mendl;couth=hendl;}2、用牛顿迭代方法求一个数number的平方根,输出根以及迭代次数。本题提交ACM,题号是2868.注意:迭代的中止条件是误差=1E6(10的负6次方)输入数据只考虑整数就可以了.输出的根精确到小数点后两位参考答案:voidf2(){doublex,x0,error;intnumber,count;coutPleaseenteraintegernumberendl;cinnumber;x=1.0;count=0;do{count++;x0=x;x=(x0+number/x0)/2;error=fabs(x-x0);}while(error1E-6);coutnumberendl;coutcountendl;coutsetiosflags(ios::fixed)//浮点数输出setprecision(2)xendl;//小数点后面2位}3、一个最简单的计算器.用户输入:(1)两个操作数(float),(2)一个四则运算符(char),(+,-,*,/),输出:运算结果.(不需要提交到ACM,交到课程网站)voidf4(){doublenum1,num2,result;charop;while(1){coutentertheexpress(giveetooperator--exit)endl;cinnum1opnum2;if(op==‘e')break;switch(op){case‘+':result=num1+num2;break;case‘-':result=num1-num2;break;case‘*':result=num1*num2;break;case‘/':\\除法运算要检查被0除if(num2==0){coutdividedby0\n;continue;}else{result=num1/num2;break;}default:coutoperatorisoutofrange;break;}coutTheresultisresultendl;}//while(1)}注:如果输入的运算符是'/',要检查第二操作数是不是为0.如果为0,则报错.用case语句完成.4、四名专家对四款车进行评论(不需要提交到ACM,交到课程网站)A:2号车是最好的B:4号车是最好的C:3号车不是最好的(注意:不是最好的)D:B说错了事实上,只有一款赛车是最好的,且只有一名专家说对了,其他3人都说错了。请编程输出最佳车的车号,以及哪位专家说对了。voidf4(){intA,B,C,D,best;for(best=1;best=4;best++)\\每辆车都可能最好{A=(best==2);B=(best==4);C=(best!=3);D=(best!=4);//下面的条件保证只有一个人说对了if((A&&!B&&!C&&!D)||(!A&&B&&!C&&!D)||(!A&&!B&&C&&!D)||(!A&&!B&&!C&&D)){cout最佳车车号是bestendl;if(A==1)coutA是对的endl;if(B==1)coutB是对的endl;if(C==1)coutC是对的endl;if(D==1)coutD是对的endl;}}}思考题:验证“歌德巴赫猜想”,即任意一个大于6的偶数均可表示成两个素数之和.(题号:3143),此题可以不做,助教不需要批改。voidf(){inti,n,x,y,f;cout输入一个大于6的正偶数\n;cinn;for(x=3;x=n/2;x+=2){f=1;//设立一个标志位,为1是素数,为0不是for(i=2;i=sqrt(x);i++){if(x%i==0){f=0;break;}}if(f==0)continue;y=n-x;for(i=2;i=sqrt(y);i++){if(y%i==0){f=0;break;}}if(f==1)coutn'='x'+'y;}}一、公司职员分为经理:工资代码为1,每周拿固定工资;计时工:工资代码为2,40小时之内固定小时工资,40小时之外的工资按原工资的1.5倍;佣金工:工资代码为3,250美元的基本工资加每周月销售额的5.7%;计件工:工资代码为4,每生产一件产品发固定的工资。要求:1、事先不知道员工的人数,因此由用户决定是否停止计算。2、由用户输入计算每一个员工工资时需要的数据:例如:在计算计时工的工资时,需要提问:本周工作多少小时?公司每小时付给计时工的工资是多少?//-------------------------------------------------编写程序,计算每个员工的一周的工资。二、编写一个程序,输出由A,B,C,D,E五个字符组成的全排列三、费马数公式:12Fn2n+=(其中n为非负整数)注:因为不能编辑指数形式,故解释如下:第2个2是第一个2的指数,n是第2个2的指数。编写程序,输出前n个费马数(F0...Fn),不使用指数函数,由循环实现。n由用户输入。此题提交ACM,题号2869思考题、验证极限当n-无穷大时,x/pow(a,n)-0(其中x为任意常数,a为大于1的常数)既:给定任意一个e0,(设:1E-5)总能找到一个N,当nN时,|x/pow(a,n)|e说明:x,a为双精度,N为整数。此题提交到ACM,题号3175。一、公司职员分为经理:工资代码为1,每周拿固定工资;计时工:工资代码为2,40小时之内固定小时工资,40小时之外的工资按原工资的1.5倍;佣金工:工资代码为3,250美元的基本工资加每周月销售额的5.7%;计件工:工资代码为4,每生产一件产品发固定的工资。要求:1、事先不知道员工的人数,因此由用户决定是否停止计算。2、由用户输入计算每一个员工工资时需要的数据:例如:在计算计时工的工资时,需要提问:本周工作多少小时?公司每小时付给计时工的工资是多少?//-------------------------------------------------编写程序,计算每个员工的一周的工资。voidf1(){intchoice=1;while(1){cout请输入工资代码,输入0退出:;cinchoice;if(choice==0)break;doublesalary;if(choice==1)//经理,每周拿固定工资;{cout请输入每周工资:;cinsalary;}if(choice==2)//计时工,40小时之内外有别{doublesalaryPerHour;doubletime;cout请输入每小时工资:;cinsalaryPerHour;cout请输入本周工作时间:;cintime;if(time=40)salary=time*salaryPerHour;elsesalary=((time-40)*1.5+40)*salaryPerHour;}if(choice==3)//佣金工:基本工资加每周月销售额的5.7%;{doublesale;cout请输入销售额:;cinsale;salary=250+sale*5.7/100;}if(choice==4)//计件工,每生产一件产品发固定的工资。{doublesalaryPerOne;doubleamount;cout请输入每件产品的工资:;cinsalaryPerOne;cout请输入生产产品的数量:;cinamount;salary=amount*salaryPerOne;}if(choice1||choice4)continue;cout本周工资是:salaryendl;}system(pause);//暂停}二、编写一个程序,输出由A,B,C,D,E五个字符组成的全排列voidf1(){chari,j,k,m,n;for(i='A';i='E';i++)for(j='A';j='E';j++){if(i==j)continue;for(k='A';k='E';k++){if(k==i||k==j)continue;for(m='A';m='E';m++){if(m==i||m==j||m==k)continue;for(n='A';n='E';n++){if(n==i||n==j||n==k||n==m)continue;coutijkmn;}}}}}三、费马数公式:12Fn2n+=(其中n为非负整数)注:因为不能编辑指数形式,故解释如下:第2个2是第一个2的指数,n是第2个2的指数。编写程序,输出前n个费马数(F0...Fn),不使用指数函数,由循环实现。n由用户输入。此题提交ACM,题号2869voidf3(){intn,i,j;doublenum1=1,num2=2;couthowmany?;cinn;cout3endl;//如果没有这部分,测试数据是0,则不能ACif(n0){for(i=1;i=n;i++){num1=num1*2;num2=2;for(j=1;jnum1;j++){num2*=2;}coutsetprecision(20)(num2+1)endl;}}return0;}另一种做法f3(){doublelast=3,now=last;for(inti=0;i5;i++){coutlastendl;last=(last-1)*(last-1)+1;}return0;}四、验证极限当n-无穷大时,x/pow(a,n)-0(其中x为任意常数,a为大于1的常数)既:给定任意一个e0,(设:1E-5)总能找到一个N,当nN时,|x/pow(a,n)|e说明:x,a为双精度,N为整数。此题提交到ACM,题号3175。voidf4(){intN=0;doublea,x,num;coutentertwonumberx,a(a1),endl;cinxa;num=x/a;while(fabs(num)=1e-5){num=num/a;N++;}coutN
三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:北大计算概论作业及答案
链接地址:https://www.777doc.com/doc-10661558 .html