论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

C语言实例教程之教小学生算术

文章类别:C语言程序设计 | 发表日期:2011-3-15 8:56:10

C语言实例教程之教小学生算术

 

#include <stdio.h>      /*  调用库函数  */ 
#include <stdlib.h>           /*  调用库函数   */ 
int Tha;                           /*  变量 表示第一个运算数   */ 
int Thb;          /*   第二个运算数  */ 
int Tresult;      /*  正确答案   */ 
int Qcount;      /*   题目的个数  */ 
int Upnum;      /*  升级的分数   */ 
int Tscore;      /*  当前得分   */ 
char op;      /*   运算符号  */ 

TestTen()      /*  出第一个级别题的函数    */ 
{ 
   int Userda;      /*  用户给出的答案   */ 
   int temp;      /*   临时变量,用于交换两个变量得值  */ 

   op=random(4)+1;      /*  产生一个1-4之间的随机数,用于表示+ ,- , * , /   */ 



   switch(op)      /*  判断运算符是什么   */ 
      { 
        case 1:        /*  加 的情况   */ 
           { Tha=random(10);      /*   产生一个0-9之间的随机数  放在第一个运算数 Tha中  */ 
             Thb=random(10);      /*   产生一个0-9之间的随机数  放在第二个运算数 Thb中     */ 
             Tresult=Tha+Thb;break;      /*  计算出正确答案 放在 Tresult中    */ 
            } 
        case 2:        /*  减 的情况   */ 
           { Tha=random(10); 
             Thb=random(10); 
             if(Tha<Thb)      /*  减不能的负  所以第一个运算数要比第二个大,如果小,则交换两变量的值   */ 
                {temp=Tha;Tha=Thb;Thb=temp;}   /*  交换 */ 
             Tresult=Tha-Thb;break;          /*  计算出正确答案 放在 Tresult中    */ 
   } 
case 3:       /*   乘 的情况  */ 
           { Tha=random(10); 
             Thb=random(10); 
             Tresult=Tha*Thb;break; 
           } 
        case 4:        /* 除 的情况    */ 
          {do         /*  循环     保证可以除尽      */ 
            { do            /*  循环保证 除数不为 0 */ 
                {Tha=random(10); 
                 Thb=random(10); 

                 if(Tha<Thb) 
                 {temp=Tha;Tha=Thb;Thb=temp;} 

       }while(Thb==0) ;           /*  当除数0 的时候继续产生新的随机数   */ 
     }while((Tha%Thb)!=0);             /*  当不能整除的时候继续产生新的随机数   */ 
             Tresult=Tha/Thb; 
             break; 
           } 
        } 


     switch(op)            /*  根据 op的值决定输出 问题    */ 
       { 
 case 1: {printf("\n%d  +  %d  = ",Tha,Thb);break;}    
 case 2: {printf("\n%d  -  %d  = ",Tha,Thb);break;} 
 case 3: {printf("\n%d  X  %d  = ",Tha,Thb);break;} 
 case 4: {printf("\n%d  /  %d  = ",Tha,Thb);} 
       } 



     scanf("%d",&Userda);         /*  用户输入答案   */ 

     while(Userda!=Tresult)            /*    判断答案是否正确  */ 
       { if(Tscore>=10)                      /*   不正确减分  */ 
             Tscore=Tscore-10;      
         printf("\nWrong! Now Your Score: %d",Tscore);            /*  输出错误信息和 当前分数    */ 
 /*if(Tscore<Upnum) 
      return; */ 
         printf("\n Input The Answer Again:     ");                     /*    提示重新输入 */ 
         scanf("%d",&Userda);                                            /*   用户输入答案  */ 
      } 

       Tscore=Tscore+10;                                 /*   答对了 加分  */ 
       printf("\n Right! Now Your Score: %d",Tscore);                    /*     */ } 



TestHun()   /*出第二个级别题的函数*/ 
{ 
   int Userda; 
   int temp; 

   op=random(4)+1; 



   switch (op) 
      { 
        case 1: 
           { Tha=random(90)+10;          /*  产生 10-99 之间的随机数,即两位数   */ 
             Thb=random(90)+10; 
             Tresult=Tha+Thb;break; 
            } 
        case 2: 
           { Tha=random(90)+10; 
             Thb=random(90)+10; 
             if(Tha<Thb) 
                {temp=Tha;Tha=Thb;Thb=temp;} 
             Tresult=Tha-Thb;break; 
   } 
case 3: 
           { Tha=random(90)+10; 
             Thb=random(90)+10; 
             Tresult=Tha*Thb;break; 
           } 
        case 4: 
          {do 
            { do 
                {Tha=random(90)+10; 
                 Thb=random(90)+10; 

                 if(Tha<Thb) 
                 {temp=Tha;Tha=Thb;Thb=temp;} 

               }while (Thb==0) ; 
             }while ((Tha%Thb)!=0); 
             Tresult=Tha/Thb; 
             break; 
           } 
        } 


     switch(op) 
       { 
 case 1: {printf("\n%d  +  %d  = ",Tha,Thb);break;} 
 case 2: {printf("\n%d  -  %d  = ",Tha,Thb);break;} 
 case 3: {printf("\n%d  X  %d  = ",Tha,Thb);break;} 
 case 4: {printf("\n%d  /  %d  = ",Tha,Thb);} 
       } 


     scanf("%d",&Userda); 

     while(Userda!=Tresult) 
       { if(Tscore>=10) 
             Tscore=Tscore-10; 
         printf("\nWrong! Now Your Score: %d",Tscore); 
 if(Tscore<Upnum)                          /*   如果分数小于设定的分数则直接推出函数   */ 
      return; 
         printf("\n Input The Answer Again:   "); 
         scanf("%d",&Userda); 
      } 

       Tscore=Tscore+10; 
       printf("\n Right! Now Your Score: %d",Tscore); 




} 


