C-answer[i++] = bit求解
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int table[10] = {0}, chances = 10;
int answer[4], input[4], bit, a, b, i;
srand((unsigned)time(NULL));
for (i = 0; i < 4; )
{
bit = rand() % 10;
if (table[bit] == 0)
{
answer[i++] = bit;
table[bit] = 1;
}
}
while (chances-- > 0)
{
a = 0;
b = 0;
printf("Please type a four-digit number.n");
for (i = 0; i < 4; ++i)
{
scanf("%1d", input + i);
if (input[i] == answer[i])
++a;
if (table[input[i]] == 1)
++b;
}
printf("%dA%dBn", a, b);
if (a == 4)
{
printf("nYou win!n");
break;
}
}
printf("You lose---nThe right answer is ");
for (i = 0; i < 4; ++i)
printf("%d", answer[i]);
printf("n");
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一个猜数字的游戏, 第10~18行是生成一个随机的四位数, 保证这四位数的个位十位百位千位都不相同.
if (table[bit] == 0) //若数字不重复
{
answer[i++] = bit; //把数字保存到"四位数"的数组里, 也就是游戏的答案. 这句相当于answer[i] = bit; i = i + 1;
table[bit] = 1; //记录此数字已经被选中, 以后不能再次选中这个数字, 否则会重复.
}
if (table[bit] == 0)
{
answer[i++] = bit;
table[bit] = 1;
}
解释一下:如果table[bit]为0,就将其变为1.同时将table数组的下标bit记录进answser数组i的位置,然后answser数组向后移一位,以便下次保存数据。
i++表示计算完该语句后i值自增1.