C语言实现的一个小学生算数自测系统源码分享


C语言实现的一个小学生算数自测系统源码分享


#include
<stdio.h>
//标准输入输出

#include
<stdlib.h>
//用于对程序进行退出操作

#include
<time.h>
//用于计时和随机数的产生

char YN;

enum{N,Y}; //录入用户选择

int x;

int
toSystem(int []); //函数声明

int
foreWord(int []); //函数声明

int
menu();

int
main()

{

int name[20];                                     //存储小学生姓名

toSystem(name);                                  //起始界面

foreWord(name);                                  //前言界面

menu(name);                                     //主菜单

}

int
toSystem(int vals[])

{

printf("\t\t\t\tC语言程序设计案例\n");

printf("\t\t\t-----------------------------------------\n");

printf("\t\t\t\t名称:小学生算数自测系统\n");

printf("\t\t\t\t工具:Code::Blocks\n");

printf("\t\t\t\t作者:李安瑞\n");

printf("\t\t\t-----------------------------------------\n");

printf("\t\t\t\t请输入你的名字:");

scanf("%s",vals);

printf("\t\t\t\tYour name is %s,do you

want to the next?\n");

printf("\t\t\t\t如果你想继续,输入Y,想退出就输入N\t");

scanf("%c %c",&x,&YN);

if(YN)

{

   system("cls");                                    //清屏

}else{exit(1);};                                       //退出

}

int
foreWord(int vals[])

{

printf("\t\t\t\t前言\n");

printf("    %s同学,你好,欢迎使用【小学生算数自测系统】,本程序以全菜单形式实现了以下功能;\n",vals);

printf("小学生的加法,减法,乘法和除法。\n");

printf("    出于方便考虑,我们为您添加了退出选项\n");

printf("    本程序若在执行中有问题,欢迎您批评指正!");

printf("\n    您的宝贵意见是我们的不竭动力!");

printf("\n温馨提示:小朋友在做题之前可以选择菜单5,了解一下测试规则。");

printf("\n    测试结束后可以选择菜单6对本次测试进行打分");

printf("\n\t\t\t\t如果你想继续,输入Y,想退出就输入N\t");

scanf("%c %c",&x,&YN);

if(YN)

{

   system("cls");

}else{exit(1);};

}

int
menu()

{

int add();

int sub();

int dive();

int mul();

int exc();

int inform();

int choose;

printf("小朋友,欢迎你来到小学算数\n");                             //用户选择

printf("\t\t\t\t1.加法\n");

printf("\t\t\t\t2.减法\n");

printf("\t\t\t\t3.乘法\n");

printf("\t\t\t\t4.除法\n");

printf("\t\t\t\t5.说明\n");

printf("\t\t\t\t6.评价\n");

printf("\t\t\t\t0.退出\n");

printf("请选择:");

scanf("%d",&choose);

system("cls");

switch(choose)

{

    case 0:exit (1) ;

    case 1:add();

    case 2:sub();

    case 3:mul();

    case 4:dive();

    case 5:inform();

    case 6:exc();

}

}

int add()

{

int start,end;

start=time(NULL);                                              

//起始时间

void rank(int,float);

int i,tnum,rand1,rand2,yours;

float ranks=0.0;

printf("请选择题目数量<建议在20题左右>:");

scanf("%d",&tnum);

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

{

    srand(time(NULL));

    rand1=1+(int)rand()%100;

    rand2=1+(int)rand()%100;

    printf("%d+%d=",rand1,rand2);

    scanf("%d",&yours);

    if (yours==rand1+rand2)

    ranks++;

}

end=time(NULL);                                            //结束时间

printf("\t时间是%ds\n",end-start);                              //时间计数

rank(tnum,ranks);

go();
//是否进入菜单栏

}

int sub()

{

int start,end;

start=time(NULL);

void rank(int,float);

int i,tnum,rand1,rand2,yours;

float ranks=0.0;

printf("请选择题目数量<建议在20题左右>:");                    

//数组实现

scanf("%d",&tnum);

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

{

    srand(time(NULL));

    rand1=1+(int)rand()%100;

    rand2=1+(int)rand()%100;

    if(rand1>rand2)

        {

printf("%d-%d=",rand1,rand2);

        scanf("%d",&yours);

        if (yours==rand1-rand2)

        ranks++;                                        //计入答对题的个数

    }

    else

        {

        printf("%d-%d=",rand2,rand1);

        scanf("%d",&yours);

        if (yours==rand2-rand1)

        ranks++;

    };



}

end=time(NULL);

printf("\t时间是%d\n",end-start);

rank(tnum,ranks);

go();

}

int mul()

{

void rank(int,float);

int i,j,tnum,rand1,rand2,yours;

float ranks=0.0;

for(j=0;j<3;j++)

{

    if(j==0)

        printf("第一关");

    if(j==1)

        printf("第二关");

    if(j==2)

        printf("第三关");

    printf("\n请选择题目数量<建议在20题左右>:");

scanf("%d",&tnum);

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

{

    srand(time(NULL));

    rand1=1+(int)rand()%10;

    rand2=1+(int)rand()%10;

    printf("%d*%d=",rand1,rand2);

    scanf("%d",&yours);

    if (yours==rand1*rand2)

    {

    if(i==0)

        printf("\n恭喜答对,继续加油!\n");

    if(i==1)

        printf("\n恭喜答对,继续加油!\n");

    }else 

{printf(“闯关失败!\n”);go();}
//有一题错误即失败

}

 if(j==0)

        printf("恭喜通过第一关!\n");

    if(j==1)

        printf("恭喜通过第二关!!\n");

    if(j==2)

        printf("恭喜通全关!!!\n");

}

go();

}

int
dive()

{

void rank(int,float);

int i,j,tnum,rand1,rand2,yours;

float ranks=0.0;

for(j=0;j<3;j++)

{

    if(j==0)

        printf("第一关");

    if(j==1)

        printf("第二关");

    if(j==2)

        printf("第三关");

    printf("\n请选择题目数量<建议在20题左右>:");

scanf("%d",&tnum);

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

{

    srand(time(NULL));

    rand1=1+(int)rand()%10;

    rand2=rand1*(1+(int)rand()%10);                         //随机数产生数字

    printf("%d/%d=",rand2,rand1);                            //相乘结果即被除数

    scanf("%d",&yours);

    if (yours==rand2/rand1)

    {

    if(i==0)

        printf("\n恭喜答对,继续加油!\n");

     if(i==1)

        printf("\n恭喜答对,继续加油!\n");

    }

    else 

{printf(“闯关失败!\n”);go();}

}

 if(j==0)

        printf("恭喜通过第一关!\n");

    if(j==1)

        printf("恭喜通过第二关!!\n");

    if(j==2)

        printf("恭喜通全关!!!\n");

}

go();

}

void
rank(int tnum,float ranks)

{

printf("\n你答对了%5.0f题\n",ranks);

float average;

average = 100.0/tnum;

ranks*=average;

int integer;

integer=ranks;

if(integer==ranks)

    printf("你的成绩是%d\n你的等级是",integer);

else

    printf("你的成绩是%d\n你的等级是",integer+1);

if(integer<60)

{printf("D");}

else if(integer<75)

    {printf("C");}

else if(integer<90)

    {printf("B");}

else

    {printf("A");};

}

void go()
//清屏选项

{

printf("\n\t\t\t\t如果你想继续,输入Y,想退出就输入N\t");

scanf("%c %c",&x,&YN);

if(YN)

{

   system("cls");

   menu();

}else{exit(1);};

}

int
inform()

{

printf("这个系统共有四个功能,分别为简单的加减乘除\n");

printf("其中加减法我们采取打分和评等级制\n");

printf("乘除法我们采取过关的方式\n");

printf("注:总分100,每小题的分数为总分除以题量,等级为A,B,C,D\n");

printf("关卡难度由随机数产生\n");

printf("制作者:李安瑞  日期:2018/12/16\n");

go();

}

int exc()

{

int ccc;

printf("请对系统进行评价哦,嘤嘤嘤~~~\n");

printf("请对系统打分(0--10):");

scanf("%d",&ccc);

printf("\n谢谢您的参与");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值