成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

第7章函數(shù)c語(yǔ)言 c語(yǔ)言函數(shù)詳解

C語(yǔ)言目錄有什么

第1章 C語(yǔ)言基礎(chǔ)知識(shí)

創(chuàng)新互聯(lián)建站成立于2013年,先為南京等服務(wù)建站,南京等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為南京企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

1.1 C語(yǔ)言概述

1.1.1 C程序的結(jié)構(gòu)

1.1.2 C程序的上機(jī)步拍搜驟

1.2 C語(yǔ)言的基本數(shù)據(jù)類型

1.2.1 標(biāo)識(shí)符

1.2.2 常量

1.2.3 變量

1.3 基本輸入/輸出函數(shù)

1.3.1 格式化輸出函數(shù)

1.3.2 格式化輸入函數(shù)

1.3.3 字符輸入/輸出函數(shù)

1.4 運(yùn)算符和表達(dá)式

1.4.1 算術(shù)運(yùn)算符與算術(shù)表達(dá)式

1.4.2 賦值運(yùn)算符與賦值表達(dá)式

1.4.3 逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式

1.4.4 簡(jiǎn)單的位運(yùn)算與位表達(dá)式

1.4.5 運(yùn)算符的優(yōu)先級(jí)

1.5 類型轉(zhuǎn)換

1.5.1 隱式類型轉(zhuǎn)換

1.5.2 顯式類型轉(zhuǎn)換

1.6 C程序展示

本章小結(jié)

習(xí)題

第2章 算法

2.1 算法的概念

2.2 利用計(jì)算機(jī)求解問題的一般過程

2.3 算法的描述

2.3.1 用自然語(yǔ)言描述算法

2.3.2 用流程圖描述算法

2.3.3 用N-S流程圖描述算法

2.3.4 用偽代碼描述算法

2.3.5 用計(jì)算機(jī)語(yǔ)言描述算法

2.4 算法舉例

本章小結(jié)

習(xí)題

第3章 C程序的控制結(jié)構(gòu)

3.1 分支結(jié)構(gòu)

3.1.1 關(guān)系表達(dá)式和邏輯表達(dá)式

3.1.2 if語(yǔ)句

3.1.3 條件表達(dá)式

3.1.4 switch語(yǔ)句

3.2 循環(huán)結(jié)構(gòu)

3.2.1 while語(yǔ)句

3.2.2 do…while語(yǔ)句

3.2.3 for語(yǔ)句

3.2.4 break語(yǔ)句和continue語(yǔ)句

3.2.5 循環(huán)的嵌套

3.3 綜合應(yīng)用

本章小結(jié)

習(xí)題

第4章 數(shù)組與指針

4.1 數(shù)組

4.1.1 一維數(shù)組

4.1.2 二維數(shù)組

4.1.3 字符數(shù)組

4.2 指針

4.2.1 指針變量的定義與相關(guān)運(yùn)算

4.2.2 指針與一維數(shù)組

4.2.3 指針與二維數(shù)組

4.2.4 指針數(shù)組

4.2.5 指針與字符串

4.3 動(dòng)態(tài)內(nèi)存分哪纖配

4.4 數(shù)組與指針綜合應(yīng)用

4.4.1 單詞統(tǒng)計(jì)

4.4.2 排序

4.4.3 查找

4.4.4 進(jìn)制轉(zhuǎn)換

4.4.5 二維數(shù)組應(yīng)用

本章襲緩歷小結(jié)

習(xí)題

第5章 函數(shù)

5.1 函數(shù)概述

5.1.1 函數(shù)的定義

5.1.2 函數(shù)的聲明和調(diào)用

5.2 函數(shù)參數(shù)的傳遞方式

5.2.1 值傳遞方式

5.2.2 地址傳遞方式

5.3 函數(shù)的嵌套與遞歸

5.3.1 函數(shù)的嵌套調(diào)用

5.3.2 函數(shù)的遞歸調(diào)用

5.4 變量的作用域與存儲(chǔ)類型

5.4.1 變量的作用域

5.4.2 變量的存儲(chǔ)類型

5.5 內(nèi)部函數(shù)和外部函數(shù)

5.5.1 內(nèi)部函數(shù)

5.5.2 外部函數(shù)

5.6 編譯預(yù)處理

5.6.1 宏定義

5.6.2 文件包含

5.6.3 條件編譯

