日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言STUDY

發(fā)布時間:2025/4/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言STUDY 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

函數(shù)聲明:
返回值類型 函數(shù)名(形參類型 變量名,類型 變量名,...);
1.一般根據(jù)數(shù)據(jù)的功能來取函數(shù)名,全部小寫單詞之間用
2.參數(shù)的個數(shù),類型由于函數(shù)的功能所需要的數(shù)據(jù)決定,被調(diào)用時由調(diào)用者提供,如果不需要則寫void。
3.返回值類型根據(jù)函數(shù)的結(jié)果類型決定,如果沒有返回值則寫void
4.如果函數(shù)的定義出現(xiàn)在調(diào)用之前,聲明可以省略
5.函數(shù)聲明時,參數(shù)的變量名可以省略
6.如果不寫返回值,默認為int類型
函數(shù)定義:
返回值類型 函數(shù)名(類型 變量名,類型 變量名....)、
{
函數(shù)體;
return 數(shù)據(jù);
}
函數(shù)的調(diào)用:
函數(shù)(數(shù)據(jù)1,數(shù)據(jù)2...);
返回值會在函數(shù)執(zhí)行完成后放置在調(diào)用位置,處理方法
1、存儲在變量中,長期使用。
2、立即使用,可以顯示或參與運算。

輸出緩沖區(qū):
當使用printf/puts/putchar,等函數(shù)顯示數(shù)據(jù)時,并不會直接顯示在屏幕上,
而是先放入到緩沖區(qū)中(提高程序的運行效率),當滿足一些條件時才會顯示在屏幕上;
1.遇到\n
2.從輸出轉(zhuǎn)換到輸入狀態(tài)
3.程序結(jié)束
4.當緩沖區(qū)滿4k
5.手動刷新 fflush(stdout);
輸入緩沖區(qū):
在終端中輸入數(shù)據(jù)會先存儲到輸入緩沖區(qū)中沒然后在根據(jù)占位解析成對應(yīng)的數(shù)據(jù),如果前一次輸入的數(shù)據(jù)有殘留的垃圾,會影響后續(xù)數(shù)據(jù)的輸入。
1.輸入字符時前一次的數(shù)據(jù)會殘留一個空格或‘\n’,解決方法在之前加一個空格
2.如果輸入時有若干個垃圾數(shù)據(jù),會影響接下來的所有數(shù)據(jù)的輸入
1.使用正則表達式,注意:必須確定有垃圾數(shù)據(jù)時再使用
scanf(“%[^\n”);//從緩沖區(qū)中獲取數(shù)據(jù)但不存儲到變量中
scanf("%*c");
2.設(shè)置緩沖區(qū)中的位置指針
stdin->_IO_read_ptr 開始位置
stdin->_IO_read_end 結(jié)束位置

stdin->_IO_read_ptr=stdin->_IO_read_end;

五子棋:
分析數(shù)據(jù):
char board[15][15];棋盤
char key_x,key_y;接受棋子坐標。
char role;記錄角色。
業(yè)務(wù)邏輯:
1、初始化棋盤,所有位置賦值為“*”;
while(turn)
{
2、清理屏幕,顯示棋盤。
3、請輸入棋盤的坐標
檢查坐標是否合法、是否已有棋子
4、檢查是否形成五子
break;
5、切換角色
}
代碼:

include <stdio.h>

include <stdlib.h>

include <stdbool.h>

include <getch.h>

char board[15][15];
char key_x=7,key_y=7;
char role = '@';

// 棋盤初始化
void init_board(void);
// 顯示棋盤
void show_board(void);
// 落子
void get_key(void);
// 檢查是否有五子
bool check_key(void);

int main()
{
init_board();
while(true)
{
show_board();
get_key();
// 檢查五子
if(check_key())
{
show_board();
printf("恭喜%c勝利,游戲結(jié)束\n",role);
break;
}
// 角色切換
role = role=='@'?'#':'@';
}
}

// 棋盤初始化
void init_board(void)
{
for(int x=0; x<15; x++)
{
for(int y=0; y<15; y++)
{
board[x][y] = '*';
}
}
}

// 顯示棋盤
void show_board(void)
{
system("clear");
for(int x=0; x<15; x++)
{
for(int y=0; y<15; y++)
{
printf(" %c",board[x][y]);
}
printf("\n");
}
}

// 落子
void get_key(void)
{
/
printf("請%c落子,輸入棋子坐標:",role);
scanf("%hhd%hhd",&key_x,&key_y);
if(key_x < 15 && key_x >= 0 && key_y < 15 && key_x >= 0 && '' == board[key_x][key_y])
{
board[key_x][key_y] = role;
}
/
printf(" -----------請%c落子-----------\n",role);
while(true)
{
// 設(shè)置光標的位置
printf("\33[%hhd;%hhdH",key_x+1,(key_y+1)2);
switch(getch())
{
case 183:key_x > 0 && key_x--; break;
case 184:key_x <14 && key_x++; break;
case 185:key_y <14 && key_y++; break;
case 186:key_y > 0 && key_y--; break;
case 10:if('*' == board[key_x][key_y])
{
board[key_x][key_y] = role;
return;
}
}
}
}

// 檢查是否有五子
bool check_key(void)
{
// 用于記錄相同棋子的數(shù)量
int count = 0;
// 向左上查找
for(int x=key_x-1,y=key_y-1; x>=0&&y>=0; x--,y--)
{
if(board[x][y] != board[key_x][key_y])
{
break;
}
count++;
}
// 向右下查找
for(int x=key_x+1,y=key_y+1; x<15&&y<15; x++,y++)
{
if(board[x][y] != board[key_x][key_y])
{
break;
}
count++;
}
if(count >= 4)
{
return true;
}

return false;

}

轉(zhuǎn)載于:https://www.cnblogs.com/zhangjinguang/p/10845463.html

總結(jié)

以上是生活随笔為你收集整理的C语言STUDY的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。