资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
C语言程序设计上机报告 课题名称:水仙花数的算法 院 (系):工程学院 专业班 级: 052126 学生姓名: 喻培 学 号: 20121004040 指导教师: 熊慕舟 2013年11月24日C语言上机报告之水仙花数1、 上机目的:1.了解c语言和程序设计 2.学习怎样实现算法,怎样实现水仙花数的输出2、 上机作业:判断是否是水仙花数。 水仙花数是指一个n位数(n=3),它的每个位上数字n次幂之和等于它本身。 要求: 用scanf输入的数字为任意位数字 要求进行错误检查 判断该数是否为水仙花数 对判断结果进行输出3、 程序设计1、NS流程图:输入n0sum,1i,0c,nh,hjn/10不小于1 是 否n/10n,i+1i跳出循环 直到n/10不小于1c=isum=j 是 否输出n“是水仙花数”输出n“不是水仙花数”2、算法: 首先将0赋值给sum,1赋值给i,0赋值给c,n赋值给h,h赋值给j,再输入任意一位数n,对它取10的商,用该商与1比较。若不小于1,则将该商赋值给n,i+1赋值给i,再进行判断,重复以上步骤,直到n/10不小于1,跳出循环体,记住此时i的值,执行下一步。判断c是否小于i。若是,则将h取10的余数赋值给b,h除以10的商赋值给h,sum+b的i次幂赋值给sum,c+1赋值给c,再进行判断,重复以上步骤,直到c不小于i,跳出循环体,执行下一步。最后判断sum=i,若是,则输出n“是水仙花数”;若不是,则输出n“不是水仙花数”。3、程序代码: # include /预处理指令# include /定义一个函数int main() /函数首部int n,b,h,j; /定义变量 sum=0; /对变量sum赋值 c=0; /对变量c赋值 i=1; /对变量i赋值printf(please enter a number,n=?); /输出语句scanf(%d,&n); /输入任意数nh=n; /对变量h赋值while(n/10=1) /循环结构的开始n=n/10; /对变量n赋值i=i+1; /对变量i赋值 /第一层循环结 束j=h; /对变量j赋值while(ci) /第二层循环的 开始 b=h%10; /对变量b赋值h=h/10; /对变量h赋值 sum=sum+(int)pow(b,i); /对变量sum赋 值c=c+1; /对变量c赋值 /第二层循环结 束if(sum=j) /判断语句开始printf(是水仙花数n); /判断正确,输 出n“是水仙花数” Else /否则,表转折 printf(不是水仙花数n); /输出n“不是 水仙花数”return 0; /程序结束 4、程序分析: (1)、用scanf函数输入时,后面应该是变量地址,如“&n”。 (2)、该程序用了两个while的循环语句,应当注意语句当中变量的赋值问题,进过一个循环体之后,该变量便不是原来的值了。如果想继续使用的话,就必须在执行循环体之前就把该值赋值给另一个变量。否则,程序很容易出错。 (3)、该程序单调的使用了两个while的循环语句,其实可以更简单一点,用一个循环语句,再在其中套用一个for领导的循环语句。这样程序更简单。 (4)对于pow的幂指函数型,我们还没有接触到就使用了,本可以运用所学的知识来表示b的i次幂,一个循环语句即可。 5、运行过程 : 运行结果: 6、上机体会: 对于刚接触c语言的我来说,这次的水仙花数程序难度有点大。我连c语言的程序结构都没有弄清楚,就坐在电脑前瞎翻书,但还是有点效果的。这次上机,虽然大部分时间都是在看书,但也知道了些东西。水仙花数的算法不难写出来,但程序代码就难写了。可以说,这次上机,使我对c语言有了更加理性的认识。 因为我一开始对c语言什么感觉都没有,所就没想过能一次写出完整的程序代码。我是分了两次来完成的:第一次程序是找出输入的任意数的位数;第二次程序是计算出已知位数的任意数的水仙花数算法。两次都成功后,再合并起来就是完整的水仙花数程序代码了。两个程序分开来都挺成功的,但是加在一起就出问题了。153是个水仙花数,两个程序分别输出的是3和153.但合起来后输出的却是1。结果如下:我就纳闷了,看了半天也不知道为什么,最后还是解决了。原来经过都一次循环体之后,n的值变了。但在第二次循环体里,我是以原来n的值为前提运行的,所以运行结果出错了。这也是我以后要多多注意的地方。 7、上机总结: 总的来说,这次上机,收获还是不小的。起码c语言不像天书了,了解到了c语言的基础知识,基本的框架结构,现在不看书也能写出一些基本的程序。但不足的是,我用了两次while,过于单调和复杂,但是我尝试过套用for语句,老是运行出错,不会使用for语句。希望下次上机,能有更多的收获。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号