标题:为什么记录不了加减乘除的次数和是对的次数,看了半天,实在是找不到问题的 ...
取消只看楼主
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
结帖率:66.67%
已结贴  问题点数:20 回复次数:12 
为什么记录不了加减乘除的次数和是对的次数,看了半天,实在是找不到问题的所在,求大佬看看
#include <stdlib.h>
#include <stdin.h>
#include <time.h>
//姓名;陈光星
//学号;2016130152


int RandN1N2(int rN1 ,int rN2);
int randoper(void);
int randLmt100();
int addLmt100(int num1,int num2);
int subLmt100(int num1,int num2);
int mulLmt100(int num1,int num2);
int divLmt100(int num1,int num2);

int main()                                       //主函数部分
{   
    int proNum[4]={0},ansNum[4]={0};             //定义两个数组,分别用于记录加减乘除出现的次数和加减乘除算对的次数
    int (*funt)(int,int);                        //指针函数,用于实现随机出现加减乘除的运算
    char s;
    int i1,i2,i3,i4;                            //变量用于记录
    loop:
    srand((unsigned)time(NULL)) ;
    int a=rand()%4+1;
    if(a==1)
      {
        funt=addLmt100;
        proNum[0]=proNum[0]+1;
      }
    else if(a==2)
      {
        funt=subLmt100;
        proNum[1]=proNum[1]+1;
      }
    else if(a==3)
      {
        funt=mulLmt100;
        proNum[2]=proNum[2]+1;
      }
    else if(a==4)
      {
        funt=divLmt100;
        proNum[3]=proNum[3]+1;   
      }
    int i,j;
    i=randLmt100();
    j=randLmt100();
    funt(i,j);
    if(proNum[0]=proNum[0]+1)
      {
        i1=funt(i,j);
        ansNum[0]=ansNum[0]+i1;
      }
     
    else if(proNum[1]=proNum[1]+1)
      {
         i2=funt(i,j);
         ansNum[1]=ansNum[1]+i2;
      }
    else if(proNum[2]=proNum[2]+1)
      {
         i3=funt(i,j);
         ansNum[2]=ansNum[2]+i3;   
      }
    else if(proNum[3]=proNum[3]+1)
      {
         i4=funt(i,j);
         ansNum[3]=ansNum[3]+i4;
      }
    printf("还想继续做吗?如果想的话就按Y键继续\n");
    printf("如果不想玩的话就按任意键退出\n");
    fflush(stdin);                             //清除键盘的缓冲区
    scanf("%c",&s);                             //判断是否要继续
    fflush(stdin);
    if(s=='Y')
     {
         goto loop;
     }
    else
     {
         goto loop1;
     }
      
    loop1:
    printf("出现加减乘除的次数分别是%d  %d  %d  %d\n",proNum[0],proNum[1],proNum[2],proNum[3]);
    printf("加减乘除答对的次数分别为%d  %d  %d  %d\n",ansNum[0],ansNum[1],ansNum[2],ansNum[3]);
    return 0;
   
 }
//下面是函数的定义
 
int RandN1N2(int rN1,int rN2)    //生成一个值在rN1和RN2之间的随机数的函数RandN1N2
 {
     int i;
     i=rand()%(rN2-rN1+1)+rN1;
     return i;   
 }
int randoper(void)              //调用RandN1N2函数生成一个在1到4之间的随机数
 {
     int i;
     i=RandN1N2(1,4);
     return i;
 }
int randLmt100()               //调用RandN1N2函数生成一个值在0到99之间的随机数
 {
      int i;
      i=RandN1N2(0,99);
      return i;
 }
int addLmt100(int num1,int num2)    //加法运算
  {
      int answer,A;
      printf("%d+%d=",num1,num2);
      A=num1+num2;
      scanf("%d",&answer);
      fflush(stdin);
      if(A==answer)
        {
          printf("哇!答对了,你太棒了。\n");
          return 1;                            //算对的话就返回1,用于计算算对的次数
      }
    else
      {
        printf("没关系,下次再来。正确答案是:%d\n",A);
        return 0;                             //算错的话就返回0,同样用于计算算对的次数
      }
   }