5.7 標(biāo)準(zhǔn)函數(shù)簡(jiǎn)介

5.7.1 字符串處理函數(shù)

5.7.2 字符處理函數(shù)

5.7.3 動(dòng)態(tài)地址分配函數(shù)

5.7.4 數(shù)學(xué)函數(shù)

5.7.5 數(shù)據(jù)類型轉(zhuǎn)換函數(shù)

5.7.6 其他函數(shù)

5.8 函數(shù)綜合應(yīng)用案例

5.8.1 字符串處理函數(shù)應(yīng)用

5.8.2 函數(shù)指針應(yīng)用

5.8.3 遞歸算法應(yīng)用

本章小結(jié)

習(xí)題

第6章 結(jié)構(gòu)體與共用體

6.1 結(jié)構(gòu)體類型

6.1.1 結(jié)構(gòu)體類型的定義和使用

6.1.2 指向結(jié)構(gòu)體類型數(shù)據(jù)的指針

6.2 共用體與枚舉類型

6.2.1 共用體

6.2.2 枚舉類型

6.3 鏈表

6.4 結(jié)構(gòu)體綜合應(yīng)用

6.4.1 學(xué)生成績(jī)查詢

6.4.2 個(gè)人通訊錄

本章小結(jié)

習(xí)題

第7章 文件操作

7.1 文件概述

7.1.1 文件的概念

7.1.2 文件類型指針

7.1.3 文件的操作

7.2 文件的打開和關(guān)閉

7.2.1 文件打開函數(shù)

7.2.2 文件關(guān)閉函數(shù)

7.3 文件的順序讀/寫

7.3.1 字符讀/寫函數(shù)

7.3.2 字符串讀/寫函數(shù)

7.3.3 格式化讀/寫函數(shù)

7.3.4 二進(jìn)制文件讀/寫函數(shù)

7.4 文件的隨機(jī)讀/寫

7.5 文件狀態(tài)檢查函數(shù)

7.5.1 文件讀/寫結(jié)束檢查函數(shù)

7.5.2 文件出錯(cuò)檢查函數(shù)

7.5.3 文件出錯(cuò)復(fù)位函數(shù)

本章小結(jié)

習(xí)題

第8章 C語(yǔ)言課程設(shè)計(jì)

8.1 C語(yǔ)言課程設(shè)計(jì)實(shí)施方案

8.2 C語(yǔ)言課程設(shè)計(jì)任務(wù)書1

8.3 C語(yǔ)言課程設(shè)計(jì)任務(wù)書2

8.4 C語(yǔ)言課程設(shè)計(jì)任務(wù)書3

8.5 C語(yǔ)言課程設(shè)計(jì)任務(wù)書4

8.6 C語(yǔ)言課程設(shè)計(jì)任務(wù)書5

附錄A 常用字符與ASCII(十進(jìn)制)對(duì)照表

附錄B C語(yǔ)言課程設(shè)計(jì)模板

參考文獻(xiàn)

c語(yǔ)言程序設(shè)計(jì)蘇小紅版第七章課后實(shí)驗(yàn)答案

不知道你說的是不是這一次實(shí)驗(yàn)

2.2.7??實(shí)驗(yàn)7:二維數(shù)組和函數(shù)綜合編程練習(xí)

成績(jī)排名次

某班期末考試科目為數(shù)學(xué)(MT)、英語(yǔ)(EN)和物理(PH),有最多不超過30人參加考試??荚嚭笠螅?/p>

(1)計(jì)算每個(gè)學(xué)生的總分和平均分;

(2)按總分成績(jī)由高到低排出成績(jī)的名次;

(3)打印出名次表,表格內(nèi)包括學(xué)生編號(hào)、各科分?jǐn)?shù)、總分和平均分;

(4)任意輸入一個(gè)學(xué)號(hào),能夠查找出該學(xué)生在寬顫班級(jí)中的排名及其考試分?jǐn)?shù)。

【思考題】??請(qǐng)讀者思考如下問題。

①?如果增加一個(gè)要求:要求按照學(xué)生的學(xué)號(hào)由小到大對(duì)學(xué)號(hào)、成績(jī)等信息進(jìn)行舉巧銷排序,那么程序如何修改呢?

