| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1188 人关注过本帖
标题:有个问题,自己琢磨一天了,实在想不出,还得麻烦论坛里的朋友啊!!!
只看楼主 加入收藏
经典记忆
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-7-19
结帖率:16.67%
收藏
已结贴  问题点数:10 回复次数:19 
有个问题,自己琢磨一天了,实在想不出,还得麻烦论坛里的朋友啊!!!
#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    char another_game = 'Y';
    bool correct = false;
    int counter = 0;
    int sequence_length = 0;
    int i = 0;
    time_t seed = 0;
    int number = 0;
    time_t now = 0;
    time_t time_taken = 0;
    printf("\nTo play Simple Simon,");
    printf("watch the screen for a sequence of digits.");
    printf("\nWatch carefully,as the digits are only displayed"
    " for a second! ");
    printf("\nThe computer will remove them, and then prompt you");
    printf("to enter the same sequence.");
    printf("\When you do, you must put spaces between the digits.\n");
    printf("\nGood Luck!\nPress Enter to play\n");
    scanf("%c",&another_game);
    do
    {
                              correct = true;
                              counter = 0;
                              sequence_length = 2;
                              time_taken = clock();
                              while(correct)
                              {
                                            sequence_length += counter++%3 == 0;
                                            seed = time(NULL);
                                            now = clock();
                                            srand((unsigned int)seed);
                                            for(i = 1;i<=sequence_length;i++)
                                             printf("%d",rand()%10);
                                             for(;clock()-now<CLOCKS_PER_SEC;);
                                             printf("\r");
                                             for(i =1;i<=sequence_length;i++)
                                              printf("  ");
                                              if(counter==1)
                                               printf("\nNow you enter the sequence_don't forget"
                                               " the spaces\n");
                                              else
                                               printf("\r");
                                               
                                               srand((unsigned int)seed);
                                               for(i = 1;i<=sequence_length;i++)
                                               {
                                                     scanf("%d",&number);
                                                     if(number !=rand()%10)
                                                     {
                                                               correct = false;
                                                               break;
                                                     }
                                            
                                               }
                                               printf("%s\n",correct?"correct!":"wrong!");
                              }
                              time_taken = (clock()-time_taken)/ CLOCKS_PER_SEC;
                              printf("\n\nYour score is %d",--counter * 100/time_taken);
                              fflush(stdin);
                              printf("\nDo you want to play again(y/n);");
                              scanf("%c",&another_game);
    }
    while(toupper(another_game)=='Y');
    getchar();
    getchar();
    return 0;
}
   
执行后,我正确的输入结果也是“wrong”,我怀疑下面的语句有问题:
for(i = 1;i<=sequence_length;i++)
 {
         scanf("%d",&number);
         if(number !=rand()%10)
         {
              correct = false;
              break;
         }
 }
我认为scanf读取的是所有的数字,而if(number !=rand()%10)的意思是是对每个数字进行判断,所以问题应该出在这里,而我又不知道怎么改,恳请哪位老师帮忙看一下,我万分感激!!,语句很长,您幸苦了!!!!!
搜索更多相关主题的帖子: carefully correct 朋友 sequence 
2012-08-05 16:48
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:3 
最好先简单介绍一下程序的功能,以便别人来看你的程序

★★★★★为人民服务★★★★★
2012-08-05 16:52
经典记忆
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-7-19
收藏
得分:0 
一个小游戏,就是系统随机显示几个数,停留一秒后消失,你凭记忆去输入,正确输入三次后,数字会增加,直到错了位止,我的问题是无论我输入什么我都是错的,所以我怀疑上述位置scanf有问题
2012-08-05 16:55
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:3 
给你一个思路,你这是多个数字,也就是说可能会出现0123这样的状况,那么这时候使用char更好,其实我已经改好了....

这个小程序还是挺好玩的
不过别忘了在输入完毕后清理输入流


[ 本帖最后由 随风飘荡 于 2012-8-5 17:02 编辑 ]
2012-08-05 17:00
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
噢法克,玩上瘾了
图片附件: 游客没有浏览图片的权限,请 登录注册


图片附件: 游客没有浏览图片的权限,请 登录注册
#incldue !
2012-08-05 17:04
经典记忆
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-7-19
收藏
得分:0 
老师,是不是我所说的scanf的问题?
2012-08-05 17:09
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
连续的数字会让scanf当成一个整体吃进去的,判断也是一个整体去判断,只不过进行了循环次判断而已

btw:老师我还当不来,叫风胸或者荡胸就好了
2012-08-05 17:12
经典记忆
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-7-19
收藏
得分:0 
对,我说的就是这个意思,我想每个数字去判断,可是不知道怎么弄,我是新手,这个是书上的一个例子,书上也是这么写的。可是我执行的话就有问题
2012-08-05 17:15
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
你非要这么做的话那么就得在输入的时候加空格,隔开使输入分断,因为我记得%d应该是没有格式控制符只读取几位的

但是明显只需要使用char来读取就可简单的使输入逐字符,没必要弄的这么麻烦


[ 本帖最后由 随风飘荡 于 2012-8-5 17:25 编辑 ]
2012-08-05 17:23
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:3 
可以控制的scanf("%1d", &a); 风胸,荡胸

重剑无锋,大巧不工
2012-08-05 17:26
快速回复:有个问题,自己琢磨一天了,实在想不出,还得麻烦论坛里的朋友啊!!! ...
数据加载中...
 
   



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

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