完整版《C++大学教程》第五版作业文档.docx
- 文档编号:10872128
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:24
- 大小:22.36KB
完整版《C++大学教程》第五版作业文档.docx
《完整版《C++大学教程》第五版作业文档.docx》由会员分享,可在线阅读,更多相关《完整版《C++大学教程》第五版作业文档.docx(24页珍藏版)》请在冰豆网上搜索。
完整版《C++大学教程》第五版作业文档
1.(4.16)开发一个C++程序,它利用一条while语句决定每位雇员的薪金总额。
公司规定,每位雇员在其工作的前40个小时领取“正规工作时间”工资,超过四十小时后,领取“相当于原工资一倍半的加班费”工资。
现在,给你一份公司所有雇员的工作清单,列出了每位雇员上周的工作时间和“正规工作时间”每小时的工资数。
要求编写的程序能够输入每位雇员的这些信息,并确定和显示雇员上周的薪金总额。
#include
usingnamespacestd;
intmain()
{
cout<<"Enterhoursworked(-1toend):
";
inta;
cin>>a;
while(a>-1)
{
cout<<"Enterhourlyrateoftheworker($00.00):
10.00"< cout<<"salaryis$"; if(a<=40) cout< elsecout<<(a-40)*15+400< cout<<"Enterhoursworked(-1toend): "; cin>>a; } cout< return0; } 2.(4.32)编写一个程序,在输入三个整数后,判别这三个数是否能表示一个三角形的三条边,如果能,再判断是否能表示一个直角三角形的三条边。 #include usingnamespacestd; intmain() { cout<<"请输入三个非零整数: "< doublea,b,c; cin>>a>>b>>c; if((a+b>c)&&(a+c>b)&&(b+c>a)) { cout<<"这三个值可以表示一个三角形的三条边"< if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)) cout<<"这三个值可以表示直角三角形的三条边"; elsecout<<"这三个值不可以表示直角三角形的三条边"< } elsecout<<"这三个值不可以表示一个三角形的三条边"< return0; } 3.(6.36)设计一个计算机辅助教学程序,通过计算机对话来保持学生注意力。 该程序用来帮助小学生学习乘法,利用rand函数产生两个一位正整数,学生输入答案后,程序会检查答案的正误,如果回答正确打印出相应的评语并再出另一道乘法题,如果回答错误打印出相应的评语并要求学生再做一遍原题知道做对再继续。 #include usingnamespacestd; #include usingnamespacestd; #include usingnamespacestd; intmain() { srand((int)time(0));/*产生随机数。 time的函数原型在 */ inta,b,c; a=1+rand()%9;//rand在 b=1+rand()%9; cout< cout<<"请输入你的答案: "; A: cin>>c; while(c==a*b) { intx=1+rand()%4; switch(x)//随机给出其中一个评语。 { case1: cout<<"VERYGOOD! "< break; case2: cout<<"Excellent"< break; case3: cout<<"Nicework"< break; case4: cout<<"Keepupthegoodwork! "< } srand((int)time(0));//回答正确后继续给出另一道题。 a=1+rand()%9; b=1+rand()%9; cout< cout<<"请输入你的答案: "; cin>>c; } while(c! =a*b) { inty=1+rand()%4; switch(y) { case1: cout<<"No,Pleasetryagain."< break; case2: cout<<"Wrong,tryoncemore."< break; case3: cout<<"Don'tgiveup! "< break; case4: cout<<"No,keeptrying"< } cout<<"请再次输入答案: "; gotoA;//返回到A行代码循环。 } return0; } 4.(6.29)如果一个整数其所有因子(包括1,但不包括它自己)之和等于它本身,那么这个整数就是一个完数。 编写一个函数perfect,用于确定参数number是否是一个完数,在程序中使用这个函数,该程序确定并打印出1到1000之间所有的完数。 打印每个完数的因子以证实该数确实是完数。 #include usingnamespacestd; intperfect(intnumber); intmain() { cout<<"介于到之间的所有完数: "< for(inti=2;i<=1000;i++) { if(perfect(i)) cout< } for(intm;m if(i%m==0) cout< return0; } intperfect(intnumber) { inta; a=1; for(inti=2;i<=(number/2);i++) { if(number%i==0) a+=i; } if(a! =number) return0; else return1; } 5.(4.25)编写一个程序,它能够读入一个正方形的边长,然后打印出一个有星号和空格组成的、边长为刚读入的边长的空心正方形。 //将图分为两大部分形成: 第一行和最后一行,中间(n-2行)。 #include usingnamespacestd; intmain() { A: cout<<"请输入一个正整数: "; intn; cin>>n; for(inta=1;a<=n;a++) cout<<"*";//第一行。 cout< intc=2; while(c<=(n-1))//中间行。 { cout<<"*";//中间行的第一列。 for(intb=2;b<=(n-1);b++)//中间行的中间(n-2)列。 cout<<""; cout<<"*";//中间行的最后一列。 cout< c++; } for(inta=1;a<=n;a++)//最后一行。 cout<<"*"; cout< gotoA; return0; } 6.(5.24)输入一个介于1到19之间的奇数以指定菱形的行数,然后打印出符合此尺寸的、由星形组成的菱形。 #include usingnamespacestd; #include usingnamespacestd; intmain() { intcolum=0; while(colum<1||colum>19||colum%2==0) { cout<<"请输入一个1到9之间的一个奇数"< cin>>colum; } if(colum%2==1) { for(introw=1;row<=((colum+1)/2);row++) { cout< for(intb=1;b<=(row*2-1);b++) cout<<"*"; cout< } for(introw=1;row<=(colum/2);row++) { cout< for(intb=1;b<=(colum-2*row);b++) cout<<"*"; cout< } } return0; } 7.(6.32)编写一个程序,要求输入两个整数后能计算并输出这两个整数的最大公约数和最小公倍数。 #include usingnamespacestd; intgcd(inta,intb); intscd(inta,intb); intmain() { A: cout<<"请输入两个整数: "; intm,n; cin>>m>>n; cout< "< cout< "< gotoA;//让程序能循环进行。 return0; } intgcd(inta,intb)//最大公约数。 { intc; if(a>b) { for(c=b;c>=1;c--) if(a%c==0&&b%c==0) returnc;/*当语句无cout语句而直接是return语句时直接返回第一个符合条件的值。 */ } else { for(c=a;c>=1;c--) if(a%c==0&&b%c==0) returnc; } } intscd(inta,intb)//最小公倍数。 { returna*b/gcd(a,b);//两数之积除以最大公约数既得最小公倍数。 } 8.(7.29)质数是只能被1及其本身整除的数。 Eratosthenes筛选法是一种寻找质数的方法。 它的操作如下: a)创建一个数组,将它的所有元素都初始化为1(真)。 下标为质数的数组元素将保持是1,其它元素最后都会被设置成0.在这里可以不考虑元素0和1. b)从数组下表2开始,每次找到一个值为1的数组元素时,对数组剩余部分循环,并将下标为该元素下标倍数的元素设置为0.对于数组下标2,数组2之后的下标为2倍数的元素(下标4、6、8、10等)都被设置成0;对于数组下标3,数组3之后的下标为3的倍数的元素(下标6、9、12、15等)都被设置成0;以此类推。 当这个过程完成之后,仍然为1的数组元素,表明其下标就是一个质数。 然后可以把这些下标打印出来。 编写一个程序,利用一个1000个元素的数组,判断并打印出2到999之间的质数。 忽略数组的元素0. a)#include usingnamespacestd; intmain() {inti=0; intflag; intn[1000]; for(i=0;i<1000;i++) n[i]=1; for(inti=1;i<1000;i++) { for(intj=2;j<=(i/2);j++) if(i%j==0) { flag=false; n[i]=0; break; } if(flag) { n[i]=1; cout< } flag=true; } return0; } b)#include usingnamespacestd; intmain() { cout<<"2-999之间的质数是: "< intb[1000]; for(inti=2;i<1000;i++) b[i]=1; for(inti=2;i<1000;i++) { for(intj=(i+1);j<1000;j++) { if(b[i]==1) if(j%i==0) b[j]=0;//i之后下标为i的倍数的元素都被设置为0. } if(b[i]==1) cout< } } 9.猜数字游戏代码: (第一种)#include usingnamespacestd; #include usingnamespacestd; #include usingnamespacestd; voidguessGame(); boolisCorrect(int,int); intmain() { srand((int)time(0)); guessGame(); return0; } voidguessGame() { intanswer; intguess; charresponse; do { answer=1+rand()%1000; cout<<"Ihaveanumberbetween1and1000.\n" <<"Canyouguessmynumber? \n" <<"Pleasetypeyourfirstguess."< "; cin>>guess; while(! isCorrect(guess,answer)) cin>>guess; cout<<"\nExcellent! Youguessedthenumber! \n" <<"Wouldyouliketoplayagain(yorn)? "; cin>>response; cout< } while(response=='y'); } boolisCorrect(intg,inta) { if(g==a) returntrue;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+大学教程 完整版 C+ 大学 教程 第五 作业 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)