| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 905 人关注过本帖, 1 人收藏
标题:函数调用问题
只看楼主 加入收藏
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
结帖率:100%
收藏(1)
已结贴  问题点数:10 回复次数:17 
函数调用问题
程序代码:
#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>
#include<time.h>

#define N 6

int roll_dice(void);
bool play_game(void);

int main()
{

    bool m;
    char i;

    srand((unsigned)time(NULL));          //修改后将roll_dice函数中的srand写到了前面,现在问题是随机取数我不是把它设置成roll_dice函数么?那么初始化也就是
    m = play_game();//1                    //srand((unsigned)time(NULL));为什么还要写入main函数中呢?  

   do{
    if(m == true){
    
       printf("\nYou win!\n\n");
      
    }  
    if(m == false){
      
       printf("\nYou lose!\n\n");
     
    } 
    
    printf("Play again? ");
    scanf("%c",&i);
    printf("\n");
    if (i == 'Y'||i =='y')
      m = play_game(); 
    }   while(i != 'Y'||i !='y');
    
    return 0; 

 }

 

 int roll_dice(void)

 {
     int a1, a2;
     
   //  srand((unsigned)time(NULL));                   //找到了原因,
     a1 = rand() % 6;
     a2 = rand() % 6; 
     
     return a1 + a2;
     
  } 
  
  bool play_game(void)
  {
      int j = 0, k = 0;
      
      
      
      printf("You rolled: ");
      j = roll_dice();
      printf("%d\nYou point is:%d\n",j, j);
      
      
      switch(j){
          
          case 7:   case 11:
          return true;     
          case 2:   case 3:  case 12:
            return false;   
        default:
          while(1){
                 
                 k = roll_dice();
                 printf("You rolled: %d\n",k);
          
                 if(k == j )  return true;
                 if(k == 7)  return false;
        
          }                  
      }
      
      
      
      
   }   

    
      

模拟骰子(2个)游戏,第一次点数之和7或11胜,2.3.12败。其他继续下一轮,第二次如果还是第一次那个数,胜。第二次为7,败。其他继续。
问题就一个,当我单独调试play_game时没什么问题,但整体输出时从注释1直接调到最后,好像都不经过play_game函数,帮我查查main函数里面出现了什么问题,虚心求教

[ 本帖最后由 达尔文 于 2015-9-23 21:59 编辑 ]
搜索更多相关主题的帖子: color 
2015-09-23 20:57
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 2楼 边小白
是个循环,还没处理好,想不明白的第一次为什么不会调用play_game呢,但是单独调试Play_game是管用的

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-23 21:07
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 4楼 边小白
图片附件: 游客没有浏览图片的权限,请 登录注册
这个就是单独调试play_game的结果,与整体调试完全不同

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-23 21:29
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 4楼 边小白
我试着把srand((unsigned)time(NULL));放到main函数中去就可以了,Why?随机选取数字的不是roll_dice函数么?

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-23 21:51
gold615
Rank: 2
等 级:论坛游民
帖 子:54
专家分:75
注 册:2014-6-7
收藏
得分:2 
调用了啊 只是第二次没有循环吧
2015-09-23 21:53
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 7楼 gold615
修改后将roll_dice函数中的srand写到了前面,就可以了。(效果完全不同)   现在问题是随机取数我不是把它设置成roll_dice函数么?那么初始化也就是
srand((unsigned)time(NULL));为什么还要写入main函数中呢?    虚心求教

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-23 22:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你知道那句話是幹嘛的嗎?

授人以渔,不授人以鱼。
2015-09-24 12:44
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 9楼 TonyDeng
设置随机数种子的函数不是么?

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-24 13:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那是全局性設置,在進程之初運行一次就可以了,不用反覆調用。

授人以渔,不授人以鱼。
2015-09-24 13:07
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 11楼 TonyDeng
我的意思是开始没在main函数里写它,把srand((unsigned)time(NULL));  a1 = rand() % 6; a2 = rand() % 6;写一起都写进roll_dice函数中,课效果和把srand((unsigned)time(NULL));单独置于main函数中的效果确是完全不同的。

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-09-24 13:15
快速回复:函数调用问题
数据加载中...
 
   



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

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