西北工业大学C程序大作业范例.docx
《西北工业大学C程序大作业范例.docx》由会员分享,可在线阅读,更多相关《西北工业大学C程序大作业范例.docx(5页珍藏版)》请在冰豆网上搜索。
西北工业大学C程序大作业范例
学院
班级
学号
姓名
摘要
我选择的是数学型综合作业:
(A)绘制圆;(B)求最大数。
主要内容:
(A)在屏幕上用‘*’绘制一个圆;(B)问555555的约数中最大的三位数是多少。
基本设计思路:
(A)题目的设计思路是:
将(x,y)转换为相当圆心(r,r)的坐标。
计算到圆心的距离。
判断到圆心的距离是否为r。
如果这个点在圆上,打印'*',否则,打印''。
(B)题目的设计思路是:
根据约数的定义,对于一个整数N,除去1和它自身外,凡能整除N的数即为N的约数。
本题只要求取约数中最大的三位数,因此,最简单的方法是用100到999之间的所有数去除555555,即可求出555555的全部约数。
在(A)题目中,我选择用离圆心的距离r来判断是否打印‘*’。
在(B)题目中由于只要求输出最大三位约束,故可以使用for语句从999开始,每次递减,可以减少循环次数。
会更快且更方便的得到结果。
通过编译运行,俩个程序的结果都满足题意要求,个人感觉比较好的完成了大作业。
1摘要
1.1设计题目
(A)绘制圆;(B)求最大数。
1.2设计内容
(A)在屏幕上用‘*’绘制一个空心的圆;(B)问555555的约数中最大的三位是多少?
1.3开发工具
VisualStudio2010
1.4应用平台
Windows7 64位
2详细设计
2.1程序结构
(A)在屏幕上用‘*’绘制一个空心的圆
定义变量半径r,rx,ry。
赋值r将(x,y)转换为相当圆心(r,r)的坐标rx,ry。
计算到圆心的距离d。
判断到圆心的距离是否为r,用if语句。
是的话打印‘*’,否则‘’。
开始
rx=x–r,ry=y-r
d=sqrt(rx*rx+ry*ry)–r
if(fabs(d)<0.5)(允许有0.5的误差)
if(isAtCircle(x,y,r))
printf("*");
else
printf("");
结束
(B)求最大数
i=555555,j从999开始,通过for语句判断i%j==0,每循环一次j--;直至循环到符合条件的j,输出555555的最大三位约数。
开始
longi=555555;
intj;
for(j=999;j>=100;j--)//for循环从999开始每次递减一
if(i%j==0)//当满足此条件时停止循环,输出结果
printf("Themaxfactorwith3digitsin%ldis:
%d,\n",i,j);
结束
2.2主要功能
程序功能:
(A)在屏幕上用‘*’绘制一个空心的圆;(B)求555555的最大三位约数。
原理和方法:
将(x,y)转换为相当圆心(r,r)的坐标。
计算到圆心的距离。
判断到圆心的距离是否为r。
如果这个点在圆上,打印'*',否则,打印''。
循环语句采用for循环。
(B)题目的原理和方法:
i=555555,j从999开始,通过for语句判断i%j==0,每循环一次,j--;循环到符合条件的j,输出555555的最大三位约数。
2.3函数实现
1(A)在屏幕上用‘*’绘制一个空心的圆。
intrx=x-r;ry=y–rdouble,d=sqrt(rx*rx+ry*ry);for(y=0;y<2*(r+1);y++)for(x=0;x<2*(r+1);x++){if(d=r)printf("*”;Elseprintf("");}
(B)高次方数的尾数longi=555555;intj;for(j=999;j>=100;j--)f(i%j==0)
2.4开发日志
(A)我先分析此题用何种算法完成,确定了使用FOR循环并用if语句判断距离是否为半径,再一步步编写源代码。
调试过程有一次调用函数错误,改正后运行程序,结果正确。
(B)我直接定义i=555555,j=999,然后使用for语句开始循环,终止条件是i%j==0;此时结束循环,输出结果,结果正确。
3程序调试及运行
3.1程序运行结果
3.1程序运行结果
(A)在屏幕上用‘*’绘制一个空心的圆
(B)求555555的最大三位约数。
结果是777正确。
3.2程序使用说明
(A)打开源程序,编译,连接,然后运行即可得到用‘*’绘制一个空心的圆(B)打开源程序,编译,连接,然后运行即可得到555555的最大三位约数是777。
3.3程序开发总结
程序开发需要认真,仔细、耐心,每一步都要认真完成,不管是哪步出了问题都可能导致得不到最后的结果。
当然也要注意利用手中的设备条件,方便自己更快、更准确地找到错误并改正。
另一方,程序开发需要创新,创新的思路,创新的算法可以简化程序,也是程序编写更加快捷。
在这次大作业的完成当中,也碰到了一些不会的棘手的步骤,请教了同学后最后总算成功做出来了。
4附件(源程序)
(A)在屏幕上用‘*’绘制一个空心的圆(工程名称:
用‘*’绘制一个空心的圆)
#include
#include
intisAtCircle(intx,inty,intr)
{
intrx=x-r;
intry=y-r;
doubled=sqrt((double)(rx*rx+ry*ry))-r;
if(fabs(d)<0.5)
return1;
else
return0;
return(int)d;
}
voidprintCircle(intr)
{
intx,y;
for(y=0;y<2*(r+1);y++)
{
for(x=0;x<2*(r+1);x++)
{
if(isAtCircle(x,y,r))
printf("*");
else
printf("");
}
printf("\n");
}
}
intmain()
{
intr;
printf("请输入半径\nr=");
scanf("%d",&r);
printCircle(r);
return0;
}
(B)求最大数(问555555的最大三位约数是多少?
#include
voidmain()
{
longi=555555;
intj;
for(j=999;j>=100;j--)
if(i%j==0)
{
printf("Themaxfactorwith3digitsin%ldis:
%d,\n",i,j);
break;
}
}