②?如果要求程序運(yùn)行后先打印出一個(gè)菜單,提示用戶選擇:成績(jī)錄入、成績(jī)排序、成績(jī)查找,在選擇某項(xiàng)功能后執(zhí)行相應(yīng)的操作,那么程序如何修改呢?

答案

#include ?stdio.h

#define STU 30

#define COURSE 3

void Input(long num[],int score[][COURSE],int n);

void GetSumAver(int score[][COURSE],int n,int sum[],float aver[]);

void Sort(long num[],int score[][COURSE],int n,int sum[],float aver[]);

void Print(long num[],int score[][COURSE],int n,int sum[],float aver[]);

int ?Search(long num[], int n, long x);

main()

{

int n, score[STU][COURSE], sum[STU], pos;

long num[STU], x;

float aver[STU];

printf("Please enter the total number of the students(n=30):");

scanf("%d", n); /*輸入?yún)⒓涌荚嚨膶W(xué)生人數(shù)*/

printf("Enter No. and score as: MT ?EN ?PH\n");

Input(num, score, n); /*輸入學(xué)生成績(jī)*/

GetSumAver(score, n, sum, aver); /*計(jì)算總分和平均分*/

printf("Before sort:\n");

Print(num, score, n, sum, aver);

Sort(num, score, n, sum, aver); /*排名次*/

printf("After sort:\n");

Print(num, score, n, sum, aver);

printf("Please enter searching number:");

scanf("%ld", x); /*以長(zhǎng)整型格式輸入待查找學(xué)生的學(xué)號(hào)*/

pos = Search(num, n, x); /*名次查詢*/

if (pos != -1)

{

printf("position:\t ?NO \t ?MT \t ?EN \t ?PH \t ?SUM \t AVER\n");

printf("%8d\t%4ld\t%4d\t%4d\t%4d\t%5d\t%5.0f\n",

? ? pos+1,num[pos], score[pos][0],score[pos][1],

? ? score[pos][2], sum[pos],aver[pos]);

}

else

{

printf("Not found!\n");

}

}

/* 函數(shù)功能:輸入某班學(xué)生期末考試三門課程成績(jī)

函正游數(shù)參數(shù):長(zhǎng)整型數(shù)組num,存放學(xué)生學(xué)號(hào)

? ? ? ?整型數(shù)組score,存放學(xué)生成績(jī)

? ?整型變量n,存放學(xué)生人數(shù)

函數(shù)返回值:無(wú)

*/

void Input(long num[], int score[][COURSE], int n)

{

int ?i, j;

for (i=0; in; i++)

{

scanf("%ld", num[i]);

for (j=0; jCOURSE; j++)

{

scanf("%d", score[i][j]);

}

}

}

/* 函數(shù)功能:計(jì)算每個(gè)學(xué)生的總分和平均分

函數(shù)參數(shù): 整型數(shù)組score,存放學(xué)生成績(jī)

? ? 整型變量n,存放學(xué)生人數(shù)

整型數(shù)組sum,計(jì)算得到的每個(gè)學(xué)生的總分

實(shí)型數(shù)組aver,計(jì)算得到的每個(gè)學(xué)生的平均分

函數(shù)返回值:無(wú)

*/

void GetSumAver(int score[][COURSE], int n, int sum[], float aver[])

{

int i, j;

for (i=0; in; i++)

{

sum[i] = 0;

for (j=0; jCOURSE; j++)

{

sum[i] = sum[i] + score[i][j];

}

aver[i] = (float)sum[i] / COURSE;

}

}

/* 函數(shù)功能:按總分成績(jī)由高到低排出成績(jī)的名次

函數(shù)參數(shù):長(zhǎng)整型數(shù)組num,存放學(xué)生學(xué)號(hào)

? ? ? ?整型數(shù)組score,存放學(xué)生成績(jī)

整型變量n,存放學(xué)生人數(shù)

整型數(shù)組sum,存放每個(gè)學(xué)生的總分

實(shí)型數(shù)組aver,存放每個(gè)學(xué)生的平均分

函數(shù)返回值:無(wú)

*/

void Sort(long num[],int score[][COURSE], int n, int sum[], float aver[])

