您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 理学 > 北大计算概论作业7及答案
20071116一、编写一个训练小学生练习九九表的程序。(练习使用随机函数)说明:产生两个小于10的正整数,让学生回答乘积是多少,判断对错。最小要求:如果回答正确,鼓励,回答不正确,则告知正确结果。自行发挥:一道题允许学生多回答几次,然后再给出正确结果。出题的数目也可以用循环控制,如果能正确做出五道题,则结束训练,否则,继续出题。//最小要求voidmultiple()//九九乘法运算测试{inta,b,answer;srand(time(0));a=rand()%9+1;b=rand()%9+1;couta*b=?;cinanswer;if(answer==a*b){cout正确!endl;}else{cout错了“正确结果是”a*bendl;}}//一次可多做几题的情况voidmultiple()//九九乘法运算测试{inta,b,answer;charch;do{srand(time(0));a=rand()%9+1;b=rand()%9+1;couta*b=?;cinanswer;if(answer==a*b){cout正确!endl;}else{cout错了“正确结果是”a*bendl;}cout“continue?(yorn)“endl;cinch;if(ch==‘n’)break;}while(1)}//记录正确率的情况voidmultiple()//九九乘法运算测试{inta,b,answer,total=0,correct=0;charch;do{total++;srand(time(0));a=rand()%9+1;b=rand()%9+1;couta*b=?;cinanswer;if(answer==a*b){cout正确!endl;correct++;}else{cout错了“正确结果是”a*bendl;}cout“continue?(yorn)“endl;cinch;if(ch==‘n’)break;}while(1)cout“正确率是”correct*1.0/total*100“%”endl;}如果一道题可多次回答:voidmultiple()//九九乘法运算测试{inta,b,answer,total=0,correct=0,i;charch;do{total++;srand(time(0));a=rand()%9+1;b=rand()%9+1;for(i=0;i5i++){couta*b=?;cinanswer;if(answer==a*b){cout正确!endl;correct++;break;}else{cout错了再回答一次;}}if(i5){cout“正确结果是”a*bendl;}cout“continue?(yorn)“endl;cinch;if(ch==‘n’)break;}while(1)cout“正确率是”correct*1.0/total*100“%”endl;}二、使用1角,2角,5角硬币组成一元钱。要求输出:每种方法输出一行,每位数字占5位,要求用递归的方法完成。---------------------------------------------------------------------------------intc[4]={0,1,2,5};//第1、2、3种硬币的面值分别是1角、2角、5角intp[4]={0};//每种面值硬币的个数初始定为0个voidf(int,int);//声明函数voidname2(){cout用以下枚数的1角,2角,5角硬币可以组成1元钱:endl;f(3,10);//调用函数return;}voidf(intk,intn)//计算由前k种硬币组成n角钱的所有方法{if(k==0){if(n==0)coutsetw(5)p[1]setw(5)p[2]setw(5)p[3]endl;//结果输出,每个数字占5位return;}for(inti=0;i=int(n/c[k]);i++)//枚举第k种硬币的个数{p[k]=i;f(k-1,n-i*c[k]);//递归调用函数}}-----------------------------------------------------------------------------------------------------------------intcoin[3],num=0;voidtrycoin(intn){inti;if(n==3){if((coin[0]+2*coin[1]+5*coin[2])==10){num++;coutsetw(4)num;for(i=0;i3;i++)coutsetw(4)coin[i];coutendl;}}else{for(i=0;i=10;i++){coin[v]=i;trycoin(v+1);}}}二、用反复加法实现乘法,写出递归函数,例如:A*B=A+A+A。。。+A(共B次)intmystery(inta,intb){if(b==1)returna;elsereturn(a+mystery(a,b-1));}四、ACM:2944,鼓励使用各种可以用的上的符串函数,见教材附录,有相应的函数表。
本文标题:北大计算概论作业7及答案
链接地址:https://www.777doc.com/doc-10661557 .html