三子棋:
写前构思图:
#include <time.h>
#include <stdlib.h>
#define max_hang 3
#define max_lie 3
void chushihua(char a[max_hang][max_lie]) {
for (int i = 0; i <= 2; i++) {
for (int j = 0; j <= 2; j++) {
a[i][j] = ' ';
}
}
}
void print(char a[max_hang][max_lie]){
for (int i = 0; i <= 2; i++) {
printf("+---+---+---+\n");
for (int j = 0; j <= 2; j++) {
printf("| %c ", a[i][j]);
}
printf("|\n");
}
printf("+---+---+---+\n");
}
void play(char a[max_hang][max_lie]) {
for (int i = 0; 1;i++) {
printf("请输入您要下的位置\n");
int hang = 0, lie = 0;
scanf("%d %d", &hang, &lie);
if (hang < 0 || hang>2 || lie < 0 || lie>2) {
printf("您输入的位置不存在,请重新输入\n");
continue;
}
else if(a[hang][lie] != ' ') {
printf("您输入的位置已经有子了,请重新输入\n");
continue;
}
else {
a[hang][lie] = 'x';
break;
}
}
}
void computer(char a[max_hang][max_lie]) {
while (1){
int hang = rand() % max_hang;
int lie = rand() % max_lie;
if (a[hang][lie] == ' ') {
a[hang][lie] = 'o';
break;
}
else
continue;
}
}
char win(char a[max_hang][max_lie]) {
int hang = 0, lie = 0;
for (; hang <= 2; hang++) {
if (a[hang][0] !=' '
&& a[hang][0] == a[hang][1]
&& a[hang][0] == a[hang][2]) {
return a[hang][0];
}
}
for (; lie <= 2; lie++) {
if (a[0][lie] != ' '
&& a[0][lie] == a[1][lie]
&& a[0][lie] == a[2][lie]) {
return a[0][lie];
}
}
if (a[0][0]!=' '&&
a[0][0] == a[1][1]
&& a[0][0] == a[2][2] ) {
return a[0][0];
}
if (a[1][1] != ' ' &&
a[2][0] == a[1][1]
&& a[1][1] == a[0][2]) {
return a[1][1];
}
}
int isfull(char a[max_hang][max_lie]) {
if (a[0][0] != ' ' &&
a[0][1] != ' ' &&
a[0][2] != ' ' &&
a[1][0] != ' ' &&
a[1][1] != ' ' &&
a[1][2] != ' ' &&
a[2][0] != ' ' &&
a[2][1] != ' ' &&
a[2][2] != ' ') {
return 0;
}
else
return 1;
}
int main() {
srand((unsigned int)time(0));
char a[max_hang][max_lie] = { 0 };
//创建棋盘并初始化为空格
chushihua(a);
//打印棋盘
print(a);
for (int i = 0; i <= 4; i++) {
//玩家落子,输入行列数落子
play(a);
system("cls");
print(a);
//判定获胜
if (win(a) == 'x') {
printf("恭喜您获胜了\n");
break;
}
if (isfull(a) == 0
) {
printf("游戏结束,您和人机五五开\n");
break;
}
//电脑随机落子
computer(a);
system("cls");
print(a);
//判定获胜
if (win(a) == 'o') {
printf("您连人机都打不过\n");
break;
}
}
}
运行结果:
猜数字:
由于猜数字只运用到了随机数rand和简单的if语句,这里不做出过多解释.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void caishuzi(){
int a = 0;
int toguess = rand() % 100 + 1;
printf("请开始猜数字\n");
while(1){
scanf("%d", &a);
if (a == toguess) {
printf("猜对了");
break;
}
if (a < toguess)
printf("猜小了\n");
if (a > toguess)
printf("猜大了\n");
}
}
int main() {
srand((unsigned int)time(0));//时间戳,保证了每次的随机数都不一样
int n = 0;
printf("选择1开始游戏\n");
printf("选择2退出游戏\n");
scanf("%d", &n);
if (n == 1) {
caishuzi();
}
else if (n == 2)
printf("您已退出游戏\n");
else if (n != 1 && n != 2) {
printf("您的输入有误\n");
}
return 0;
}
哎…