{

int i, j, k, m;

int temp1;

long temp2;

float temp3;

for (i=0; in-1; i++)

{

k = i;

for (j=i+1; jn; j++)

{

if (sum[j] sum[k]) ?k = j;

}

if (k != i)

{

temp1 = sum[k]; ?sum[k] = sum[i]; ?sum[i] = temp1;

temp2 = num[k]; ?num[k] = num[i]; ?num[i] = temp2;

temp3 = aver[k]; ?aver[k] = aver[i]; ?aver[i] = temp3;

for (m=0; mCOURSE; m++)

{

temp1 = score[k][m];

score[k][m] = score[i][m];

score[i][m] = temp1;

}

}

}

}

/* 函數(shù)功能: 打印名次表,表格內(nèi)包括學(xué)生編號(hào)、各科分?jǐn)?shù)、總分和平均分

函數(shù)參數(shù): 長(zhǎng)整型數(shù)組num,存放學(xué)生學(xué)號(hào)

整型數(shù)組score,存放學(xué)生成績(jī)

整型變量n,存放學(xué)生人數(shù)

整型數(shù)組sum,存放每個(gè)學(xué)生的總分

實(shí)型數(shù)組aver,存放每個(gè)學(xué)生的平均分

函數(shù)返回值:無(wú)

*/

void Print(long num[], int score[][COURSE], int n,

int sum[], float aver[])

{

int ?i, j;

printf(" ?NO \t| ? MT \t ?EN \t PH \t SUM \t AVER\n");

printf("----------------------------------------------------\n");

for (i=0; in; i++)

{

printf("%ld\t| ", num[i]);

for (j=0; jCOURSE; j++)

{

printf("%4d\t", score[i][j]);

}

printf("%5d\t%5.0f\n", sum[i], aver[i]);

}

}

/* 函數(shù)功能:在學(xué)號(hào)數(shù)組中順序查找學(xué)生的學(xué)號(hào)

函數(shù)參數(shù):長(zhǎng)整型數(shù)組num,存放學(xué)生學(xué)號(hào)

? ? ? ?整型變量n,存放學(xué)生人數(shù)

長(zhǎng)整型變量x,存放待查找學(xué)生的學(xué)號(hào)

函數(shù)返回值:找到時(shí),返回學(xué)生學(xué)號(hào)在學(xué)號(hào)數(shù)組中的下標(biāo)位置,否則返回值-1

*/

int Search(long num[], int n, long x)

{

int ?i;

for (i=0; in; i++)

{

if (num[i] == x) ?return(i);

}

return (-1);

}

C語(yǔ)言教程的內(nèi)容是?

C語(yǔ)言學(xué)習(xí)從入門到精通的一套經(jīng)典視頻教程,本課程通過高清晰的視頻、概念詳解、實(shí)例精講、習(xí)題測(cè)試讓你很快的掌握C語(yǔ)言的相關(guān)知識(shí),并領(lǐng)略運(yùn)用到實(shí)例中去。在針對(duì)一些用戶認(rèn)為C語(yǔ)言比較難學(xué)的情況下,本課程從初中級(jí)用戶的角度出發(fā),進(jìn)行合理的內(nèi)容安排,突出學(xué)、練、用、鞏固相結(jié)合的特點(diǎn),以通俗易懂的語(yǔ)言,豐富多彩的實(shí)例,詳細(xì)介紹了使用C語(yǔ)言進(jìn)行程序開發(fā)應(yīng)該掌握的各方面知識(shí)。本課程主要給大家講解了C語(yǔ)言概述,算法,數(shù)據(jù)類型,運(yùn)算符與表達(dá)式,常用的數(shù)據(jù)輸入、輸出函數(shù),選擇結(jié)構(gòu)程序設(shè)計(jì),循環(huán)控制,數(shù)組,函數(shù),指針,結(jié)構(gòu)體和共用體,位運(yùn)算,預(yù)處理,模塊化編程,編程規(guī)范,C語(yǔ)言常見問題及分析,習(xí)題測(cè)試等內(nèi)容。所有知識(shí)都結(jié)合具體實(shí)例進(jìn)行介紹,涉及的程序代碼給出了詳細(xì)的講解,可以使讀者輕松領(lǐng)會(huì)C語(yǔ)言程序開發(fā)的精髓,快速提高開發(fā)技能。

課程內(nèi)容詳盡,實(shí)例豐富,非常適合作為單片機(jī)及編程初學(xué)者的學(xué)習(xí)課程,也可作為大中院校相關(guān)專業(yè)在校學(xué)生及畢業(yè)生的教學(xué)輔導(dǎo)課程、短期C語(yǔ)言培訓(xùn)課程,是C語(yǔ)言編程愛好者從入門到深入的經(jīng)典課程。

