您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > C--上---课程设计报告
1《C++语言程序设计》课程设计报告学号:班级序号:姓名:指导老师:成绩:中国地质大学(武汉)2014年12月2目录实验题目一.........................................................................................................................................3实习题目二.........................................................................................................................................4实习题目三.........................................................................................................................................5实习题目四.........................................................................................................................................7实习题目五.........................................................................................................................................8实习题目六.......................................................................................................................................10实习题目七.......................................................................................................................................12实习题目八.......................................................................................................................................14实习题目九.......................................................................................................................................17附加题一...........................................................................................................................................21附加题二...........................................................................................................................................22附加题三...........................................................................................................................................24附加题四...........................................................................................................................................25附加题五...........................................................................................................................................26总结...................................................................................................................................................283实验题目一(A组1题)输出1至100之间每位数的乘积大于每位数的和的数,例如对于数字12,有1*21+2,故不输出该数;对于27,有2*72+7,故输出该数。问题描述:输出的和数字在1到100之间,并且满足各位上的数字相乘之积大于个位上的数字相加之和。问题分析:利用for语句依次列出1到100之间的数,在for语句中取各个位上的数字用if语句选择符合条件的数字,然后输出。【算法设计】(1)设计思想:题目要求输出1至100之间每位数的乘积大于每位数的和的数,所以可以用for循环对需要输出的数进行判断、输出。其中需分别将每个数的位数之和与位数之积表示出来,并用if语句进行判断是否满足题设,并输出。(2)设计表示:【调试报告】由于一开始对每个数十位数字的表示存在问题,所以整个程序无法运行,后来在与同学进行讨论,查阅之后将方式改为(i-i%10)/10输出十位数,程序便可以顺利运行。【附录】源程序cpp.#includestdafx.h#includeiostreamusingnamespacestd;intmain(){inti;for(i=1;i=100;i++)//通过循环对1~100所有数进行判断{inta;intb;a=i%10*((i-i%10)/10);//求个位与十位之积b=i%10+((i-i%10)/10);//求个位与十位之和if(ab)//对这个数的是否满足题设进行判断将数字的十位与个位的和与乘积分别表示通过for循环对1~100的所有数进行判断并输出4couti;else;}return0;}运行结果实习题目二(A组2题)编写一个程序,求出所有的“水仙花数”。所谓水仙花数,是指一个三位数,其各位数字的立方和恰好等于该数本身。例如153=1*1*1+5*5*5+3*3*3,所以153是水仙花数。问题描述:输出的和数字为三位数,并且满足百位上数字立方家十位上数字的立方加个位上数字的立方等于该数字。问题分析:利用for语句依次列出三位数,在for语句中取各个位上的数字用if语句选择符合条件的数字,然后输出。【算法设计】(1)设计思想:利用for语句对所有的三位数进行操作,在利用if语句进行判断并输出。(2)设计表示:【调试报告】在if判断语句中将“==”错写为“=”,导致运行结果出问题。【附录】#includestdafx.h#includeiostreamusingnamespacestd;intmain(){对所有三位数进行如题操作将符合条件的三位数输出5inta,b,c,n;for(n=100;n=999;n++)//操作对象为所有的三位数{a=n/100;//取百位上的数字b=(n-100*a)/10;//取十位上的数字c=(n-100*a-10*b);//取个位上的数字if(n==a*a*a+b*b*b+c*c*c)//进行判断coutnendl;}return0;}运行结果实习题目三(A组3题)求任意n个数中的最大数和最小数:先输入一个正整数n(个数),而后再输入任意n个实数,找出这n个数中的最大数及最小数并显示出来。问题描述:提示输入数的个数,再输入要比较的实数并找出这些数字中的最大数和最小数。问题分析:依次输入这些数,利用冒泡法进行排序,输出最大与最小。【算法设计】(1)设计思想:先输入一个数组,输入数组中的数字个数并一一赋值,再通过冒泡法将数组中的数字进行从大至小或从小至大的排列,最后输出一头一尾。(2)设计表示:【调试报告】一开始不熟悉如何使用vector,也不知道需在开头加入#includevector,后来在同建立一个含有n个数字的数组用冒泡法将数组中的数重新排列按照题目要求输出最大与最小的数6学的提醒下翻阅课本发现问题所在。【附录】源程序cpp.#includestdafx.h#includeiostreamusingnamespacestd;#includevectorintmain(){intn;intm;cout请输入总的元素个数n:;cinn;vectorinta(n);for(inti=0;in;i++){cout请输入元素数值:;cina[i];}for(inth=0;hn;h++){for(intj=n-1;j0;j--){if(a[j]a[j-1]){m=a[j];a[j]=a[j-1];a[j-1]=m;}}}coutn个数中最大的是:a[0]endl;coutn个数中最小的是:a[n-1]endl;return0;}运行结果7实习题目四(B组4题)对两个有序数组进行合并:设有数组A,B,并假设两个数组的元素都有序(从大排到小),编程序,合并AB两个数组成一个C数组,并使C数组里的元素从大到小排序。intA[10]={123,88,86,86,33,157,7,0,-1,-3};intB[10]={86,69,,51,50,27,19,15,12,5,2};问题描述:对于有序数组A和B,把数组A和数组B中的数字反复在一起组成一个数组C,再对数组C中的数字进行按从大到小的顺序排序,使之成为一个有序数组。问题分析:可以运用一次for语句把两个有序数组中的数合在一起组成新的数组,再利用冒泡函数对新数组中的数字进行大小排序。【算法设计】(1)设计思想:先将A数组与B数组中的数全部放入第三个新数组C中,然后在通过冒泡法对C数组中的数进行排序,使其满足从大到小的顺序。(2)设计表示:【调试报告】由于在开始时考虑不全面,在对数组进行排列的for循环这一步掉了对整体进行循环,导致出现了如下图的状况,最后在老师的指导下发现了问题并及时更正了错误。【附录】源程序cpp.#includestdafx.h#includeiostreamusingnamespacestd;intmain(){inta[10]={123,88,86,86,33,15,7,0,-1,-3};数组A数组B数组C在数组C内运用冒泡法对数组C中的数按照题目要求进行重新排序8intb[10]={86,69,51,50,27,19,15,12,5,2};intc[20];coutc[k]:{;for(intk=0;k10;k++){c[k]=a[k];c[k+10]=b[k];}//将两个数组重新组合成一个新的数组for(inti=0;i20;i++){intx;for(intj=19;j0;j--){if(c[j]c[j-1]){x=c[j];c[j]=c[j-1];c[j-1]=x;}}}//冒泡法,将新的数组进行顺序排列for(intn=0;
本文标题:C--上---课程设计报告
链接地址:https://www.777doc.com/doc-4422101 .html