小学算术题

 

需求分析:1.能自动生成小学四则运算题目

              2.适用于小学二年级的学生

              3.有真分数的计算,还有正整数的加减法。

设计思路:1.自动生成100以内加减法,运算关系随机生成。

              2.分数以x/y的形式给出,且分子分母均小于等于10.

注意事项:1.由于是小学二年级所以题目中没有结果出现负数的情况。

              2.减数要小于等于被减数。

              3.题目数目固定为30道题。

              4.真分数是分子小于分母,且大小小于1.

另:由于时间比较匆忙,我的程序还有好多漏洞,我会继续努力解决这些漏洞的。

代码我已经上传到codeing中 链接https://git.coding.net/2013040101053/first.git

#include<stdlib.h>
#include<stdio.h>
void print();//打印函数
void questions();//出题函数
int main(){
    int n;
    printf("\t欢迎进入自动出题系统\n");
    while(1){
        print();
        scanf("%d",&n);//选项
        switch(n){
            case 1: questions();break;
            case 2: exit(0);
        }

    }
}
void print(){
    printf("\t***********************\n");
    printf("\t1.出题\n");
    printf("\t2.退出系统\n");
    printf("\t请选择:");
}
void questions(){
    int juge1,juge2;//判断出的是分数还是整数
    char a[2]={'+','-'};
    int i,j,k,m,n;
    for(k=0;k<30;k++)//出30道题
        {
        juge2=rand()%2;
        if(juge2==0)//juge2=0时出的题为整数
            {
                juge1=rand()%2;
                if(juge1==0)
                    {
                        i=rand()%100;//随机出100以内的数
                        j=rand()%(100-i);
                    }
                else
                    {
                        i=rand()%100;
                        j=rand()%i;
                    }
                printf("\t%d  %c  %d =\n",i,a[juge1],j);//打印出的题
            }
            else
            {
               juge1=rand()%2;
               if(juge1==0)
               {
                   j=rand()%10+1;
                   i=rand()%j+1;
                   n=rand()%10+1;
                   m=rand()%n+1;
                   if(i==j||m==n)
                   {
                       k-=1;
                   }
                   else
                   {
                       printf("\t%d/%d  %c  %d/%d =\n",i,j,a[juge1],m,n);//打印出分数的题
                   }
               }
               else
               {
                   j=rand()%10+1;
                   i=rand()%j+1;
                   n=rand()%10+1;
                   m=rand()%n+1;
                   if(i*n<j*m||i==j||m==n)
                   {
                       k-=1;//分数相减的时候出现负数时将循环变量减1,什么都不做再继续进行循环
                   }
                   else
                   {
                        printf("\t%d/%d  %c  %d/%d =\n",i,j,a[juge1],m,n);
                   }
               }
            }
    }
}


结果截图:

 

posted @ 2016-03-12 15:52  =liuchang=  阅读(468)  评论(2编辑  收藏  举报