課程共分為15講,每節(jié)課的內(nèi)容大綱如下:

第1課 C語(yǔ)言概述

1、幾種常見的程序設(shè)計(jì)語(yǔ)言

2、C語(yǔ)言出現(xiàn)的歷史背景

3、C語(yǔ)言的特點(diǎn)

4、簡(jiǎn)單的C程序介紹

5、C程序的上機(jī)步驟

6、習(xí)題測(cè)試

第2課 程序的靈魂-算法

1、程序設(shè)計(jì)過程

2、算法的基本概念

3、算法的特征

4、算法的表示方法(流程圖)

5、結(jié)構(gòu)化程序設(shè)計(jì)方法

6、習(xí)題測(cè)試

第3課 C語(yǔ)言的數(shù)據(jù)類型

1、預(yù)備知識(shí)

2、C語(yǔ)言的數(shù)據(jù)類型

3、常量與變量

4、不同數(shù)據(jù)類型之間的轉(zhuǎn)換

5、運(yùn)算符號(hào)和表達(dá)

6、習(xí)題測(cè)試

第4課 C語(yǔ)言順序程序設(shè)計(jì)

1、C語(yǔ)句概述

2、賦值語(yǔ)句

3、數(shù)據(jù)的輸入輸出

4、字符數(shù)據(jù)耐歲蘆輸入輸出

5、格式輸入輸出

6、順序程序舉例

7、習(xí)題測(cè)試

第5課 C語(yǔ)言選擇程序設(shè)計(jì)

1、關(guān)系運(yùn)算符和關(guān)系表達(dá)式

2、邏輯運(yùn)算符和邏輯表達(dá)式

3、if 語(yǔ)句---條件判斷

4、條件運(yùn)算符

5、switch 語(yǔ)句

6、選擇程序舉例

7、習(xí)題測(cè)試

第6課 C語(yǔ)言的循環(huán)控制

1、概述

2、goto語(yǔ)句及與if語(yǔ)句構(gòu)成循環(huán)

3、while語(yǔ)句

4、do …while語(yǔ)句

5、for語(yǔ)句

6、循環(huán)的嵌套

7、幾種循環(huán)的比較

8、break語(yǔ)句和contiune語(yǔ)句

9、程序舉例

10、習(xí)題測(cè)試

第7課 C語(yǔ)言數(shù)組

1、一維數(shù)組

2、二維數(shù)組及多維數(shù)組

3、字符數(shù)組和字符串

4、程序舉例

5、習(xí)題測(cè)試

第8課 函數(shù)

1、概述

2、函數(shù)定義的一般格式

3、函數(shù)的返回值

4、函數(shù)的調(diào)用

5、函數(shù)參數(shù)及其傳遞方式

6、函昌帶數(shù)的嵌套與遞歸調(diào)用

7、數(shù)組作為函數(shù)參數(shù)

8、變量的存儲(chǔ)屬性

9、內(nèi)部函數(shù)和外部函數(shù)

10、習(xí)題測(cè)試

第9課 C語(yǔ)言預(yù)處理命令

1、編譯預(yù)處理

2、宏定義

3、文件包含

4、條件編譯

5、習(xí)題測(cè)試

第10課 指針

1、指針的概念

2、指針變量

3、指針與數(shù)組

4、指針與字符串

5、指針與函數(shù)

6、返回指針值的函數(shù)

7、指針數(shù)組和多級(jí)指針

8、習(xí)題測(cè)試

第11課 結(jié)構(gòu)體與共用體

1、結(jié)構(gòu)類型與結(jié)構(gòu)變量的定義

2、結(jié)構(gòu)變量的引用與初始化

5、結(jié)構(gòu)數(shù)組

6、指向結(jié)構(gòu)類型數(shù)據(jù)的指針

7、用指針處理鏈表

8、共用體

9、枚舉類型

10、用typedef定義別名

11、程序舉例

12、習(xí)題測(cè)試

第12課 位運(yùn)算

1、位運(yùn)算概述

2、位運(yùn)算符的使用方法

3、習(xí)題測(cè)試

第13課 單片機(jī)C語(yǔ)言的模塊化編程

1、模塊化編程的優(yōu)點(diǎn)

2、C語(yǔ)雀陸言源文件(*.c)文件和頭文件(*.h)的的作用

