怎样做C语言课程设计?
其实,这个应该是C语言课程设计所有博客的第一篇,不过写在这里也不算晚。我们在做课程设计之前,一定要回答这个问题,同时,我们也需要明确要怎么样做才是“圆满”地进行了设计。
在很多人的认知里,甚至在很多老师的认知里,“圆满”完成C语言课程设计的标准就是按照课题的要求,写出了可以运行的程序。个人觉得,这个只能算“码农”标准,算不上“设计”!
设计的真谛就是:我的程序我做主,只要不违背课题要求,或者不太违背课题要求,就可以课题要求的基础上自由发挥。设计体现的是一个人对课题的理解和对课程知识的覆盖式应用。
这样讲当然比较抽象,不妨举个例子。
问题描述:设计程序,求解两个整数相加问题。
相信如果谁拿到这个题目做课程设计,一定会乐晕吧,不要5分钟 就可以搞定。
设计1:
#include "stdio.h"
main()
{
int a, b;
printf("请输入两个整数:");
scanf("%d%d", &a, &b);
printf("%d+%d=%d\n", a,b,a+b);
}
分析:第一,输入之前有友好的提示;第二,没有特别说明,使用默认的分隔符输入数据;第三,有友好的输出。没有什么可改进的了,设计做完了!
真的做完了吗?仔细想想:
(1)C语言实现的结构化程序,是一个IPO的过程,函数实现程序功能,main()只是程序的入口;
(2)程序是“一直”运行的,不能每次做加法都运行一次程序,程序的结束应该由用户决定。
调整方案:增加函数,分离I-P-O,并提供选项菜单。
设计2:
<pre class="cpp" name="code">#include "stdio.h"
void inputData(int *pa, int *pb)
{
printf("请输入两个整数:");
scanf("%d%d", pa, pb);
}
int process(int a, int b)
{
return a+b;
}
void outputData(int a, int b, int r)
{
printf("%d+%d=%d\n", a,b,r);
}
void showMenu()
{
int a, b, r;
int in, exitFlag=0;
while(1)
{
system("cls");
printf("***************************************\n");
printf("*************** 欢迎使用 **************\n");
printf("***************************************\n");
printf("请选择:\n");
printf(" 1----输入两个整数A和B,计算A+B\n");
printf(" 0----结束程序\n");
printf("请输入(1,0):");
scanf("%d", &in);
switch(in)
{
case 1:
inputData(&a, &b);
r=process(a,b);
outputData(a,b,r);
system("pause"); break;
case 0: exitFlag=1; break;
}
if (exitFlag)
{
printf("***************************************\n");
printf("********* 感谢您的使用,再见!*********\n");
printf("***************************************\n");
break;
}
}
system("pause");
}
main()
{
showMenu();
}
现在程序暴涨了几十行,太有成就感了,现在是圆满完成了吧!
运行程序,如果要做10次加法,是不是很麻烦?
(未完待续)