程序设计与问题求解 实验四 模块化程序设计

目录

引言

  一.实验目的:

二、实验内容和步骤:

三、实验小结


引言

我想把大学期间写的材料挑选一些发上来保存一下,这是本人大学期间做的一次实验作业。

  一.实验目的:

  1. 掌握函数的定义和调用方法;
  2. 掌握通过参数在函数(模块)间传递数据的方法。

二、实验内容和步骤:

1.改正下列程序错误,使之完成规定的功能

输入两个数,输出其中较大的数,错误代码如下:

int  max(int a, b);

{

  if(a>b)

     max=a;

   else

     max=b;

return max;

}

int  main()

{

int  max,x,y;

printf("输入两个整数,用空格隔开:");

scanf("%d%d",&x,&y);

max=max(x,y);

printf("max=%d\n",max);

return   0;

}

编译环境中正确代码、运行结果截图及错误原因分析如下:

2. 编写程序实现以下功能

(1)求1!+2!+3!+...+n!,其中n的值由键盘输入。

要求:定义和调用函数double fact(int a);求取a!并返回结果。

注:此题仅作为自定义函数练习使用,这个程序用函数实现效率会很低。

编译环境中正确代码、运行结果截图如下:

(2)编写程序,给小学生出加法运算题,然后判断学生输入的答案对错与否,并统计得分。

功能:连续出10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题,如果输入答案正确,则显示Right!,否则显示Not correct!,不给机会重做,10道题做完后,按每题10分统计总得分和错误题数,然后输出总分和做错的题数。

编程要求:

  1. 较好的用户输入输出提示
  2. 使用子函数实现两个数相加的测试。此函数的输入参数是两个加数,返回值是用户运算的正确与否(用1或者0表示)。在此函数中首先读入用户输入的加法结果,并与正确结果进行比较。

int  AddTest(int a, int b) ;

编译环境中正确代码、运行结果截图如下:

(3)假设一个班级人数不超过40人,请定义一个一维数组用于存放学生成绩。其中,用户输入学生人数,学生成绩随机生成,求班级平均分。

要求:(a)学生人数由用户输入,用户输入的人数数量不超过40。

(b)随机生成学生成绩(成绩为百分制,即大于等于0,小于等于100);

   注:该功能用一个函数实现,函数原型为void initClass(int  score[], int num);函数原型中score为存放学生成绩的一维数组,num为学生人数

     (c)统计班级中平均分;

        注:该功能用一个函数实现,函数原型为float  avgClass(int  score[], int num);函数返回值为平均分,num为学生人数,保留两位小数

编译环境中正确代码、运行结果截图如下:

#include <stdio.h>

#include <stdlib.h>

#define MAXNUM 40

void inputScore(float score[],int N);

float avgScore(float score[],int N);

int main()

{

    float score[MAXNUM],avg;

    int N;

    scanf("%d",&N);

    /******添加对N的合法性检查的代码,若N不在2-40范围,则输出:输入错误,并退出程序******/

    if(N<2||N>40)

    {

        printf("输入错误");

        exit(0);

    }

    

    

    /*******end*************************************************************************/

    inputScore(score,N);

    avg=avgScore(score,N);

    printf("平均成绩为%.2f",avg);

    return 0;

}

/******请根据任务要求在下面添加定义上面两个函数的代码*******/

void inputScore(float score[],int N)

{

    int i;

    for(i=0;i<N;i++)

    {

        scanf("%f",&score[i]);

        if(score[i]<0||score[i]>100)

        {

            printf("请重新输入\n");

            i--;

            continue;

        }

    }

}

float avgScore(float score[],int N)

{

    int i;

    float sum=0,avg;

    for(i=0;i<N;i++)

    {

        sum=sum+score[i];

    }

    avg=sum/N;

    return avg;

}

三、实验小结

本次实验难度较小,主要难的地方在于不懂随机数的生成,然后上网搜索,最终找到了解法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值