您的位置:首页 > 汽车 > 新车 > 浙江省工程造价信息网_怎样做好网络推广呀_可以直接进入的舆情网站_网站建设的重要性

浙江省工程造价信息网_怎样做好网络推广呀_可以直接进入的舆情网站_网站建设的重要性

2025/6/10 10:37:08 来源:https://blog.csdn.net/m0_73139998/article/details/145879526  浏览:    关键词:浙江省工程造价信息网_怎样做好网络推广呀_可以直接进入的舆情网站_网站建设的重要性
浙江省工程造价信息网_怎样做好网络推广呀_可以直接进入的舆情网站_网站建设的重要性

 本文介绍关于C语言的猜数字和井字棋的小游戏,以及它们的实现思路

 猜数字:

(1) 生成随机数
  • 使用 srand((unsigned int)time(NULL)); 初始化随机数种子,确保每次运行程序时生成的随机数不同。

  • 使用 rand() % 100 + 1 生成一个1到100之间的随机数,并将其赋值给变量 riddle

(2) 用户输入
  • 使用 scanf("%d", &answer); 获取用户输入的数字,并将其存储在变量 answer 中。

(3) 判断逻辑
  • 使用 while 循环不断检查用户输入的数字是否与随机数 riddle 相等:

    • 如果 answer > riddle,提示用户“猜的数字太大了”,并让用户重新输入。

    • 如果 answer < riddle,提示用户“猜的数字太小了”,并让用户重新输入。

    • 如果 answer == riddle,提示用户“猜对了”,并输出用户猜的次数,同时结束循环。

(4) 统计次数
  • 使用变量 count 记录用户猜的次数,每次用户输入后 count++

(5) 结束条件
  • 使用布尔变量 flag 控制循环是否继续。当用户猜对时,将 flag 设置为 false,结束循环。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
void main()
{int answer;srand((unsigned int)time(NULL));int riddle = rand() % 100 + 1;int count = 1;bool flag = true;printf("请输入一个1~100的数字:\n");scanf("%d", &answer);while (flag){if (answer > riddle){printf("姐姐,你猜的数字太大了,再来一次!\n");scanf("%d", &answer);count++;}else if (answer < riddle){printf("姐姐,你猜的数字太小了,再来一次!\n");scanf("%d", &answer);count++;}else{printf("姐姐,恭喜你,猜对了!\n");printf("你一共花了%d次猜对", count);flag = false;}}return;
}

井字棋: 

(1) 棋盘表示

  • 使用一个 3x3 的二维字符数组 board 表示棋盘。

  • 初始化时,棋盘上的每个位置都是空格 ' '

(2) 初始化棋盘
  • 函数 initializeBoard 遍历棋盘,将所有位置设置为空格。

(3) 打印棋盘
  • 函数 printBoard 打印当前棋盘状态。

  • 使用 --- 和 | 绘制棋盘的分隔线,使棋盘更直观。

(4) 检查获胜条件
  • 函数 checkWin 检查当前玩家是否获胜:

    • 检查所有行、列和两条对角线,是否有连续的三个相同棋子。

    • 如果有,返回 1(表示获胜);否则返回 0

(5) 检查棋盘是否已满
  • 函数 checkFull 检查棋盘是否已满(即没有空格):

    • 如果有空格,返回 0;否则返回 1(表示平局)。

(6) 游戏主循环
  • 在 main 函数中,使用 while(1) 实现游戏主循环:

    1. 打印当前棋盘。

    2. 提示当前玩家输入行和列。

    3. 检查输入是否合法(范围是否在 1~3 内,且目标位置是否为空)。

    4. 如果输入合法,放置当前玩家的棋子。

    5. 检查当前玩家是否获胜:

      • 如果获胜,打印棋盘并宣布获胜者,结束游戏。

    6. 检查是否平局:

      • 如果平局,打印棋盘并宣布平局,结束游戏。

    7. 切换玩家(X 和 O 交替)。

#include <stdio.h>
#include <stdlib.h>// 定义棋盘大小
#define SIZE 3// 初始化棋盘
void initializeBoard(char board[SIZE][SIZE])
{for (int i = 0; i < SIZE; i++){for (int j = 0; j < SIZE; j++){board[i][j] = ' ';}}
}// 打印棋盘
void printBoard(char board[SIZE][SIZE])
{// 打印棋盘边框和棋子for (int i = 0; i < SIZE; i++){for (int j = 0; j < SIZE; j++){printf(" %c ", board[i][j]);if (j < SIZE - 1)printf("|");}if (i < SIZE - 1)printf("\n---+---+---\n");}printf("\n");
}// 检查是否有玩家获胜
int checkWin(char board[SIZE][SIZE], char player)
{// 检查行、列和对角线是否有玩家获胜for (int i = 0; i < SIZE; i++){if (board[i][0] == player && board[i][1] == player && board[i][2] == player)return 1;if (board[0][i] == player && board[1][i] == player && board[2][i] == player)return 1;}if (board[0][0] == player && board[1][1] == player && board[2][2] == player)return 1;if (board[0][2] == player && board[1][1] == player && board[2][0] == player)return 1;return 0;
}// 检查棋盘是否已满
int checkFull(char board[SIZE][SIZE])
{// 遍历棋盘,检查是否有空格for (int i = 0; i < SIZE; i++){for (int j = 0; j < SIZE; j++){if (board[i][j] == ' ')return 0;}}return 1;
}int main()
{char board[SIZE][SIZE];char player = 'X';int row, col;// 初始化棋盘initializeBoard(board);// 游戏循环while (1){// 打印棋盘printBoard(board);// 玩家输入printf("玩家 %c,请输入行和列(1 3):", player);scanf("%d %d", &row, &col);// 检查输入是否合法if (row < 1 || row > 3 || col < 1 || col > 3 || board[row - 1][col - 1] != ' '){printf("无效输入,请重新输入。\n");continue;}// 放置棋子board[row - 1][col - 1] = player;// 检查是否获胜if (checkWin(board, player)){printBoard(board);printf("玩家 %c 获胜!\n", player);break;}// 检查是否平局if (checkFull(board)){printBoard(board);printf("平局!\n");break;}// 切换玩家player = (player == 'X') ? 'O' : 'X';}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com