3、模塊化編程設(shè)計(jì)步驟

4、程序?qū)嵗?/p>

5、模塊化程序的移植

6、習(xí)題測(cè)試

第14課 C語(yǔ)言編程規(guī)范

1、編碼規(guī)范概述

2、編程排版規(guī)范

3、編程注釋規(guī)范

4、命名規(guī)則

5、可讀性規(guī)范

6、變量與結(jié)構(gòu)規(guī)范

7、函數(shù)與過程規(guī)范

8、編程效率規(guī)范

9、質(zhì)量保證規(guī)范

10、宏規(guī)范

11、代碼編輯

12、編譯

13、審查

14、代碼測(cè)試

15、維護(hù)

16、習(xí)題測(cè)試

第15課 C語(yǔ)言編程常見出錯(cuò)問題及分析

1、C語(yǔ)言的一些基本概念

2、位(bit)和字節(jié)(byte)

3、變量和數(shù)據(jù)存儲(chǔ)

4、數(shù)據(jù)文件

5、字符串操作

6、數(shù)組

7、指針和內(nèi)存分配

8、函數(shù)

9、編譯預(yù)處理

10、標(biāo)準(zhǔn)庫(kù)函數(shù)

11、系統(tǒng)調(diào)用

12、可移植性

13、編程風(fēng)格和標(biāo)準(zhǔn)

14、程序的編寫和編譯

15、調(diào)試

譚浩強(qiáng)的c語(yǔ)言第七章數(shù)組中有一道題:

對(duì)平面魔方的構(gòu)造,分為三種情況:N為奇數(shù)、N為4的倍數(shù)、N為其它偶數(shù)(4n+2的形式)

⑴ N 為奇數(shù)時(shí),最簡(jiǎn)單

(1) 將1放在第一行中間一列;

(2) 從2開始直到n×n止各數(shù)依次按下列規(guī)則存放:

按 45°方向行走,如向右上

每一個(gè)數(shù)存放的行比前一個(gè)數(shù)的行數(shù)減1,列數(shù)加1

(3) 如果行列范圍超出矩陣范圍,則回繞。

例如1在第1行,則2應(yīng)放在最下一行,列數(shù)同樣加1;

(4) 如果按上面規(guī)則確定的位置上已有數(shù),或上一個(gè)數(shù)是第1行第n列時(shí),

則把孫漏信下一個(gè)數(shù)放在上一個(gè)數(shù)的下面。

⑵ N為4的倍數(shù)時(shí)

采用對(duì)稱元素交換法。

首先把數(shù)1到n×n按從上至下,從左到右順序填入矩陣

然后將方陣的所有4×4子方陣中的兩對(duì)角線上位置的數(shù)關(guān)于方陣中心作對(duì)

稱交換,即a(i,j)與a(n+1-i,n+1-j)交換,所有其它位置上的數(shù)不變。

(或者將對(duì)角線不變,其它位置對(duì)稱交換也可)

⑶ N 為其它偶數(shù)時(shí)

當(dāng)n為非4倍數(shù)的偶數(shù)(即4n+2形)時(shí):首先把大方陣分解為4個(gè)奇數(shù)(2m+1階)子方陣。

按上述奇數(shù)階魔方給分解的4個(gè)子方陣對(duì)應(yīng)賦值

上左子陣最小(i),下右子陣次小(i+v),下左子陣最大(i+3v),上右子陣次大(i+2v)

即4個(gè)子方陣對(duì)應(yīng)元素相差v,其中v=n*n/4

四個(gè)子矩陣由小到大排列方式為 ① ③

④ ②

然后作相應(yīng)的元素交換:a(i,j)與a(i+u,j)在同一列做對(duì)應(yīng)交換(jt或jn-t+2),

a(t-1,0)與a(t+u-1,0);a(t-1,t-1)與a(t+u-1,t-1)兩對(duì)元素交換

其中u=n/2,t=(n+2)/4 上述交換使每行每列與兩對(duì)角線上元素之和相等。

snjsj 我的程序算法:

這個(gè)魔方陣的算法可以對(duì)除2以外的任意階數(shù)的方陣進(jìn)行輸出,結(jié)果保存在運(yùn)行程序的目則輪錄下面的搜謹(jǐn)Magic.txt文件中,用ie或者寫字板打開以保持格式的一致(主要是回車符在記事本中為黑方框,認(rèn)不出來)。當(dāng)然具體的程序中,有內(nèi)存空間以及變量范圍的約束,我試過了,100以內(nèi)的是可以的。

