【C语言篇】☞ 9. char类型、案例
char类型
编码方案
ASCII: 'A'== 65 'a' == 97 '0' == 48
GB2312: 2Bytes对应一个汉字
陶喆 *** (这种编码没有“喆”和“*”字)
GBK: 2Bytes对应一个汉字
GB18030:UTF-8: 可变长, 1Bytes, 2Bytes,3Bytes,4Bytes
特殊字符
\n 换行 \b 退格 ← \r 回车 \ 转义符 \t 制表符
案例
/** 打印九宫格 */
#include <stdio.h> #include <assert.h> int main() { printf("请输入一个奇数:"); int n; scanf("%d", &n); //断言,判断一个条件是否成立,如果不成立,程序退出 assert(n%2 != 0); int nine[n][n];//保存九宫格的数组 for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ nine[i][j] = 0; } } //每次循环,将i放到该放的位置 int row = 0;//行,初始为最上面一行 int col = n/2; //列,初始为最中间一列 for(int i=1; i<=n*n; i++){ nine[row][col] = i; //计算下一个数要放的行和列 //45度向上走 row--; col++; //如果都越界,放原先的下面 if(row<0 && col == n){ row += 2; col--; } //如果行越界,放最下面 else if(row<0){ row = n-1; } //如果列越界,放最左面 else if(col == n){ col = 0; } //如果冲突,放原先的下面 else if(nine[row][col] != 0){ row += 2; col--; } } //打印 for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ printf("%d ", nine[i][j]); } printf("\n"); } return 0; } |