1、西北工业大学C程序大作业范例学 院班 级学 号姓 名摘要我选择的是数学型综合作业: (A)绘制圆;(B)求最大数。 主要内容: (A)在屏幕上用*绘制一个圆; (B)问555555的约数中最大的三位数是多少。 基本设计思路: (A)题目的设计思路是:将(x, y)转换为相当圆心(r, r)的坐标。计算到圆心的距离。判断到圆心的距离是否为r。如果这个点在圆上,打印*,否则,打印 。(B)题目的设计思路是:根据约数的定义,对于一个整数N,除去1和它自身外,凡能整除N的数即 为N的约数。本题只要求取约数中最大的三位数,因此,最简单的方法是用100到999之间的所有数去除555555,即可求 出555
2、555的全部约数。在(A)题目中,我选择用离圆心的距离r来判断是否打印*。在(B)题目中由于只要求输出最大三位约束,故可以使用for语句从999开始,每次递减,可以减少循环次数。会更快且更方便的得到结果。通过编译运行,俩个程序的结果都满足题意要求,个人感觉比较好的完成了大作业。1 摘要1.1 设计题目()绘制圆;(B)求最大数。1.2 设计内容()在屏幕上用*绘制一个空心的圆;()问555555的约数中最大的三位是多少? 1.3 开发工具Visual Studio 20101.4 应用平台Windows 64位2 详细设计2.1 程序结构(A)在屏幕上用*绘制一个空心的圆定义变量 半径r,rx
3、,ry。赋值r将(x, y)转换为相当圆心(r, r)的坐标rx,ry。计算到圆心的距离d。判断到圆心的距离是否为r,用if语句。是的话打印*,否则 。开始rx = x r,ry = y - rd = sqrt(rx*rx + ry*ry) rif(fabs(d) =100;j-) /for循环从999开始每次递减一if(i%j=0) /当满足此条件时停止循环,输出结果printf(The max factor with 3 digits in %ld is:%d,n,i,j);结束2.2 主要功能程序功能: (A)在屏幕上用*绘制一个空心的圆; (B)求555555的最大三位约数。原理和方法
4、:将(x, y)转换为相当圆心(r, r)的坐标。计算到圆心的距离。判断到圆心的距离是否为r。如果这个点在圆上,打印*,否则,打印 。循环语句采用 for 循环。 (B)题目的原理和方法:i=555555,j从999开始,通过for语句判断i%j=0,每循环一次,j-;循环到符合条件的j,输出555555的最大三位约数。2.3 函数实现1(A)在屏幕上用*绘制一个空心的圆。int rx = x - r; ry = y rdouble, d = sqrt(rx*rx + ry*ry) ;for (y=0; y2*(r+1); y+) for (x=0; x=100;j-) f(i%j=0)2.4
5、 开发日志(A)我先分析此题用何种算法完成,确定了使用 FOR 循环并用if语句判断距离是否为半径,再一步步编写源代码。调试过程有一次调用函数错误,改正后运行程序,结果正确。 (B)我直接定义i=555555,j=999,然后使用for语句开始循环,终止条件是i%j=0;此时结束循环,输出结果,结果正确。3 程序调试及运行3.1 程序运行结果3.1 程序运行结果(A)在屏幕上用*绘制一个空心的圆()求的最大三位约数。结果是正确。3.2 程序使用说明(A)打开源程序,编译,连接,然后运行即可得到用*绘制一个空心的圆(B)打开源程序,编译,连接,然后运行即可得到的最大三位约数是777。3.3 程序
6、开发总结程序开发需要认真,仔细、耐心,每一步都要认真完成,不管是哪步出了问题都可能导致得不到最后的结果。当然也要注意利用手中的设备条件,方便自己更快、更准确地找到错误并改正。另一方,程序开发需要创新,创新的思路,创新的算法可以简化程序,也是程序编写更加快捷。在这次大作业的完成当中,也碰到了一些不会的棘手的步骤,请教了同学后最后总算成功做出来了。4 附件(源程序)(A)在屏幕上用*绘制一个空心的圆(工程名称:用*绘制一个空心的圆)#include #include int isAtCircle(int x, int y, int r) int rx=x-r; int ry=y-r; double
7、 d=sqrt(double)(rx*rx+ry*ry)-r; if(fabs(d)0.5) return 1; else return 0; return (int)d;void printCircle(int r) int x, y; for (y=0;y2*(r+1);y+) for (x=0;x2*(r+1);x+) if (isAtCircle(x,y,r) printf(* ); else printf( ); printf(n); int main() int r; printf(请输入半径nr = ); scanf(%d, &r); printCircle(r); return 0;(B)求最大数(问555555的最大三位约数是多少?#include void main()long i=555555;int j;for(j=999;j=100;j-)if(i%j=0)printf(The max factor with 3 digits in %ld is:%d,n,i,j);break;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1