《C语言课程设计输出水仙花数》
C语言程序设计课程设计
评语:
考勤(10)纪律(10)过程(40)设计报告(30)答辩(10)总成绩(100)
专 业:
班 级:
姓 名:
学 号:
指导教师:
兰州交通大学自动化与电气工程学院
2013年07月19日1 引言
1.1 设计目的
通过该课程设计来深化对《C程序设计》的学习,深入了解结构循环体,数组,指针以及动态分布内存等技术,熟练掌握对C程序的调试,培养自身的编程习惯,初步掌握程序设计的算法,熟练Word的用法。进一步培养学生结构化程序设计的思想。
1.2 设计要求
⑴ 问题分析及解决方案框架确定:充分地分析和理解问题本身,弄清要求做什么。在确定解决方案框架过程中,综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系。
详细设计和编码:确定算法的主要流程,在此基础上进行代码设计。
上机前程序静态检查:上机前对程序进行静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。
上机调试程序:在运行环境中执行编写好的程序代码,以便进一步检查程序设计中出现的错误。
1.3 设计方法拟出设计思路表示出每个函数或过程的作用画出流程图写出源程序运行程序
2 2.1 题目要求
打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为:153=13+53+33 。
2.2本题利用一个for循环语句,求出100到1000以内的三位数,再用if语句找出符合各个位数的立方和等于该数本身的书,即输出水仙花数2.3 画出流程
2.4 编写源程序
#include //主函数
int main() //定义主函数
{ //主函数体开始
int g,s,b,i; //定义g,s,b,i为整型变量
for(i=100;i<1000;i++) //控制循环次数,共循环999次
{ b=i/100; //表示百位数字
s=i/10-b*10; //表示十位数字
g=i-b*100-s*10; //表示个位数字
if(i==b*b*b+s*s*s+g*g*g) //判断各个数位数字的立方和为该数本身
printf("水仙花数是:%-6d",i); //执行循环体,输出水仙花数
}
printf("\n"); //换行
return 0; //返回函数值为0
} //主函数结束画出流程图
2.2所示。
图2.2基础题的运行结果
3 改错
3.1 改错题目
下列给定的程序中,函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
源程序
#include
#include
void fun(int a, int *b, int *c)
{ int i,j,d,y;
for (i=3;i<=a/2;i=i+2)
{
y=0;
for (j=2;j<=sqrt((double)i );j++)
if (i%j==0) y=0;
if (y==1)
{
d=i-a;
for (j=2;j<=sqrt((double)d );j++)
if (d%j==0) y=0;
if (y==1)
{*b=i; *c=d;}
}
}
}
void main()