第7章数组
——数组的其他应用之文曲星猜数游戏
第7章数组
文曲星猜数游戏
由计算机随机生成一个各位相异的4位数字,由人来猜 a[i] 4213
每次提示:xAxB b[i] 1234
1A3B
A前面的数字表示有几个数字猜对位置也对了
4231
B前面的数字表示有几个数字猜对但位置不对 2A2B
4213
思路 4A0B
用数组a存计算机随机生成的各位相异的4位数:MakeDigit(a)
用数组b存人猜的4位数:InputGuess(b)
比较a和b的相同位置元素,得到A前面数字:IsRightPosition(a, b)
比较a和b的不同位置元素:IsRightDigit(a, b)
C语言程序设计
第7章数组
int main()
{ ……
文曲星猜数游戏
MakeDigit(a) ; /*随机生成一个各位相异的4位数字 */ 部分主函数
printf("How many times do you want to guess?");
scanf("%d", &level); /*最多允许猜的次数*/
count = 0; /*记录用户猜的次数*/
do{
printf("No.%d of %d times\n", count, level);
printf("Input your guess:\n");
if (InputGuess(b) == 0) continue;
count++; /*记录已经猜的次数*/
rightPosition = IsRightPosition(a, b); /*统计数字和位置都猜对的个数*/
rightDigit = IsRightDigit(a, b) – rightPosition;/*统计数字猜对位置不对的个数*/
printf("%dA%dB\n", rightPosition, rightDigit);
}while (rightPosition != 4 && count < level );
if (rightPosition == 4)
printf("Congratulations,you guess the right number at No.%d\n", count);
else
printf("Sorry,you haven't guess the right number,see you next time!\n");
printf("Correct answer is:%d%d%d%d\n", a[0], a[1], a[2], a[3]);
return 0;
}
C语言程序设计
第7章数组
文曲星猜数游戏
随机生成一个各位相异的4位数字——第1种方法
void MakeDigit(int a[])
{
srand(time(NULL));
a[0] = ra