subLmt100(int num1,int num2)        //减法运算
   {
       int numM1,numM2,A,answer;
       if((num1-num2)>0)               //先判断两个数的大小,把大的数赋给numM1,把小的覆盖numM2
         {   
           numM1=num1;
           numM2=num2;
      }
       else
         {
           numM1=num2;
           numM2=num1;
      }
       A=numM1-numM2;
       printf("%d-%d=",numM1,numM2);
    scanf("%d",&answer);
    fflush(stdin);
    if(A==answer)
      {
        printf("哇!答对了,你太棒了。\n");
        return 1;                             //算错就返回1
      }
    else
      {
        printf("没关系,下次再来。正确答案是:%d\n",A);   
           return 0;                                //算对就返回0
      }
   }
mulLmt100(int num1,int num2)                  //乘法运算              
   {
       int A,answer;
    A=num1*num2;
    printf("%d*%d=:",num1,num2);
    scanf("%d",&answer);
    fflush(stdin);
    if(A==answer)
      {
        printf("哇!答对了,你太棒了。\n");
        return 1;                           //返回值为1
      }
    else
      {
        printf("没关系,下次再来。正确答案是%d:\n",A);
        return 0;                           //返回值为0
      }
   }
divLmt100(int num1,int num2)               // 除法运算
   {
       int i,j,A,answer,numM1,numM2;          //先判断两个数能不能整除
       loop:
     {
        num1=randLmt100();
           num2=randLmt100();
       if((num1-num2)>0)
         {
           numM1=num1;
           numM2=num2;
      }
       else
         {
           numM1=num2;
           numM2=num1;
      }
     }
       while(numM1%numM2!=0)
      {
        num1=randLmt100();
        num2=randLmt100();
        goto loop;                    //运用goto语句循环
      }
    A=numM1/numM2;
       printf("%d/%d=",numM1,numM2);
       scanf("%d",&answer);
       fflush(stdin);
       if(A==answer)
         {
           printf("哇!答对了,你太棒了。\n");
           return 1;                              //返回值为1
      }
       else
         {
        printf("没关系,下次再来。正确答案是%d\n",A);
           return 0;                                               //返回值为0
      }
   }
   
  
  
  
  
  
  
搜索更多相关主题的帖子: include 记录 姓名 
2017-06-13 19:16
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
得分:0 
我意思是判断这个语句执行了没有
不知道这样写对不对
2017-06-13 20:58
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
得分:0 
我明白了,
我立个flag就行了
2017-06-13 21:16
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
得分:0 
谁可以帮我编译一下

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
//姓名;陈光星
//学号;2016130152


int RandN1N2(int rN1 ,int rN2);
int randoper(void);
int randLmt100();
int addLmt100(int num1,int num2);
int subLmt100(int num1,int num2);
int mulLmt100(int num1,int num2);
int divLmt100(int num1,int num2);

int main()                                       //主函数部分
{   loop:
    srand((unsigned)time(NULL));
    int proNum[4]={0,0,0,0},ansNum[4]={0,0,0,0};             //定义两个数组,分别用于记录加减乘除出现的次数和加减乘除算对的次数
    int (*funt)(int,int);                        //指针函数,用于实现随机出现加减乘除的运算
    char s;
    int flag1=0,flag2=0,flag3=0,flag4=0;
    int i1,i2,i3,i4,i5;                            //变量用于记录
    srand((unsigned)time(NULL)) ;
    int a=rand()%4+1;
    if(a==1)
      {
        funt=addLmt100;
        proNum[0]=proNum[0]+1;
        flag1=flag1+1;
      }
    else if(a==2)
      {
        funt=subLmt100;
        proNum[1]=proNum[1]+1;
        flag2=flag2+1;
      }
    else if(a==3)
      {
        funt=mulLmt100;
        proNum[2]=proNum[2]+1;
        flag3=flag3+1;
      }
    else if(a==4)
      {
        funt=divLmt100;
        proNum[3]=proNum[3]+1;
        flag4=flag4+1;   
      }
    int i=randLmt100();
    int j=randLmt100();
    funt(i,j);
    i5=funt(i,j);
    if(flag1==1)
      {
        i1=i5;
        ansNum[0]=ansNum[0]+i1;
      }
     
    else if(flag2==1)
      {
         i2=i5;
         ansNum[1]=ansNum[1]+i2;
      }
    else if(flag3==1)
      {
         i3=i5;
         ansNum[2]=ansNum[2]+i3;   
      }
    else if(flag4==1)
      {
         i4=i5;
         ansNum[3]=ansNum[3]+i4;
      }
    printf("还想继续做吗?如果想的话就按Y键继续\n");
    printf("如果不想玩的话就按任意键退出\n");
    fflush(stdin);                             //清除键盘的缓冲区
    scanf("%c",&s);                             //判断是否要继续
    fflush(stdin);
    if(s=='Y')
     {
         goto loop;
     }
    else
     {
         goto loop1;
     }
      
    loop1:
    printf("出现加减乘除的次数分别是%d  %d  %d  %d\n",proNum[0],proNum[1],proNum[2],proNum[3]);
    printf("加减乘除答对的次数分别为%d  %d  %d  %d\n",ansNum[0],ansNum[1],ansNum[2],ansNum[3]);
    return 0;
   
 }
