怎樣做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次加法,是不是很麻煩?
(未完待續)