main() 
  { 
    int Leiji=0;                       /*  变量  , 存储 累计答题数目   */ 
    randomize();                             /*  保证每次运行程序 产生的随机数序列不相同的语句  */ 
    clrscr();                                     /*  清屏 : 清除屏幕上上次运行的内容,重新开始运行程序    */ 
    clrscr(); 
    printf("\nTEST START:-------------------------------------"); 
    printf("\n Please Input Question Count:  ");         /*  提示信息 :输入问题个数    */ 
    scanf("%d",&Qcount);             /*  用户输入问题个数   */ 

    do 
     {printf("\n Please Input UpLevel Score(Times of 10 (Sheng ji de fen shu;))  : ");         
                                                                 /*  提示信息 :输入升级分数(10的倍数 )  */ 
      scanf("%d",&Upnum);           /*  用户输入升级分数    */ 
     if(Upnum<10)                   /*   如果用户输入的升级分数<10  */ 
         printf("\n Must > = 10 ! "); 
     else if(Upnum%10!=0)         /*   如果用户输入的升级分数不是10的倍数 :即 整除10 不等于0  */        
        printf("\n Must Some Times of 10!(10 de bei shu!)");             /*     */  
     else break; 
     }while(1);                      /*  不满足条件永远循环   */  

     printf("\n--------------------------------------------------------"); 
     printf("\n--------------------------------------------------------");      printf("\nTest Start:"); 
     printf("\n--------------------------------------------------------"); 
     printf("\n----------------------------------"); 
     printf("\n Lever   1   Start :"); 

Begin1: 

      printf("\n----------------------"); 
      printf("\n Question: %d",Leiji+1);                        /*  输出 题号    */  
      TestTen(); 
      Leiji++; 

     if(Leiji==Qcount)                         /*   如果做题个数 和 事先设定好的问题个数相同 则结束答题!   */  
{   printf("\n--------------------------------------------------------"); 
           printf("\n--------------------------------------------------------\n"); 
         printf("\n Test Over!!!\n"); 
 printf("\n--------------------------------------------------------"); 
         printf("\n Your Final Score: %d",Tscore); 
         if(Tscore>=Upnum) 
           printf("\n Your Final Level:     LEVEL 2"); 
         else 
           printf("\n Your Final Level:     LEVEL 1"); 
        goto LastLine; 
        } 
     if(Tscore<Upnum)              /*   分数 小于 升级分数  */  
         goto Begin1;                 /*  转向到 Begin1 继续作题   */ 
     printf("\n Up To Advance Level!\n Lever2 Start :---------");                 /*  达到升级分数 升级到 Level2   */  


Begin2: 

      printf("\n----------------------"); 
      printf("\n Question: %d",Leiji+1); 

    TestHun(); 
    Leiji++; 

     if(Leiji==Qcount) 
{   printf("\n--------------------------------------------------------"); 
           printf("\n--------------------------------------------------------\n"); 
         printf("\n Test Over!!!\n"); 
 printf("\n--------------------------------------------------------"); 
         printf("\n Your Final Score: %d",Tscore); 
         if(Tscore>=Upnum) 
           printf("\n Your Final Level:     LEVEL 2"); 
         else 
           printf("\n Your Final Level:     LEVEL 1"); 
        goto LastLine; 
        } 

      if(Tscore<Upnum) 
        {printf("\nDown To Normal Level! Lever1 : -------");                    /*  从Level2答题过程中分数小于升级分数 降级到Level 1  继续答题   */  
         goto Begin1;} 
      else 
         goto Begin2; 

LastLine: 
   printf("\n------------------------------------------------") ; 
   getchar();getchar();    /* 等待用户输入回车结束程序运行 */ 
} 可以做1位,2位数的加,减,乘,除运算,其中减法不能的负数,除法要能出尽。屏幕上随机出现两个数,提示小学生给出答案,答错了要重新输入,直到答对为止。要统计给分,累积达到一定分数后可以晋级,即从1位晋级到2位,同样也可以降级。

上一篇:{教程}六籽弹小游戏 人气:2807
下一篇:{教程}判断回文字符串 人气:6301
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058