#include<stdio.h> #include<time.h> #include<stdlib.h> void judge(int g, int z, int* k, int* j) { int a, b[4], i, t, m, s; a = z; *j = 0; *k = 0; b[0] = b[1] = b[2] = b[3] = 0; for (i = 1;i < 5;i++) { s = g;m = 1; for (t = 1;t < 5;t++) { if (a % 10 == s % 10) { if (m && t != b[0] && t != b[1] && t != b[2] && t != b[3]) { *j += 1;m = 0;b[*j - 1] = t; } if (i == t) *k += 1; } s /= 10; } a /= 10; } } int main() { int z, count, g, s, j, k; char ag; srand((unsigned int)time(NULL)); z = rand() % 10000; printf("我有一个四位数的数字,请猜一猜!\n"); for (count = 1;;count++) { printf("请输入一个四位数:"); scanf("%d", &g); judge(g, z, &k, &j); printf("你猜对了%d个数字,\n", j); printf("并且在猜对的数字中有 %d 个位置也是正确的.\n", k); if (k == 4)break; } printf("恭喜你,猜对了!"); printf("\n"); printf("你用了%d次猜出了这个数.\n", count); return 0; } 详细解释程序
时间: 2023-12-09 22:07:05 浏览: 20
C标准库函数集
5星 · 资源好评率100%
这是一个猜数字游戏的程序,程序会随机生成一个四位数,玩家需要猜测这个数字是什么。程序会根据玩家猜测的数字,判断猜测的数字包含了几个正确的数字,以及这些数字中有几个位置是正确的。
程序的主函数main()中,首先使用srand()函数初始化了随机数生成器,然后通过rand()函数生成了一个0到9999之间的随机数z作为程序要猜测的数字。
接下来,程序进入一个循环中,每次循环中提示玩家输入一个四位数,然后调用judge()函数来判断玩家猜测的数字是否正确。judge()函数的参数包括玩家猜测的数字g、程序生成的数字z,以及两个指针变量k和j。函数中使用了一个数组b来记录已经匹配过的数字,避免重复匹配。
如果玩家猜测的数字中包含了某个正确的数字,那么j的值就加1,如果这个数字的位置也是正确的,那么k的值就加1。
如果玩家猜测的数字全部匹配正确,那么程序会跳出循环,提示玩家猜对了,并输出玩家猜测的次数。
阅读全文