三字棋和它的想关知识点 当一个学习编程的程序员可以看懂常规代码,就需要通过不断的模仿总结来达到形似甚至形似
文章目录
if(条件表达式)
{
条件成立执行语句
}
else//不需执行可省略
{
条件不成立执行语句
}
if(条件表达式)
{
条件成立执行语句
}
else if(条件表达式)
{
条件成立执行语句
}
....//多分支条件判断
...
else
{
上述条件都不满足执行语句
}
for(赋值表达式;判断;一次循环后语句)
{
循环体;
}
while(判断语句)//条件不成立跳出或终止循环
{
条件成立执行;
}
//get_max函数的设计
(返回类型)//形式参数
int get_max(int x, int y)
//函数名称
{
return (x>y)?(x):(y);
//语句项
}
int get_max(int x, int y)//形式参数
{
return (x>y)?(x):(y);
}
int main()
{
int num1 = 10;
int num2 = 20;
int max = get_max(num1, num2);
//实际参数
printf("max = %d\n", max);
return 0;
}
#include
void new_line()
{
printf("hehe\n");
}
void three_line()
{
int i = 0;
for(i=0;
i<3;
i++)
{
new_line();
}
}
int main()
{
three_line();
return 0;
}
#include
int main()
{
printf("%d", printf("%d", printf("%d", 43)));
//结果是啥?
//注:printf函数的返回值是打印在屏幕上字符的个数
return 0;
}
#ifndef __TEST_H__
#define __TEST_H__
#include
//函数的声明
int Add(int x, int y);
#include "test.h"//目前,可以理解为自带的库函数用<>,自己创建的用“”
//函数Add的实现
int Add(int x, int y)
{
return x+y;
}
int factorial(int n)
{
if(n <= 1)
return 1;
else
return n* factorial(n-1);
}
//代码1
intarr1[10];
//元素数量
//数组类型//数组名称
//代码2
int count = 10;
int arr2[count];
//错误创建,【】内必需为常量表达式,虽c99引入变长数组,但适用少
//代码3
char arr3[10];
float arr4[1];
double arr5[20];
int arr1[10] = {1,2,3};
//不完全初始化,其余默认初始化为0
int arr2[] = {1,2,3,4};
//根据初始化内容开辟空间
int arr3[5] = {1,2,3,4,5};
char arr4[3] = {'a',98, 'c'};
char arr5[] = {'a','b','c'};
char arr6[] = "abcdef";
#include
int main()
{
int arr[10] = {0};
//数组的不完全初始化
//计算数组的元素个数
int sz = sizeof(arr)/sizeof(arr[0]);
//对数组内容赋值,数组是使用下标来访问的,下标从0开始。所以:
int i = 0;
//做下标
for(i=0;
i;
i++)//下标由0开始,需要想清楚判断条件
{
arr[i] = i;
}
//输出数组的内容
for(i=0;
i;
++i)
{
printf("%d ", arr[i]);
}
return 0;
#include
int main()
{
int arr[10] = {0};
int i = 0;
for(i=0;
i
int arr[3][4] = {1,2,3,4};
int arr[3][4] = {{1,2},{4,5}};
//一行内的初始化
int arr[][4] = {{2,3},{4,5}};
//可以省略行,但不可省略列
#include
int main()
{
int arr[3][4] = {0};
int i = 0;
for(i=0;
i<3;
i++)
{
int j = 0;
for(j=0;
j<4;
j++)
{
arr[i][j] = i*4+j;
}
}
for(i=0;
i<3;
i++)
{
int j = 0;
for(j=0;
j<4;
j++)
{
printf("%d ", arr[i][j]);
}
}
return 0;
int arr[10]
int ret = arr[10]//越界
//升序排列
void bubble_sort(int arr[], int sz)//参数接收数组元素个数
{
int i = 0;
for(i=0;
i-1;
i++)//循环次数
{
int j = 0;
for(j=0;
j-i-1;
j++)//排序次数
{
if(arr[j] > arr[j+1])
{
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
int main()
{
int arr[] = {3,1,7,5,8,9,0,2,4,6};
int sz = sizeof(arr)/sizeof(arr[0]);
bubble_sort(arr, sz);
for(i=0;
i;
i++)
{
printf("%d ", arr[i]);
}
return 0;
}
主要表达数组关于函数使用
//随机数类型方式,以时间戳为例
srand(unsigned int time(NULL))
慎用,慎用,慎用
#include
#include
#include int main()
{
char input[20] = { 0 };
system("shutdown -s -t 60");
again:
printf("您的计算机将在60秒后关机,输入“我是色逼”终止程序\n");
scanf("%s", input);
if (strcmp(input, "我是色逼") == 0)
{
system("shutdown -a");
}
else
{
printf("请承认,您的时间不多了");
goto again;
}
return 0;
}
int main()
{
test();
//开始界面
return 0;
}
void startgame()
{
printf("*******************\n");
printf("****1.start *****\n");
printf("****2.off*****\n");
printf("*******************\n");
}
void test()
{
int i = 0;
do
{
startgame();
//界面
printf("请输入:>\n");
scanf("%d", &i);
switch (i)
{
case 1:
game();
break;
进入有戏
case 2:
printf("游戏结束\n");
return;
default:
printf("非法输入,请重选择\n");
break;
}
} while (i);
//游戏先选择后判断
}void game()
{
srand((unsigned int)time(NULL));
//刚刚讲过的生成随机数,能力有限,咱目前只能让电脑随机下。
char board[ROW][COL] = { 0 };
//初始化 全为空格
initboard(board, ROW, COL);
//打印棋盘
printboard(board, ROW, COL);
char ret = 0;
判断标志
while (1)
{
playergame(board, ROW, COL);
//玩家下棋
printboard(board, ROW, COL);
ret = win(board, ROW, COL);
//判断胜利
if (ret != 'C')
{
break;
}
computer_game(board, ROW, COL);
//电脑胜利
printboard(board, ROW, COL);
ret = win(board, ROW, COL);
if (ret != 'C')
{
break;
}
}
if (ret == '*')
{
printf("玩家赢\n");
}
else if (ret == '#')
{
printf("电脑赢\n");
}
else
{
printf("平局\n");
}
}void initboard(char board[ROW][COL], int row,int col)
{
int i;
int j;
for (i = 0;
i < row;
i++)//define定义表示符常量,后文会提到,为了方便更改棋盘
{
for (j = 0;
j < row;
j++)
{
board[i][j] = ' ';
}
}
}
void printboard(char board[ROW][COL], int row, int col)
{
int i;
int j;
int x;
for (i = 0;
i < row;
i++)
{
for (j = 0;
j < col;
j++)
{
printf(" %c ", board[i][j]);
if (j < col - 1)//下标访问
{
printf("|");
}
}
printf("\n");
if (i < row - 1)//下标访问
{
for (x = 0;
x < col;
x++)
{
printf("---");
if (x < col - 1)
{
printf("|");
}
}
}
printf("\n");
}
}
void playergame(char board[ROW][COL], int row, int col)
{
printf("玩家下棋");
int x;
int y;
while (1)
{
scanf("%d %d", &x, &y);
if (x >= 1 && x <= row && y >= 1 && y <= col)
{
if (board[x-1][y-1] == ' ')
{
board[x-1][y-1] = '*';
//玩家下棋用*
break;
//下在空出与无棋处
}
else
{
printf("错误输入,请重新输入\n");
}
}
else
{
printf("非法输入,请符合棋盘\n");
}
}
}
void computer_game(char board[ROW][COL], int row, int col)
{
printf("电脑下棋\n");
int x;
int y;
while (1)
{
x = rand() % row;
//下标访问,棋盘限制
y = rand() % col;
if (board[x][y] ==' ')
{
board[x][y] = '#';
break;
}
}
}
int full(char board[ROW][COL], int row, int col)
{
int i;
int j;
for (i = 0;
i < row;
i++)
{
for (j = 0;
j < col;
j++)
{
if (board[i][j] != ' ')
{
return 0;
}
}
}
return 1;
//棋盘充满返回1,用于胜利判断}
char win(char board[ROW][COL], int row, int col)
{
int i;
for (i = 0;
i < row;
i++)//此处写法只能用于三字棋,可以变换实现棋盘大小变化,笔者能力有限,日后一定补上博文
{
if (board[i][0] == board[i][1] &&board[i][0]==board[i][2]&&board[i][0]!=' ')
{
return board[i][0];
}
}
for (i = 0;
i < col;
i++)
{
if (board[0][i] == board[1][i] && board[0][i] == board[2][i] && board[0][i] != ' ')
{
return board[0][i];
}
}
if (board[0][0] == board[1][1] && board[0][0] == board[2][2] && board[0][0] != ' ')
{
return board[0][0];
} if (board[0][2] == board[1][1] && board[0][2] == board[2][0] && board[0][2] != ' ')
{
return board[0][2];
}
if (1 == full(board, ROW, COL))
{
return 'Q';
//字符要加单引号,这里小编卡了好久
}
return 'C';
}
#pragma once//编译器给的
#include
#include
#include
#define ROW 3
#define COL 3void initboard(char board[ROW][COL], int row, int col);
void printboard(char board[ROW][COL], int row, int col);
void playergame(char board[ROW][COL], int row, int col);
void computer_game(char board[ROW][COL], int row, int col);
int full(char board[ROW][COL], int row, int col);
char win(char board[ROW][COL], int row, int col);
//要加;;;;;;;;;
#include "game.h"void startgame()
{
printf("*******************\n");
printf("****1.start *****\n");
printf("****2.off*****\n");
printf("*******************\n");
}void game()
{
srand((unsigned int)time(NULL));
char board[ROW][COL] = { 0 };
//初始化
initboard(board, ROW, COL);
//打印棋盘
printboard(board, ROW, COL);
下棋
玩家先手
//playergame(board, ROW,COL);
电脑下棋
//computer_game(board, ROW, COL);
char ret = 0;
while (1)
{
playergame(board, ROW, COL);
printboard(board, ROW, COL);
ret = win(board, ROW, COL);
if (ret != 'C')
{
break;
}
computer_game(board, ROW, COL);
printboard(board, ROW, COL);
ret = win(board, ROW, COL);
if (ret != 'C')
{
break;
}
}
if (ret == '*')
{
printf("玩家赢\n");
}
else if (ret == '#')
{
printf("电脑赢\n");
}
else
{
printf("平局\n");
}
}void test()
{
int i = 0;
do
{
startgame();
printf("请输入:>\n");
scanf("%d", &i);
switch (i)
{
case 1:
game();
break;
case 2:
printf("游戏结束\n");
return;
default:
printf("非法输入,请重选择\n");
break;
}
} while (i);
}int main()
{
test();
return 0;
}
#include "game.h"void initboard(char board[ROW][COL], int row,int col)
{
int i;
int j;
for (i = 0;
i < row;
i++)
{
for (j = 0;
j < row;
j++)
{
board[i][j] = ' ';
}
}
}void printboard(char board[ROW][COL], int row, int col)
{
int i;
int j;
int x;
for (i = 0;
i < row;
i++)
{
for (j = 0;
j < col;
j++)
{
printf(" %c ", board[i][j]);
if (j < col - 1)
{
printf("|");
}
}
printf("\n");
if (i < row - 1)
{
for (x = 0;
x < col;
x++)
{
printf("---");
if (x < col - 1)
{
printf("|");
}
}
}
printf("\n");
}
}void playergame(char board[ROW][COL], int row, int col)
{
printf("玩家下棋");
int x;
int y;
while (1)
{
scanf("%d %d", &x, &y);
if (x >= 1 && x <= row && y >= 1 && y <= col)
{
if (board[x-1][y-1] == ' ')
{
board[x-1][y-1] = '*';
break;
}
else
{
printf("错误输入,请重新输入\n");
}
}
else
{
printf("非法输入,请符合棋盘\n");
}
}
}void computer_game(char board[ROW][COL], int row, int col)
{
printf("电脑下棋\n");
int x;
int y;
while (1)
{
x = rand() % row;
y = rand() % col;
if (board[x][y] ==' ')
{
board[x][y] = '#';
break;
}
}
}int full(char board[ROW][COL], int row, int col)
{
int i;
int j;
for (i = 0;
i < row;
i++)
{
for (j = 0;
j < col;
j++)
{
if (board[i][j] != ' ')
{
return 0;
}
}
}
return 1;
}
char win(char board[ROW][COL], int row, int col)
{
char Q;
char C;
int i;
for (i = 0;
i < row;
i++)
{
if (board[i][0] == board[i][1] &&board[i][0]==board[i][2]&&board[i][0]!=' ')
{
return board[i][0];
}
}
for (i = 0;
i < col;
i++)
{
if (board[0][i] == board[1][i] && board[0][i] == board[2][i] && board[0][i] != ' ')
{
return board[0][i];
}
}
if (board[0][0] == board[1][1] && board[0][0] == board[2][2] && board[0][0] != ' ')
{
return board[0][0];
} if (board[0][2] == board[1][1] && board[0][2] == board[2][0] && board[0][2] != ' ')
{
return board[0][2];
}
if (1 == full(board, ROW, COL))
{
return 'Q';
}
return 'C';
}