| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1091 人关注过本帖
标题:[求助]请问这个程序怎么调试的时候第二个SCANF执行不了.
只看楼主 加入收藏
九栋三楼
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-6-8
收藏
 问题点数:0 回复次数:7 
[求助]请问这个程序怎么调试的时候第二个SCANF执行不了.
各位高手请帮我看一下下面这个程序,怎么调试的时候第二个SCANF执行不了.
而且rand()这个函数,每次随机产生的数值第一个一定是41,为什么啊.?
#include<stdio.h>
#include<stdlib.h>
void main(void)
{
char i;char j;
int m,n;
m=rand()%100;
printf("*********************\n*WELCOME TO THE GAME*\n*********************\n");
printf("do you want to play this game?(Y/N)\n");
scanf("%c",&j);
if(j=='y'||j=='Y')
{
printf("do you want to see the help file?(Y/N)\n");
scanf("%c",&i);
if(i=='y'&&i=='Y')
{printf("***The computer will randomly produce a number between 0-100 that you won't know.");
printf("Your job is following the prompt and finding out the wright number***.\n");
}
else
printf("LET'S GO!\n");

while((m-1)!=0)
{
printf("Now plesase input the number you guess:\n");
scanf("%d",&n);
if(n==m)
{printf("YEAH!That's right!\n");
break;}
else if(n<m)
{printf("The number you put in is too small,please try again:\n");
continue;}
else if(n>m)
{printf("The number you put in is too big,please try again:\n");
continue;}
}
system("pause");
}
else
printf("thanks,see you later!");
}
执行情况如下图所示:

请高手指点程序哪里有问题,谢谢了..
搜索更多相关主题的帖子: SCANF rand 调试 
2007-06-12 19:49
三笔
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-6-12
收藏
得分:0 
小弟 才学。。
只能表达自己的看法

可能是没有
fflush(stdin);

这个吧

%c 以后最好清空一下。

这样比较好哦~
2007-06-12 20:06
九栋三楼
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-6-8
收藏
得分:0 

我也是刚学的....
嗯,加上这个后程序运行正常,也就是说如果没有清空的话,默认的是键入字符为上一次所键入的.?
而且每次那个函数随机产生器所产生的函数都是一样的.请问一下怎么解决这个问题.?

2007-06-12 20:17
九栋三楼
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-6-8
收藏
得分:0 

没有好心人回答一下嘛.?

2007-06-13 21:44
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
void main(void)
{
char i;char j;
int m,n;
m=rand()%100;
printf("*********************\n*WELCOME TO THE GAME*\n*********************\n");
printf("do you want to play this game?(Y/N)\n");
scanf("%c",&j);
getchar();
if(j=='y'||j=='Y')
{
printf("do you want to see the help file?(Y/N)\n");
scanf("%c",&i);
getchar();
if(i=='y'||i=='Y')
{printf("***The computer will randomly produce a number between 0-100 that you won't know.");
printf("Your job is following the prompt and finding out the wright number***.\n");
}
else
printf("LET'S GO!\n");

while((m-1)!=0)
{
printf("Now plesase input the number you guess:\n");
scanf("%d",&n);
if(n==m)
{printf("YEAH!That's right!\n");
break;}
else if(n<m)
{printf("The number you put in is too small,please try again:\n");
continue;}
else if(n>m)
{printf("The number you put in is too big,please try again:\n");
continue;}
}
system("pause");
}
else
printf("thanks,see you later!");
}

偶是菜鸟鸟偶惧WHO?!!!!
2007-06-13 22:43
冷风216
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-3
收藏
得分:0 
rand函数需要改变种子数,否则的话出来的数永远是一样的。
2007-06-13 22:52
九栋三楼
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-6-8
收藏
得分:0 

嗯..楼上说的应该是对的,请问一下怎么改变种子数.?

2007-06-13 23:13
九栋三楼
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-6-8
收藏
得分:0 
srand((int)time(0));
这个解决了种子的问题.谢谢各位了..
2007-06-13 23:21
快速回复:[求助]请问这个程序怎么调试的时候第二个SCANF执行不了.
数据加载中...
 
   



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

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