版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系:55525090@qq.com,我们立即下架或删除。
简介:
第7章 数组
——数组的其他应用之文曲星猜数游戏
C语言程序设计
第7章 数组
文曲星猜数游戏
由计算机随机生成一个各位相异的4位数字,由人来猜
每次提示:xAxB
A前面的数字表示有几个数字猜对位置也对了
B前面的数字表示有几个数字猜对但位置不对
思路
用数组a存计算机随机生成的各位相异的4位数:MakeDigit(a)
用数组b存人猜的4位数:InputGuess(b)
比较a和b的相同位置元素,得到A前面数字:IsRightPosition(a, b)
比较a和b的不同位置元素:IsRightDigit(a, b)
4213
1234
1A3B
4231
2A2B
4A0B
4213
a[i]
b[i]
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] = rand()%10; /*千位数字 */
do
{
a[1] = rand() % 10; /*百位数字 */
}while (a[0] == a[1]);
do
{
a[2] = rand() % 10; /*十位数字 */
}while (a[0] == a[2] || a[1] == a[2]);
do
{
a[3] = rand() % 10; /*个位数字 */
}while (a[0] == a[3] || a[1] == a[3] || a[2] == a[3]);
}
C语言程序设计
第7章 数组
文曲星猜数游戏
随机生成一个各位相异的4位数字——第2种方法
void MakeDigit(int a[])
{
int i, j, temp;
srand(time(NULL));
for (i=0; i<10; i++)
{
a[i] = i;
}
for (i=0; i<10; i++)
{
j = rand() % 10;
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
temp
a[j] a[i]
?
4 0
4
0 4
0 1 2 3 4 5 6 7 8 9
4 1 2 3 0 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
C语言程序设计
第7章 数组
文曲星猜数游戏
统计数字和位置都猜对的
个数,对guess和magic的相同位置的元素进行比
较,得到A前面的数字
j=0 j=1 j=2 j=3
magic
guess
int IsRightPosition(int magic[], int guess[])
{
int rightPosition = 0;
int j;
for (j=0; j<4; j++)
{
if (guess[j] == magic[j])
{
rightPosition++;
}
}
return rightPosition;
}
C语言... 更多>>