怎样做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个函数,增加永远比修改要容易!圆满完成设计了......吗?


    (未完待续)


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值