C语言学习-翁凯(第十三章笔记)

本章节主要介绍了C语言中的格式化输入输出,包括scanf和printf的使用及返回值的判断。接着讨论了文件输入输出,特别是二进制文件的读写,分析了文本文件和二进制文件的优劣。此外,还详细讲解了位运算,如按位与、按位或、按位取反、按位异或以及移位运算,包括左移和右移操作。最后,提到了位段的概念,它是将int的若干位组合成结构以便访问。
摘要由CSDN通过智能技术生成

C语言学习-翁凯(第十三章笔记)

C语言-第十三章

13.1.1 格式化输入输出

格式化输入输出
  • printf
    • %[flags][width][.prec][hIL]type
  • scanf
    • %[flag]type
printf: %[flags][width][.prec][hIL]type
Flag 含义
- 左对齐
+ 在前面放+或-
(space) 正数留空
0 0填充
width或prec 含义
number 最小字符数
* 下一个参数是字符数
.number 小数点后的位数
.* 下一个参数是小数点后的位数
类型修饰 含义
hh 单个字节
h short
l long
ll long long
L long double
type 用于 type 用于
i或d int g float
u unsigned int G float
o 八进制 a或A 十六进制浮点
x 十六进制 c char
X 字母大写的十六进制 s 字符串
f或F float,6 p 指针
e或E 指数 n 读入/写出的个数
scanf: %[flag]type
flag 含义 flag 含义
* 跳过 l long,double
数字 最大字符数 ll long long
hh char L long double
h short
[^.]
  • //$GPRMC,004319.00,A,3016.98468,N,12006.39211,E,0.047,130909,D*79
  • scanf("%*[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,]",sTime,sAV,sLati,&sNW,sLong,&sEW,sSpeed,sAngle,sDate);
printf和scanf的返回值
  • 读入的项目数
  • 输出的字符数
  • 在要求严格的程序中,应该判断每次调用scanf或printf的返回值,从而了解程序运行组是否存在问题

13.1.2 文件输入输出

文件输入输出
  • 用>和<做重定向
FILE
  • FILE* fopen(cons
Tic Tac Toe,也称为井字棋,是一个经典的两人对战策略游戏,玩家轮流在3x3的网格上放置他们的标记(通常是X和O)。在C语言中,翁凯版本可能会涉及到二维数组、循环控制、条件判断以及用户输入处理。 以下是创建一个简单的Tic Tac Toe游戏的基本步骤: 1. 定义一个3x3的二维字符数组,代表游戏板。 2. 创建一个函数`drawBoard()`来显示当前的游戏状态。 3. `playGame()`函数负责游戏的主要流程,包括接收玩家输入,更新游戏板,并检查是否获胜或平局。 4. 使用嵌套循环遍历游戏板,让两个玩家交替操作。 5. 添加条件判断来检测胜利(行、列、对角线上的三个同色格子),并提示赢家。 6. 如果没有赢家并且所有位置都被填满,判定为平局。 下面是一个非常简化的C语言Tic Tac Toe游戏示例(仅包含核心部分,不包含完整的源码): ```c #include <stdio.h> #define SIZE 3 // 检查某一行/列/对角线上是否有连续的符号 int checkWin(char board[SIZE][SIZE], char symbol) { for (int i = 0; i < SIZE; ++i) { if (board[i][0] == symbol && board[i][1] == symbol && board[i][2] == symbol) return 1; if (board[0][i] == symbol && board[1][i] == symbol && board[2][i] == symbol) return 1; if (board[0][0] == symbol && board[1][1] == symbol && board[2][2] == symbol) return 1; if (board[0][2] == symbol && board[1][1] == symbol && board[2][0] == symbol) return 1; } return 0; } void drawBoard(char board[SIZE][SIZE]) { // 打印游戏板 //... } int main() { char board[SIZE][SIZE] = { {' ' } }; int player = 'X'; while (true) { drawBoard(board); printf("Player %c's turn: ", player); int row, col; scanf("%d%d", &row, &col); // 输入坐标 if (board[row][col] != ' ') continue; board[row][col] = player; if (checkWin(board, player)) { printf("Player %c wins!\n", player); break; } // 切换玩家 player = (player == 'X') ? 'O' : 'X'; } return 0; } ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾叶King

非常感谢您的支持和认同!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值