偶數(shù)階的算法都是建立在奇數(shù)階的基礎(chǔ)之上,設(shè)方陣的階數(shù)為n,則魔方陣常數(shù)(即每列每行以及對(duì)角線元素之和)為n*(n*n+1)/2。

請(qǐng)對(duì)照程序代碼看,否則可能看不懂,可以一邊看一邊用筆對(duì)小階的進(jìn)行演算。

先說奇數(shù)階的算法,這是最容易的算法:

n=2*m+1,m為自然數(shù)

1)將數(shù)字1填在(0,(n+1)/2) ;要注意c中是從下標(biāo)0開始

2)從左上往右下依次填。

3)由2),列的下標(biāo)出界(超過n-1)時(shí),行加1,以n為摸的余數(shù)為應(yīng)填的列數(shù);

4)由2),行的下標(biāo)出界(超過n-1)時(shí),列加1,以n為摸的余數(shù)為應(yīng)填的行數(shù);

5)由2),行列都未出界,但已添上其他數(shù),應(yīng)在當(dāng)前位置左橫移一個(gè)位置進(jìn)行填數(shù)。

然后是偶數(shù)階:

分兩種情況,一種是n%4==2,一種是n%4==0

前一種:n=2*(2*m+1),m為自然數(shù)

1)將n階方陣分為四個(gè)小魔方陣ABCD如下排列:

B C

D A

因?yàn)閚*n=4*(2*m+1)*(2*m+1),

記u=n/2=2*m+1,分為1~u*u,u*u+1~2*u*u,2*u*u+1~3*u*u,3*u*u+1~4*u*u

即在調(diào)用子函數(shù)的時(shí)候分別如下面?zhèn)鬟f參數(shù):

A(0),B(u*u),C(2*u*u),D(3*u*u)

分別在ABCD中按照前面的填法把奇數(shù)階填好(注意加上所傳參數(shù)作為基數(shù),每一個(gè)元素都要加上這個(gè)值),最后做如下交換:

(1)B中第0~(m-1)-1行中元素與C中相對(duì)應(yīng)元素交換

(2)D中第(n-1)-m+1~(n-1)共m行的每行中的元素與A中相對(duì)應(yīng)元素交換

(3)交換D:(u+m,m)與A中對(duì)應(yīng)元素(矩陣中心值)

(4)交換D:(n-1,m)與A中對(duì)應(yīng)元素(實(shí)際為矩陣最大值n*n)

所謂對(duì)應(yīng)位置,指相對(duì)于小魔方陣的左頂角的相對(duì)的行列位置

上面的這些你可以用數(shù)學(xué)進(jìn)行證明,利用魔方陣常數(shù)(注意n階的和u階的關(guān)系)

后一種:n=4*m,m為自然數(shù)

因?yàn)樾辛卸际?的倍數(shù),因而可以將整個(gè)矩陣分為每4*4的小矩陣。

先判斷一個(gè)數(shù)是否在劃為4*4小矩陣的對(duì)角線上,

如果在,則填該位置的數(shù)為n*n-i+1(i為該元素的相對(duì)位置,從1開始,比如n階的第s行第t個(gè)元素則其i=s*n+t)

如果不在,則填上i。

網(wǎng)頁(yè)題目:第7章函數(shù)c語(yǔ)言 c語(yǔ)言函數(shù)詳解
本文鏈接:http://jinyejixie.com/article4/ddpisie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、云服務(wù)器、響應(yīng)式網(wǎng)站面包屑導(dǎo)航、搜索引擎優(yōu)化、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
桓台县| 德昌县| 旌德县| 合阳县| 安徽省| 商水县| 银川市| 九龙县| 翁源县| 新津县| 九龙县| 北安市| 新晃| 从化市| 资源县| 海门市| 东乌珠穆沁旗| 海门市| 邛崃市| 清徐县| 南康市| 镇原县| 宣武区| 崇明县| 商河县| 陇西县| 顺义区| 同德县| 乌苏市| 牟定县| 达日县| 广平县| 富锦市| 肃北| 区。| 南投县| 罗甸县| 宁强县| 佛冈县| 象山县| 清镇市|