//下面是函数的定义
 
int RandN1N2(int rN1,int rN2)    //生成一个值在rN1和RN2之间的随机数的函数RandN1N2
 {
     int i;
     i=rand()%(rN2-rN1+1)+rN1;
     return i;   
 }
int randoper(void)              //调用RandN1N2函数生成一个在1到4之间的随机数
 {
     int i;
     i=RandN1N2(1,4);
     return i;
 }
int randLmt100()               //调用RandN1N2函数生成一个值在0到99之间的随机数
 {
      int i;
      i=RandN1N2(0,99);
      return i;
 }
int addLmt100(int num1,int num2)    //加法运算
  {
      int answer,A;
      printf("%d+%d=",num1,num2);
      A=num1+num2;
      scanf("%d",&answer);
      fflush(stdin);
      if(A==answer)
        {
          printf("哇!答对了,你太棒了。\n");
          return 1;                            //算对的话就返回1,用于计算算对的次数
      }
    else
      {
        printf("没关系,下次再来。正确答案是:%d\n",A);
        return 0;                             //算错的话就返回0,同样用于计算算对的次数
      }
   }
subLmt100(int num1,int num2)        //减法运算
   {
       int numM1,numM2,A,answer;
       if((num1-num2)>0)               //先判断两个数的大小,把大的数赋给numM1,把小的覆盖numM2
         {   
           numM1=num1;
           numM2=num2;
      }
       else
         {
           numM1=num2;
           numM2=num1;
      }
       A=numM1-numM2;
       printf("%d-%d=",numM1,numM2);
    scanf("%d",&answer);
    fflush(stdin);
    if(A==answer)
      {
        printf("哇!答对了,你太棒了。\n");
        return 1;                             //算错就返回1
      }
    else
      {
        printf("没关系,下次再来。正确答案是:%d\n",A);   
           return 0;                                //算对就返回0
      }
   }
mulLmt100(int num1,int num2)                  //乘法运算              
   {
       int A,answer;
    A=num1*num2;
    printf("%d*%d=:",num1,num2);
    scanf("%d",&answer);
    fflush(stdin);
    if(A==answer)
      {
        printf("哇!答对了,你太棒了。\n");
        return 1;                           //返回值为1
      }
    else
      {
        printf("没关系,下次再来。正确答案是%d:\n",A);
        return 0;                           //返回值为0
      }
   }
divLmt100(int num1,int num2)               // 除法运算
   {
       int i,j,A,answer,numM1,numM2;          //先判断两个数能不能整除
       loop3:
     {
        num1=randLmt100();
           num2=randLmt100();
       if((num1-num2)>0)
         {
           numM1=num1;
           numM2=num2;
      }
       else
         {
           numM1=num2;
           numM2=num1;
      }
     }
       while(numM1%numM2!=0)
      {
        num1=randLmt100();
        num2=randLmt100();
        goto loop3;                    //运用goto语句循环
      }
    A=numM1/numM2;
       printf("%d/%d=",numM1,numM2);
       scanf("%d",&answer);
       fflush(stdin);
       if(A==answer)
         {
           printf("哇!答对了,你太棒了。\n");
           return 1;                              //返回值为1
      }
       else
         {
        printf("没关系,下次再来。正确答案是%d\n",A);
           return 0;                                               //返回值为0
      }
   }
   
  
  
  
  
  
  
2017-06-14 16:33
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
得分:0 
为什么第一次的和第二次的一样
2017-06-14 16:43
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
得分:0 
对啊,这就是我的疑问所在了
2017-06-14 16:44
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
得分:0 
我的加减乘除的函数没有问题
2017-06-14 16:45
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
得分:0 
没注意看这个
2017-06-14 16:50
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
得分:0 
我想知道主函数哪里出问题了
2017-06-14 16:51
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
得分:0 
那个问题是因为主函数出现问题才导致出错的
2017-06-14 16:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477897-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070850 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved