【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;

}

 

 

posted @ 2017-02-14 15:02  专注·精彩  阅读(793)  评论(0编辑  收藏  举报