新人求助scanf("%d",&a)和scanf("%d ",&a)的区别
RT 两者之间的区别是%d后面的一个空格我是按照《C语言入门经典》里面的要求编写的一个游戏
正确的代码如下
如果我将scanf("%d",&number)的代码变成 scanf("%d ",&number),会出现的问题是要输入两次数字,而且只有第一次的数据会被用于判断是否输入正确
求各位高手指导
程序代码:#include <stdio.h>
#include<stdbool.h>
#include<time.h>
#include<stdlib.h>
#include<ctype.h>
int main(void)
{
bool correct=true;
int counter=0;
char ok='Y';
time_t now=0;
time_t seed=0;
int number=0;
int cs=0;
printf("一个测试记忆力的游戏\n");
printf("你是否愿意参加:");
scanf("%c",&ok);
if (toupper(ok)=='Y')
{
do
{
correct=true;
counter=0;
cs=2;
while (correct)
{
seed=time(NULL);
now=clock();
cs +=counter++%3 ==0;
srand((unsigned int)seed);
for (int i=1;i<=cs ;i++ )
{
printf("%d ",rand()%10);
}
for (;clock()-now<CLOCKS_PER_SEC ; );
printf("\r");
for (int i=1;i<=cs ;i++ )
{
printf(" ");
}
printf("\r");
srand((unsigned int)seed);
for (int i=1;i<=cs ;i++ )
{
scanf("%d",&number);
if (number !=rand()%10)
{
correct=false;
break;
}
}
printf("%s\n",correct?"对":"错");
fflush(stdin);
printf("你是否再愿意参加:");
scanf("%c",&ok);
}
}while (toupper(ok)=='Y');
return 0;
}
else
{
return 0;
}
return 0;
}
[ 本帖最后由 sisos 于 2012-6-3 22:05 编辑 ]








