| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3724 人关注过本帖
标题:为什么两次调用randLmt100()函数返回的值一样
只看楼主 加入收藏
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
收藏
得分:0 
不知道为什么没次编译只能调用一种函数
#include <stdio.h>
#include <stdlib.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 (*funt)(int,int);
    srand((unsigned)time(NULL)) ;
    int a=rand()%4+1;
    if(a==1)
    {
        funt=addLmt100;
    }
    if(a==2)
    {
        funt=subLmt100;
    }
    if(a==3)
    {
        funt=mulLmt100;
    }
    if(a==4)
    {
        funt=divLmt100;
    }
    loop1:
    srand((unsigned)time(NULL));
    int proNum[4]={0},ansNum[4]={0};
    int i,j,k,l,m,n,o,p;
    i=randLmt100();
    j=randLmt100();
    funt(i,j);      
    printf("还想继续做吗?如果想的话就按Y键继续\n");
    printf("如果不想的话就按任意键退出\n");
    fflush(stdin);
    char s,s1,s2,s3;
    scanf("%c",&s);
    getchar();
    fflush(stdin);
    if(s!='Y')
    {
        printf("谢谢您的参与\n");
        exit(0);        
    }
    else
    {
       proNum[0]++;   
       k=randLmt100();
       l=randLmt100();
       funt(k,l);
    }
    printf("还想继续玩吗?如果想的话就按Y键继续\n");
    printf("如果不想的话就按任意键退出\n");
     fflush(stdin);
     scanf("%c",&s1);
     getchar();
     fflush(stdin);
     if(s1!='Y')
     {
         printf("谢谢您的参与\n");
         exit(0);
     }
     else
     {
          proNum[1]++;
         m=randLmt100();
         n=randLmt100();
         funt(m,n);
     }
     printf("还想继续做吗?如果想的话就按Y键继续\n");
     printf("如果不想的话就按任意键退出\n");
     fflush(stdin);
     scanf("%c",&s2);
     getchar();
     fflush(stdin);
     if(s1!='Y')
     {
         printf("谢谢您的参与\n");
         exit(0);
     }
     else
     {
         proNum[2]++;
         o=randLmt100();
         p=randLmt100();
        funt(o,p);      
     }
     printf("还想继续做吗?如果想的话就按Y键继续\n");
     printf("如果不想的话就按任意键退出\n");
     fflush(stdin);
     scanf("%c",&s3);
     getchar();
     fflush(stdin);
     if(s3!='Y')
     {
         printf("谢谢您的参与\n");
         exit(0);
     }
     else
     {
         goto loop1;
     }
    return 0;
   
 }
 
 
 int RandN1N2(int rN1,int rN2)
 {
     int i;
 //    srand((unsigned)time(NULL));
     i=rand()%(rN2-rN1+1)+rN1;
     return i;   
 }
 int randoper(void)
 {
     int i;
     i=RandN1N2(1,4);
     return i;
 }
  int randLmt100()
  {
      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);
      if(A==answer)
      {
      printf("哇!答对了,你太棒了。\n");
      return 1;
  }
    else
    {
    printf("没关系,下次再来。正确答案是:%d\n",A);
    return 0;
}
   }
   subLmt100(int num1,int num2)
   {
       int numM1,numM2,A,answer;
       if((num1-num2)>0)
       {
           
           numM1=num1;
           numM2=num2;
   }
       else
       {
           numM1=num2;
           numM2=num1;
   }
       A=numM1-numM2;
       printf("%d-%d=\n",numM1,numM2);
    scanf("%d",&answer);
    if(A==answer)
    {
      printf("哇!答对了,你真的很棒。\n");
      return 1;
    }
    else
    {
      printf("没关系,你依然很棒,下次再来。准确答案是:%d\n",A);   
         return 0;
   }
   }
   mulLmt100(int num1,int num2)
   {
         int A,answer;
      A=num1*num2;
      printf("%d*%d=:\n",num1,num2);
      scanf("%d",&answer);
    if(A==answer)
     {
        printf("哇!,你真的很厉害,竟然答对了\n");
        return 1;
    }
     else
     {
        printf("没关系,你依旧很棒。正确答案是%d:\n",A);
        return 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;
    }
        A=numM1/numM2;
           printf("%d/%d=:\n",numM1,numM2);
           scanf("%d",&answer);
       if(A==answer)
       {
           printf("哇!你真的很good啊\n");
           return 1;
   }
       else
       {
        printf("没关系,下次再来。正确答案是%d\n",A);
           return 0;
   }
   }
   
