习题课-216952.pdf
《习题课-216952.pdf》由会员分享,可在线阅读,更多相关《习题课-216952.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 1/15 习题课 22010-11-19 程序测试 2-2 编写一个加密程序。输入一个 6 位整数的明码,按以下方法加密:首先将每位数字替换成它与 7 相加之和再用 10 求模的结果;然后逆置;输出密码。再编写程序,把这个密码还原成明码。若输入错误,则显示错误信息后退出程序。/软件 2xx-xxxx 程序#include usingnamespacestd;intencipher(intt)/函数一:xxinti,m,a,b;for(i=0,a=1000,b=0;i6;i+)m=(t%10+7)%10;b=m*a+b;a=a/10;t=t/10;returnb;intexemption(in
2、tx)/函数二:xxinti,n,a,b;for(i=0,a=1000,b=0;i6;i+)if(x%107)n=x%10+10-7;elsen=(x%10-7);b=a*n+b;a=a/10;x=x/10;returnb;intmain()/主函数inta,b,c;2/15 couta;if(a999)couterrorendl;cin.get();return0;b=encipher(a);c=exemption(b);cout密码是:bendl;cout明码是:c=0;i-)b+=(int)(a/pow(10,i)+7)%10)*(int)pow(10,(5-i);(2)在循环结束后输出
3、效率更高 for(i=6;i=1;i-)c=c*10;b=(a%10)+7)%10;c=c+b;a=a/10;/coutb;/不要在循环体内输出coutc;/改为在循环结束后输出效率更高 3/15 coutendl;(3)输入明码“000”0 一类的,但是在我的程序中没有办法对这种数字比较大小进行判断。(4)输入明码“333”,密码会出现 0,而不是 000,或者是输入明码 7733,会输出 44,而不是 0044,为了在不同情况下补齐到六位又该怎样设计比较好?程序测试 3-1 1、编写一个程序,测试 3 个函数,它们都能够把 main 函数中的变量 count的值增至 3 倍。这 3 个函数
4、说明如下:(a)tripleByValue 函数通过值传递 count 的一份副本,把值增至 3 倍并返回这一结果。(b)tripleByReference 函数通过引用参数传递 count,用别名(即引用参数)把 count 原来的值增至 3 倍。(c)tripleByPointer 函数通过指针参数传递 count 的地址,用间址方式把count 原来的值增至 3 倍。#include usingnamespacestd;doubletripleByValue(doublex)returnx*3;/传值参数不能修改实参的值doubletripleByReference(double&x)x
5、=x*3;/指针参数通过间址修改实参的值 returnx;doubletripleByPointer(double*x)*x=*x*3;/引用参数通过别名修改实参的值 return*x;intmain()4/15 doublecount;coutcount;count=tripleByValue(count);/通过函数返回值修改 count 的值 couttripleByValue:countendl;coutcount;tripleByReference(count);/也可以count=tripleByReference(count)couttripleByReference:count
6、endl;coutcount;tripleByPointer(&count);/也可以count=tripleByPointer(&count)couttripleByPointer:countendl;问题:(1)求值函数应该用 return 返回计算结果值,不应在函数内输出求值结果 voidtripleByValue(doublex)x=x*3;5/15 coutxendl;voidtripleByReference(double&x)x=x*3;coutxendl;voidtripleByPointer(double*x)*x=*x*3;cout*x;(2)引用参数和指针参数的应用。引用
7、参数和指针参数都可以通过形参读/写实参。2、已知勒让 xx 多项式为 1p n(x)x(2n1)p(x)(n1)p(x)/n n1n2 n0 n1 n1 编一程序,定义递归函数求 double poly(double&x,int n);pn(x)的值。主函数从键盘上输入 x 和 n 的值,调用 poly 函数测试。/计科()-xx#include usingnamespacestd;doublepoly(double&,int);intmain()intn;doublex,p;6/15 cout=0)t;cinn;cout0)t;cinx;p=poly(x,n);coutp1)return(2
8、*n-1)*poly(x,(n-1)-(n-1)*poly(x,(n-2)/n;/如果条件都不成立怎么办?(3)表达式计算:return(2*n-1)*poly(x,n-1)-(n-1)*poly(x,n-2)/n);return(2*n-1)*poly(x,n-1)-(n-1)*poly(x,n-2)/n;if(n=0)return0;7/15 指出以下程序中的错误:doublepoly(double&x,intn)if(n=0)return0;elseif(n=1)returnx;else return(2*n-1)*poly(double&x,int(n-1)-(n-1)*poly(do
9、uble&x,int(n-2)/n);1“=”与“=”2return 13 形参与实参的形式函数原型 函数调用 4 表达式书写 doublepoly(double&x,intn);poly(double&x,int(n-1)程序测试 4-1 本程序的 main 函数调用 RandAry 函数,生成 20 个 120 之间的随机数;调用 OutAll 函数显示生成的随机数序列;调用 OutUnlike 函数,删除生成序列中的重复数值,仅显示序列中的不同数值。显示数据不改变原来的相对顺序。#include#include#include usingnamespacestd;voidRandAry(
10、intary,intn,intmin,intmax);/生成随机数序列 voidOutAll(intary,intn);/输出数组全部元素 voidOutUnlike(intary,intn);/输出数组中不相同元素 intmain()constintN=20;8/15 intaryN;cout生成 20 个 120 之间的整数:n;RandAry(ary,N,1,20);/生成 N 个 120 之间的随机整数放在数组 ary 中OutAll(ary,N);/输出数组全部原始数据 cout输出不相同数据序列:n;OutUnlike(ary,N);/输出不相同的数据,不改变原来的相对顺序/生成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 216952
限制150内