新人求助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 编辑 ]