怎樣做C語言課程設計?(二)



(續一)


    調整方案:增加函數,實現批量加法運算。
    這裏有些細節需要討論一下:
    (1)既然要做批量的加法運算,要怎麼得到數據?我懶,不想手工輸入,所以一個直接的辦法就是用隨機數rand()生成,再用srand()設置隨機數種子,我只要輸入有多少道加法就可以了。
    (2)之前已經進行了IPO的分離,所以輸入數據是要保存下來的,加法運算r=a+b涉及三個數,所以可以用一個3列MAXSIZE行的數組,這裏MAXSIZE是多少?需要討論一下,找出操作系統能夠容忍的最大的MAXSIZE,在程序中,不妨設MAXSIZE爲20。


    設計3:

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#define MAXSIZE 20

/* 輸入兩個整數,計算其和 */
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);
}

/* 隨機生成n個整數,計算其和 */
int randomNum(int low, int high)
{
    return low+rand()%(high-low+1);
}
void inputBatch(int *pn)
{
    do {
        printf("請輸入計算次數(1-%d):", MAXSIZE);
        scanf("%d", pn);
    }while(*pn<1 || *pn>MAXSIZE);
}
void processBatch(int (*pn)[3], int n)
{
    int i;
    for(i=0; i<n; ++i)
    {
        pn[i][0]=randomNum(0,100);
        pn[i][1]=randomNum(0,100);
        pn[i][2]=process(pn[i][0], pn[i][1]);
    }
}
void outputBatch(int (*pn)[3], int n)
{
    int i;
    for(i=0; i<n; ++i)
        outputData(pn[i][0], pn[i][1], pn[i][2]);
}

void showMenu()
{
    int a, b, r;
    int nums[MAXSIZE][3],n;
    int in, exitFlag=0;
    srand((unsigned)time(NULL));  /* 以當前時間做隨機數種子 */
    while(1)
    {
        system("cls");
        printf("***************************************\n");
        printf("*************** 歡迎使用 **************\n");
        printf("***************************************\n");
        printf("請選擇:\n");
        printf("    1----輸入兩個整數A和B,計算A+B\n");
        printf("    2----輸入多對整數,批量計算A+B\n");
        printf("    0----結束程序\n");
        printf("請輸入(1,2,0):");
        scanf("%d", &in);
        switch(in)
        {
        case 1:
             inputData(&a, &b);
             r=process(a,b);
             outputData(a,b,r);
             system("pause");  break;
        case 2:
             inputBatch(&n);
             processBatch(nums,n);
             outputBatch(nums,n);
             system("pause");  break;
        case 0:    exitFlag=1;  break;
        }
        if (exitFlag)
        {
        printf("***************************************\n");
        printf("********* 感謝您的使用,再見!*********\n");
        printf("***************************************\n");
        break;
        }
    }
    system("pause");
}

main()
{
    showMenu();
}

    現在應該對函數的好處有了一個直觀的理解,這裏增加了4個函數,只修改了1個函數,增加永遠比修改要容易!圓滿完成設計了......嗎?


    (未完待續)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章