四则运算 2.0

题目要求:编写一个能自动生成自定义题目数的小学四则运算。要求能支持真分数

思索过程:我对题目大致分析,将一个简单的四则运算分解成一个:随机数+简单运算符+随机数+=的格式。要首先生成随机数;然后随机生成一个符号,这样第二个数也可随机生成;最后就可以利用简单的循环来输出所需题目。至于真分数,是分子比分母小的数,我将一个真分数拆解,得到两个整数相除的格式。然后比较分子分母的大小,将较大的数始终放在分母的位置。

设计思路:利用rand()生成随机数,难点在于如何生成随机符号,既然能生成随机数,那是否可以利用这个数来生成随机符号呢?显然可以,a=rand()%4,通过对a的判断,输出相应的符号。

源代码:

#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#define N g
main()
{
    int a,b,k,i,n, c,d,e,f,g;
    do{
    printf("\n请输入题目数量: ");
scanf("%d",&g);
    printf("\n请输入数字类型(1.整数 2.真分数) -1为退出程序: ");
scanf("%d",&n);

    switch(n)
    {
    case 1:
    {

    for(i=0;i<N;i++)
    {
    a=rand()%100+1;
    b=rand()%100+1;
    k=rand()%4+1;
    printf("%d",a);
    switch(k)
    {
    case 1:printf("+");break;
    case 2:printf("-");break;
    case 3:printf("*");break;
    case 4:printf("/");break;
    }
    printf("%d=\t\t",b);
    }
    break;
    }
    break;
    case 2:
    {
for(i=0;i<N;i++)
    {
    e=rand()%100+1;
    f=rand()%100+1;
    k=rand()%4+1;
    if ( e>=f)
        printf("%d/%d",f,e);
    else
        printf("%d/%d",e,f);
    switch(k)
    {
    case 1:printf("+");break;
    case 2:printf("-");break;
    case 3:printf("*");break;
    case 4:printf("/");break;
    }
    c=rand()%100+1;
    d=rand()%100+1;
    if ( c>=d)
        printf("%d/%d=\t\t",d,c);
    else
        printf("%d/%d=\t\t",c,d);
    }
    break;
    }
    break;
    }
    }while(n!=-1);
}

运行结果:

 

PSP:

PSP2.0

Personal Software Process Stages

Time (h) Senior Student

Time (h)

Planning

计划

1

1.5

Estimate

估计这个任务需要多少时间

10

13.5

Analysis

需求分析 (包括学习新技术)

2

2

Coding

Standard

代码规范

1

1.5

Design

具体设计

1

1.5

Coding

具体编码

3

4.5

Test

测试(自我测试,修改代码,提交修改)

0.5

1

Reporting

报告

1.5

1.5

posted @ 2018-10-08 09:52  DAMIAO  阅读(190)  评论(0编辑  收藏  举报