C-answer[i++] = bit求解

发布于 2016-11-12 18:56:14 字数 952 浏览 1262 评论 2

#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2017-09-09 11:02:07

这是一个猜数字的游戏, 第10~18行是生成一个随机的四位数, 保证这四位数的个位十位百位千位都不相同.

if (table[bit] == 0) //若数字不重复
{
answer[i++] = bit; //把数字保存到"四位数"的数组里, 也就是游戏的答案. 这句相当于answer[i] = bit; i = i + 1;
table[bit] = 1; //记录此数字已经被选中, 以后不能再次选中这个数字, 否则会重复.
}

虐人心 2017-04-03 13:38:46

if (table[bit] == 0)
{
answer[i++] = bit;
table[bit] = 1;
}

解释一下:如果table[bit]为0,就将其变为1.同时将table数组的下标bit记录进answser数组i的位置,然后answser数组向后移一位,以便下次保存数据。

i++表示计算完该语句后i值自增1.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文