第6章实验 循环控制结构

第6章实验 循环控制结构

 

 

  • 题目1:小学生数学CAI系统

 

任务1:

程序首先随机产生1-10之间的正整数,在屏幕上打印出问题。例如 6*7=? 然后让学生输入答案。程序检查学生输入的答案是否正确。若正确,则打印“Right!”,然后问下一个问题;否则打印“Wrong! Please try again.”,然后提示学生重做,直到答对为止。

 

1、解题思路:

使用rand随机函数产生两个随机整数。使用do-while循环结构,回答正确回答下一个问题。If else条件结构,回答错误打印“Wrong! Please try again.”。

 

2、源代码

 

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

    int answear,i, a,b;

    srand(time(NULL));

    a = rand() % 10 + 1;

    b = rand() % 10 + 1;

    printf("%d * %d = ?",a,b,a * b);

 

    i=1;

    do

    {

    scanf("%d",&answear);

    if(a * b == answear)

    {

        printf("Right!");

 

    }

    else

    {

        printf("Wrong!Please try again.");

 

    }

 

    }while(a * b != answear);

    return 0;

}

 

3、程序运行效果截图:

 

 

 

 

 

 

 

 

 

 

 

 

 

任务2:

小学生数学CAI系统任务2:在任务1的基础上,当学生回答错误时,最多给三次重做的机会,三次仍未做对,则显示“Wrong!You have tried three times! Test over!”,程序结束。

 

1、解题思路:

    Do-while循环结构,while中给出条件最多循环三次。三次之后仍为做对,循环结束打印“Wrong!You have tried three times! Test over!”

 

  1. 源代码:

 

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

    int answear,i, a,b;

    srand(time(NULL));

    a = rand() % 10 + 1;

    b = rand() % 10 + 1;

    printf("%d * %d = ?",a,b,a * b);

 

    i=1;

    do

    {

    scanf("%d",&answear);

    if(a * b == answear)

    {

        printf("Right!");

 

    }

    else

    {

        printf("Wrong!Please try again.");

 

    }

    i++;

    }while(a * b != answear && i <= 3);

     printf("Wrong!You have tried three times! Test over");

    return 0;

}

 

3、程序运行效果截图:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

任务3:

 

在任务1的基础上,连续做10道乘法运算题,不给机会重做,若学生回答正确,则显示“Right!”,否则显示“Wrong!”。10道题全部做完后,按每题10分统计并出输总分,同时为了记录学生能力提高的过程,在输出学生的回答正确率(即答对题述除以总题数的百分比)。

 

1、解题思路:

使用for循环,条件控制中循环次数i<=10。回答错误时,将“Wrong! Please try again.”改为“Wrong!”。对做对的题目进行计数,10乘以做对题数为总分。对于百分比,使用%%,对百分制成绩直接加百分号。定义counter,用于计数。

 

2 源代码:

 

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

    int answear,j, a,b,counter=0,percent,scoal;

    char op;

    srand(time(NULL));

 

    for(j=1;j<=10;j++)

    {

     a = rand() % 10 + 1;

     b = rand() % 10 + 1;

     printf("%d * %d = ?",a,b,a * b);

     scanf("%d",&answear);

    if(a * b == answear)

    {

        counter = ++counter;

        printf("Right!");

 

    }

    else

    {

        printf("Wrong!");

 

    }

 

    }

    printf("%d",counter);

    scoal = percent = (10 * counter);

    printf("%d,%d%%",scoal,percent);

    return 0;

}

 

  1. 程序运行效果截图:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

任务4:

在任务3的基础上通过计算机随机产生10道四则运算题,两个操作数为1-10之间的随机数,运算类型为随机产生的加,减,乘,整除中的任意一种,不给机会重做,如果学生回答正确,则显示“Right!”,否则显示“Wrong!”。10道题全部做完后,按每题10分统计总分,然后打印出总分和学生的回答正确率。

 

1、解题思路:

对于随机产生四道运算题,定义type为0-4,使用switch,进行随机选择。对于做对题数进行counter计数,每一个运算分别判断正确。

 

2源代码:

 

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

    int answear,i, a,b,counter=0,percent,scoal,type;

    srand(time(NULL));

    for(i=1;i<=10;i++)

    {

     a = rand() % 10 + 1;

     b = rand() % 10 + 1;

     type = rand() % 4 + 1;

     switch(type)

     {

     case 1:

       printf("%d * %d = ?",a,b,a * b);

       scanf("%d",&answear);

    if(a * b == answear)

    {

        counter = ++counter;

        printf("Right!");

 

    }

    else

    {

        printf("Wrong!");

 

    }

       break;

       case 2:

       printf("%d + %d = ?",a,b,a + b);

       scanf("%d",&answear);

    if(a + b == answear)

    {

        counter = ++counter;

        printf("Right!");

 

    }

    else

    {

        printf("Wrong!");

 

    }

       break;

       case 3:

       printf("%d - %d = ?",a,b,a - b);

       scanf("%d",&answear);

    if(a - b == answear)

    {

        counter = ++counter;

        printf("Right!");

 

    }

    else

    {

        printf("Wrong!");

 

    }

       break;

       case 4:

       printf("%d / %d = ?",a,b,a / b);

       scanf("%d",&answear);

    if(a / b == answear)

    {

        counter = ++counter;

        printf("Right!");

 

    }

    else

    {

        printf("Wrong!");

 

    }

       break;

       default:

        printf("");

     }

    }

    printf("%d",counter);

    scoal = percent = (10 * counter);

    printf("%d,%d%%",scoal,percent);

    return 0;

}

 

程序运行效果截图:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

五、MOOC网课程测试结果

 

 

1、测试1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2、测试2:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_48450741/article/details/112464661