新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > DEV C++九宮格的解法源程序

        DEV C++九宮格的解法源程序

        作者: 時間:2016-12-01 來源:網絡 收藏
        下面是源碼VS2010壞了還沒來得及重裝用DEV-C++++弄的,注釋我寫的很詳細,因為E文很爛所以變量名很有中國特色,求理解.................

        #include
        #include
        ////////////////////////////////////////////////////////////////////////////////
        int main(int argc, char *argv[])
        {
        int x=0; //行
        int y=0; //列
        int q=1; //循環標記
        int sz;
        int shuru; //輸入九宮格的行列數必須為>3的奇數
        //判斷輸入值是否正確
        for(;q;)
        {
        printf("請輸入要生成的九宮格的行列數:");
        scanf("%d",&shuru);
        if(shuru<=3||shuru>=100) printf("輸入的行列數過大或過小,請重新輸入!");
        else if(shuru%2==0) printf("您輸入的不是一個奇數,請輸入一個奇數!");
        else q=0;
        }
        int Gsz[shuru][shuru]; //九宮格布局數組
        for(y=0;y for(x=0;x Gsz[y][x]=0; //九宮格布局數組初始化
        ///////////////////////////////////////////////////////////////////////////////
        x=0;
        y=0;
        int s=1;
        //第一步
        //首先在第一行中間寫下1
        x=(shuru-1)/2;
        Gsz[y][x]=s;
        s++;
        for(q=1;q==1;)
        {
        //程序關鍵轉向處
        if(y==0&&x==(shuru-1))
        {
        y++;
        Gsz[y][x]=s;
        s++;
        y=0;
        x=0;
        Gsz[y][x]=s;
        s++;
        q=0;
        }else
        {
        //然后向下移動到最底下,向右移一格寫
        y=shuru-1;
        x++;
        Gsz[y][x]=s;
        s++;
        //然后一下向右上方寫到最邊處
        for(;x<(shuru-1);)
        {
        y--;
        x++;
        Gsz[y][x]=s;
        s++;
        }
        //然后平移到最左邊,向上移動一格寫
        y--;
        x=0;
        Gsz[y][x]=s;
        s++;
        //向右上方寫。遇到數字后向下寫
        y--;
        x++;
        for(;Gsz[y][x]==0;)
        {
        Gsz[y][x]=s;
        s++;
        y--;
        x++;
        }
        y++;x--; //還原循環最后一次的無效數值變化
        //向下寫一格
        y++;
        Gsz[y][x]=s;
        s++;
        //繼續向右上寫直到最邊處
        for(;y>0;)
        {
        y--;
        x++;
        Gsz[y][x]=s;
        s++;
        }
        }
        }
        //第二步
        for(;s<(shuru*shuru);)
        {
        //向下移動到最底下,向右移一格寫
        y=shuru-1;
        x++;
        Gsz[y][x]=s;
        s++;
        //向右上方寫。遇到數字后向下寫
        y--;
        x++;
        for(;Gsz[y][x]==0;)
        {
        Gsz[y][x]=s;
        s++;
        y--;
        x++;
        }
        y++;x--; //還原循環最后一次的無效數值變化
        //向下寫一格
        y++;
        Gsz[y][x]=s;
        s++;
        //繼續向右上寫直到最邊處
        for(;x<(shuru-1);)
        {
        y--;
        x++;
        Gsz[y][x]=s;
        s++;
        }
        //然后平移到最左邊,向上移動一格寫
        y--;
        x=0;
        Gsz[y][x]=s;
        s++;
        //繼續向右上寫直到最邊處
        for(;y>0;)
        {
        y--;
        x++;
        Gsz[y][x]=s;
        s++;
        }
        }
        Gsz[(shuru-1)][(shuru-1)/2]=s; //寫最后一個數值
        ////////////////////////////////////////////////////////////////////////////////
        int ax=0;
        //屏幕輸出
        for(y=0;y {
        for(x=0;x {
        printf("%d",Gsz[y][x]);
        if(Gsz[y][x]<=9) printf(" ");
        else printf(" ");
        }
        for(q=0;q printf(" 此列和為:%d",ax );ax=0;
        printf("");
        }
        for(x=0,y=0,ax=0;y printf("斜角1的和為:%d",ax);
        for(x=shuru-1,y=0,ax=0;y printf("斜角2的和為:%d",ax);
        printf("");
        system("PAUSE");
        return 0;
        }

        本文引用地址:http://www.104case.com/article/201612/324261.htm


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 靖边县| 太白县| 通道| 乌兰县| 定襄县| 陆良县| 磴口县| 青岛市| 临夏市| 清原| 忻州市| 锦州市| 丰镇市| 安多县| 元阳县| 筠连县| 日土县| 会理县| 宜宾市| 京山县| 彰武县| 筠连县| 杭州市| 石泉县| 苍山县| 岚皋县| 舟山市| 布拖县| 大石桥市| 巧家县| 双辽市| 兴山县| 盐边县| 晋州市| 定南县| 定远县| 莱西市| 万年县| 新乡市| 长葛市| 龙泉市|