#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h> // 注意:conio.h 是特定于某些编译器(如Turbo C++)的,不是标准C库的一部分
// 声明printCard函数,用于打印一张扑克牌
void printCard() {
// 随机生成花色
int color = rand() % 4; // 生成0到3之间的随机数
switch (color) {
case 0:
printf("黑桃");
break;
case 1:
printf("红心");
break;
case 2:
printf("梅花");
break;
case 3:
printf("方片");
break;
}
// 随机生成牌面数字
int suitNumber = rand() % 13 + 1; // 生成1到13之间的随机数
printf("%d\t", suitNumber); // 打印牌面数字并制表符对齐
}
int main() {
srand(time(NULL)); // 使用当前时间作为随机数种子初始化随机数生成器
char ch;
printf("Press the spacebar to print a card.\n"); // 提示用户按下空格键打印一张牌
while (1) { // 无限循环,直到用户按下空格键
if (_kbhit()) { // 检查是否有按键被按下(_kbhit() 是特定于某些编译器的函数)
ch = _getch(); // 读取按键,但不显示在屏幕上(_getch() 也是特定于某些编译器的函数)
if (ch == ' ') { // 如果是空格键
printCard(); // 调用printCard函数打印一张扑克牌
// 如果取消注释下面的break语句,程序将在打印一张牌后退出循环
// break; // 退出循环
}
}
}
return 0; // 程序正常退出返回0
}
程序运行结果将不断地在控制台上打印出随机的扑克牌,直到用户按下空格键。每次按下空格键,printCard
函数都会被调用,生成一张新的扑克牌(花色和数字都是随机的)并打印出来。由于程序中的 while(1)
循环没有被 break
语句打断,因此程序将无限循环直到用户手动终止程序。
注意:_kbhit()
和 _getch()
函数是特定于某些编译器(如Turbo C++)的,并不是标准C库的一部分。在标准C库或POSIX兼容系统中,你可能需要使用其他方法来检测按键或读取字符,例如使用 ncurses
库或者调用终端特定的系统调用。
如果你使用的是标准C库或类似的环境,并且希望实现类似的功能,你可能需要查找特定平台或环境的文档来了解如何检测按键和读取输入。在某些环境中,你可能需要依赖外部库(如ncurses
)来实现这样的功能。