图片附件: 游客没有浏览图片的权限,请 登录注册

  
  
  
  
  
  
2017-06-12 12:27
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
loop1的位置再往前提。 种子初始化全局做一次即可
做多了可能画蛇添足

[此贴子已经被作者于2017-6-12 15:15编辑过]


DO IT YOURSELF !
2017-06-12 15:13
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
收藏
得分:0 
嗯,谢谢大佬
2017-06-12 17:05
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
收藏
得分:0 
这个代码如何记录加减乘除算对的次数,最后打印出来呢
#include <stdio.h>
#include <stdlib.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;
    loop:
    srand((unsigned)time(NULL)) ;
    int a=rand()%4+1;
    if(a==1)
    {
        funt=addLmt100;
        proNum[0]++;
    }
    if(a==2)
    {
        funt=subLmt100;
        proNum[1]++;
    }
    if(a==3)
    {
        funt=mulLmt100;
        proNum[2]++;
    }
    if(a==4)
    {
        funt=divLmt100;
        proNum[3]++;
    }
    srand((unsigned)time(NULL));
    int i,j;
    i=randLmt100();
    j=randLmt100();
    funt(i,j);
    if(proNum[0]++)
     ansNum[0]=funt(i,j);
     if(proNum[1]++)
     ansNum[1]=funt(i,j);
     if(proNum[2]++)
     ansNum[2]=funt(i,j);
     if(proNum[3]++)
     ansNum[3]=funt(i,j);
     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)
 {
     int i;
 //    srand((unsigned)time(NULL));
     i=rand()%(rN2-rN1+1)+rN1;
     return i;   
 }
 int randoper(void)
 {
     int i;
     i=RandN1N2(1,4);
     return i;
 }
  int randLmt100()
  {
      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);
      if(A==answer)
      {
      printf("哇!答对了,你太棒了。\n");
      return 1;
  }
    else
    {
    printf("没关系,下次再来。正确答案是:%d\n",A);
    return 0;
}
   }
   subLmt100(int num1,int num2)
   {
       int numM1,numM2,A,answer;
       if((num1-num2)>0)
       {
           
           numM1=num1;
           numM2=num2;
   }
       else
       {
           numM1=num2;
           numM2=num1;
   }
       A=numM1-numM2;
       printf("%d-%d=\n",numM1,numM2);
    scanf("%d",&answer);
    if(A==answer)
    {
      printf("哇!答对了,你真的很棒。\n");
      return 1;
    }
    else
    {
      printf("没关系,你依然很棒,下次再来。准确答案是:%d\n",A);   
         return 0;
   }
   }
   mulLmt100(int num1,int num2)
   {
         int A,answer;
      A=num1*num2;
      printf("%d*%d=:\n",num1,num2);
      scanf("%d",&answer);
    if(A==answer)
     {
        printf("哇!,你真的很厉害,竟然答对了\n");
        return 1;
    }
     else
     {
        printf("没关系,你依旧很棒。正确答案是%d:\n",A);
        return 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;
    }
        A=numM1/numM2;
           printf("%d/%d=:\n",numM1,numM2);
           scanf("%d",&answer);
       if(A==answer)
       {
           printf("哇!你真的很good啊\n");
           return 1;
   }
       else
       {
        printf("没关系,下次再来。正确答案是%d\n",A);
           return 0;
   }
   }
   
  
  
  
  
  
  
2017-06-12 19:46
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
单独加一个计数器

DO IT YOURSELF !
2017-06-12 19:55
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
收藏
得分:0 
计算器?没听说过,大佬可以说明白一点吗
2017-06-12 20:04
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
收藏
得分:0 
计数器
2017-06-12 20:08
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
收藏
得分:0 
我去百度一下先
2017-06-12 20:09
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:10 
回复 26楼 陈光星
假设你有一个循环,在循环内丢一个变量,变量初始为0,没一次循环,变量自增一次。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-12 20:10
陈光星
Rank: 1
等 级:新手上路
帖 子:69
专家分:3
注 册:2017-5-15
收藏
得分:0 
这个我会写,但这个在我那个代码了弄不了
2017-06-12 20:13
快速回复:为什么两次调用randLmt100()函数返回的值一样
数据加载中...
 
   



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

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