樂趣c語言
A. 怎麼用c語言做一個界面
C 語言,就像他的名字一樣,他就是一門計算機編程語言;
要做界面,需要調用繪圖函數,而繪圖函數有很多種,Windows 的 GDI 和 GDI+ 或者 Direct2D,Linux 下的 OpenGL,移動設備上的 XNA ,都可以;
MFC 是微軟為咱們創建 Windows 窗體程序而設計好的開發包,可以提高開發效率,以面向對象的方式思考和設計程序,學習這個,需要有 Windows API 基礎;
至於 API,在 Windows 下面,就是指 Win32 API 了,就是 32 位 Windows 操作系統的應用程序編程介面,是 Windows 系統提供給開發者的底層功能;
這些都不是一兩句話可以概括的,需要自己多點去接觸,才會有自己的心得;
最後一條比喻不是很恰當,面向對象拆開來,可以是一堆 API,也可以是單純的一堆 C 語言句子,當然,也可以是一堆嵌入式匯編語句,所以沒辦法進行比喻;
B. c語言教學教案7篇
c語言教學教案篇1
活動目標:
1、理解故事內容,懂得為大家做好事,自己也會得到快樂的道理。
2、能運用故事中的語言完整地回答問題。
3、願意與別人交流。
4、引導幼兒在故事和游戲中學習,感悟生活。
5、能自由發揮想像,在集體面前大膽講述。
活動准備:
知識經驗:初步了解植物的生長。
環境材亮態料:根據故事繪制圖片二張。錄音、磁帶,每人一個小花籽胸飾,花籽娃娃臉一個。
活動過程:
1、出示花籽娃娃,語言導入:這是誰?你們看它快樂嗎?
2、錄音講述故事前半部分。
提問:小花籽要去做什麼?
討論:什麼是快樂(幼兒根據自己理解與經驗回答)
引導幼兒用故事中的語言連貫回答並學說角色對話。
討論:太陽、小鳥、蜜蜂、青蛙為什麼感到快樂?
3、錄音講故事後半部分:
提問:誰能幫助小花籽想辦法,讓它找到快樂。
提問:小花籽找到快樂了嗎?
4、完整欣賞故事一遍。
5、請幼兒談自己感到快樂的事。老師或幾個能幹幼兒戴上小花籽胸飾,問其他幼兒:你快樂嗎?為什麼?(請幼兒仿照故事中的對話回答)
請每個幼兒戴上胸飾扮花籽,去詢問幼兒園其他班小朋友與老師是否快樂,鼓勵幼兒大膽與他人交往。
附故事:
有顆黑黑的小花籽,悄悄地從媽媽的懷里蹦了出來,它要出來尋找快樂。
它看見太陽,問:「太陽公公,你快樂嗎?」太陽笑著說:「快樂,快樂,我給大家陽光和溫暖,大家喜歡我。」它看見小鳥,問:「小鳥,你快樂嗎?」小鳥笑著說:「快樂、快樂,我給大家唱歌,大家喜歡我。」它看見蜜蜂,問:「蜜蜂,你快樂嗎?」蜜蜂笑著說:「快樂、快樂,我給大家采蜜,大家喜歡我。」它看見青蛙,問:「青蛙,你快樂嗎?」青蛙笑著說:「快樂、快樂,我給大家捉害蟲,大家喜歡我。」小花籽要去尋找自己的快樂。它請風姑娘幫忙,風姑娘帶著小花籽飄呀飄,飄過大河、飄過草原、飄到雪山上。小花很喜歡這兒,它留下來了,把雪山當作自己的家,它要在雪山上開朵花。春天來了,黑黑的小花籽真的開出了一朵美麗的大紅花,香噴噴的,好聞極了,香味傳得很遠很遠,白熊、海豹、雪兔、海象、還有大人、小孩都跑來了。小花籽已是一朵大紅花了,它看到大家這么快樂,高興地想:「大家喜歡我,我真的很快樂。」
c語言教學教案篇2
教學版本:
選自江西高校出版社出版的《幼兒多元能力實踐課程》中班下冊《生活真奇妙》主題。
教學思路:
在這學期的「三、八」婦女節我們幼兒園舉行了幼兒「爽歪歪」牛奶瓶製作大賽。孩子在這次活動中第一次和家長親手用牛奶瓶製作了作品
許多孩子對展示出的作品表現出極大的興趣。為了鼓勵、激勵孩子進行廢物再利用,更好地愛護我們身邊的環境,因此我進行了此次教學活動。
教學方法:
提問法、觀察法、表演法
教學手段:
製作生動、形象的幻燈圖片輔助教學
教學目標:
1、在觀察、討論的過程中理解故事。
2、通過故事感受環保的重要性。
3、挖掘孩子變廢為寶的創意。
教學重點:
增強孩子的環保意識敬隱源,進行廢舊再利用。
教學准備:
各種廢舊物品、塑料袋製作的服裝、時裝表演的音樂、故事圖片(幻燈片)、故事錄音
教學過程:
一、激發興趣,引出課題。
(爆竹聲)師:咦,哪裡這么熱鬧?原來是山羊爺爺的「奇妙商店」開業了,我們一起去看看吧!(教師帶孩子進入活動室)
師:這就是山羊爺爺的「奇妙商店」,還有兩行大字「奇妙商店真奇妙,能把廢物變成寶」我們來聽聽山羊爺爺《變廢為寶》的故事吧!
二、在觀察、討論中理解故事內容。
(一)教師完整講述故事《變廢為寶》。提問:
1、故事的名字叫什麼?
2、山羊爺爺開了個什麼商店?
3、你覺得山羊爺爺的商店為什麼會取名為「奇妙商店」呢? (教師鼓勵孩子大膽表述)
(二)聽故事錄音,邊觀看故事圖片。
(三)分段講述故事,觀看故事圖片。
1、第一副圖,提問:
山羊爺爺在店門口寫了什麼字?
2、第二副圖,提問:
誰去了奇妙商店?
小白兔拿了什麼?
山羊爺爺想把飲料瓶做成什麼呢?(攜隱讓孩子學學小兔和山羊爺爺的對話,發展孩子的語言表達能力)
你能用飲料瓶做什麼?
3、第三副圖,提問:
小鹿拿了什麼去「奇妙商店」?
山羊爺爺想把塑料袋做成什麼?(學說小鹿和山羊爺爺的對話)
你能用塑料袋做什麼?
4、第四副圖,提問:
小馬在想什麼?
山羊爺爺的做法好嗎?為什麼?(鼓勵孩子自由表述,並說出理由)
教師小結:
山羊爺爺在為大家做好事!不僅讓森林裡的環境更衛生,還進行了廢物再利用,節約了資源,我們要向山羊爺爺學習!
要講衛生,不亂扔垃圾,要保護我們周圍的環境衛生,還要有變廢為寶的創新意識!
三、鼓勵孩子進行廢物再利用
1、觀看塑料袋服裝展示。
師:為了慶祝「奇妙商店」開業,山羊爺爺還准備來了一場特殊的服裝展示,我們看看吧!(由幾名幼兒穿著用各種塑料袋製作的服裝配上音樂進行表演,)
師:這些服裝漂亮嗎?你知道這些服裝是用什麼材料做成的?(孩子回答略)
師:真沒想到裝了衣服、鞋子的塑料袋也能做成這么漂亮的服裝寶貝,山羊爺爺真是了不起!
2、請你進行廢物再利用。
師:小朋友看了山羊爺爺這么多用廢舊物品製作的漂亮寶貝,老師這里收集了一些廢舊物品,你能用它來做什麼?(鼓勵大膽幼兒表達自己的想法和創意)
3、結束活動,帶孩子出活動室
師:孩子們的想法和創意都不錯,我們現在就去動手實現吧!等我們做好了就送到山羊爺爺的「奇妙商店」去。
c語言教學教案篇3
活動目標:
1、了解荷花的各種特點,從而理解兒歌的含義。
2、啟發幼兒根據兒歌的內容想像並用動作來表演。
活動准備:
1、帶幼兒認識荷花,知道荷花的生長過程。
2、與兒歌相應的圖片。
活動過程:
一、欣賞荷花,幼兒說說荷花的主要特點和生長過程
1、師:荷花是長在什麼地方的呀?,荷花的葉子是怎樣的?荷花池裡還會有什麼呢?
2、幼兒根據自己的知識經驗講述。
二、結合圖片學習兒歌《荷花開》
1、出示圖片:圖上有什麼?(小魚、小蝦、小雨還有風兒和荷花)
2、老師把這張圖片上的內容編成了一首好聽的兒歌,大家一起來聽一聽吧!
3、教師示範朗誦兒歌《荷花開》
4、教師指圖,幼兒根據圖片內容逐步念出兒歌的內容,同時幫助幼兒理解兒歌的含義。
師:兒歌里說的紅色的大傘是什麼呀?(荷花)
三、啟發幼兒根據兒歌內容創編動作
1、師:暖暖的風兒吹過來,可以做什麼動作呢?
小雨又能做什麼動作呢?
小魚、小蝦可以用什麼動作表示?
……
2、先讓個別幼兒演示他創編的動作,在選擇合適的集體練習。
3、帶領幼兒邊念兒歌邊表演動作。
活動反思:
?荷花開》這個活動是在中班六月主題中開展。對孩子們來說,夏天是多姿多彩的,通過和大自然的接觸,孩子們能夠盡情地感受著夏天的一些特別的感受。幼兒通過視頻片段,欣賞荷塘,了解荷活動中為了讓孩子感受荷花的美,我創設了荷花池的情景,希望激發孩子對荷花的喜愛。但在這一環節中,我並沒有充分利用好優美的環境,造成孩子在後來動作表現時出現單一性。事後我在想:老師創設了這么優美的環境到底是為了什麼?難道只是為了上荷花的活動而布置荷花池,環境僅僅是一個擺設嗎?再三考慮後,我覺得環境不僅是擺設,應充分為活動所服務。如果在活動中,我能充分利用環境,讓孩子去觀察荷花、親近荷花(荷花開放的不同姿態,如朝左點頭的荷花、想像兩朵在一起的荷花在干什麼等),而不只是走馬觀花看看就結束,那麼孩子會有更多的感受、更多的發現。這樣孩子在表現荷花的姿態時才可能是多樣的,也會更富有感情,把自己也當成是一朵真正的荷花。花開放的過程,並在欣賞之餘,嘗試用自己的身體去表演荷花開放的.動作,荷塘里熱鬧的景象。
c語言教學教案篇4
活動目標:
1、在傾聽、猜想、講述的過程中,理解故事情節發展及角色的形象特點。
2、能比較清楚完整地表達對故事的理解。
3、初步懂得同伴之間應該友好相處。
4、讓幼兒嘗試敘述故事,發展幼兒的語言能力。
5、喜歡並嘗試創編故事結尾,並樂意和同伴一起學編。
活動准備:
故事ppt、故事錄音。
活動過程:
(一)設置問題,引發認知沖突:
你們都知道小老鼠和大老虎吧?在你印象中,它們是怎樣的動物?它們兩個在一起會發生什麼事情呢?
出示圖片:這兒有一隻小老鼠和大老虎,看看他倆的關系怎麼樣?你從哪裡看出來的?這兩個好朋友在一起會發生什麼事情呢?我們來聽一聽小老鼠是怎麼說的吧!
(二)在傾聽、猜測、講述中感受理解故事
1、教師講述p2——p9
提問:你聽出來他們之間發生了什麼問題?(幼兒回答)
小結:雖然這些只是小問題,可是時間長了會發生矛盾,接下來又會發生什麼呢?我們接著往下聽!
2、教師講述第二段
出示p10——p11,教師講述:
「有一天……突然,發生了什麼事情?」
出示p12——p13,引導幼兒自由講述。
小老鼠看到自己搭的城堡被大老虎踢飛後,會怎麼樣?
3、師繼續講述p14——p15
一對好朋友就這樣分手了,和好朋友分開後,小老鼠會有什麼感覺呢?(說出理由)
4、師繼續講述p16——p21
他們還會成為好朋友嗎?
你和好朋友發生過什麼爭吵的事情呢?最後你們互相原諒對方了嗎?你們現在還是好朋友嗎?
小結:原來原諒朋友和得到朋友的原諒都是件開心快樂的事情。
5、聽老虎心聲,講述故事第三段
大老虎為了和小老鼠和好,做了哪些事情?(根據幼兒回答逐步出示ppt)
最後小老鼠會原諒大老虎嗎?為什麼?(先問再放ppt)
小老鼠最後原諒了大老虎,他們又是好朋友了,我們為它們的和好鼓鼓掌。(幼兒鼓掌)
(三)完整邊看繪本邊聽故事錄音。
活動延伸:
它們之間又出現了什麼問題?來的這個更高更壯的傢伙是誰呢?它們三個之間又會發生什麼事情呢?請你回去和爸爸媽媽一起來把這個故事編下去。
活動反思:
雖然說每一個人對每一個繪本的解讀都有不同之處。但是,我們在帶著孩子走進繪本時,一定要清楚,要從哪一個點帶兒童去走?以怎樣的方式,讓幼兒理解或體會怎樣一種情感?這就需要執教者對文本有更為深刻的理解。也是我在這次活動中的收獲吧。
小老鼠和大老虎,從外表看看這兩只動物,似乎不可能成為好朋友,但是在《小老鼠和大老虎》這個故事中它們是一對好朋友,但這對看上去很不相稱的好朋友之間也存在著一些小問題,這些問題可能在我們小朋友日常生活中也存在的,比如:把人家的積木弄倒,和好朋友絕交後,會做一些好的事情讓之感動原諒。這些情節似乎和孩子日常生活很貼近。在第一環節中,讓孩子們根據自己的已有經驗講講小老鼠和大老虎它們倆是怎樣的兩種動物,並讓孩子們來猜想它們倆在一起會發生什麼事情,在激起孩子們興趣的同時也為後面的活動做鋪墊。第二環節是分段講述,主要是讓孩子們感受小老鼠和大老虎是怎樣從一對好朋友,慢慢出現問題,小老鼠和大老虎絕交的事情,為之大老虎做了哪些事情來贏得小老鼠的原諒。
在我講述完大老虎為小老鼠做的事情後,幼兒根據聽到的來回憶事件,加上之前的講述,在這一環節中,孩子們都基本能講出大老虎所做的事情,所以在這環節中,孩子們的傾聽還是比較好的.。在這個活動中,還存在著很多的不足,導入環節時間過長可以採用直接導入的方法,讓孩子來觀察圖片上的兩個小動物。在讓孩子理解故事發展情節的同時,可以讓孩子去感受故事中角色的心情。可以讓孩子扮扮小老鼠或者大老虎,學學它們說的話,說話時的語氣等等。在整個活動中,孩子們的參與性高、注意力集中、目標達成效果好。
經過這次活動讓我深深感受到,作為老師,一定要站在幼兒的角度,設身處地地考慮他們的經驗背景、情感體驗、思維方式和興趣愛好,並要從多個角度去設想應對策略,為活動中的有效回應提供全方位的支持。同時,要善於賞識和鼓勵孩子。因為老師的認可能喚醒孩子們潛在的自信,這樣才能充分調動他們學習的積極性。
c語言教學教案篇5
活動目標:
欣賞離奇的童話故事情節,拓展想像空間,對蛋的種類有探索的慾望。
活動准備:
該童話的錄音磁帶一盒、母雞、雞蛋、國王等桌面教具一套、實物蛋若干。
活動過程:
1、欣賞童話故事,理解故事情節。
(1)教師先出示實物蛋,激發幼兒活動的興趣。
(2)教師有表情地講述故事一遍,讓幼兒欣賞童話故事,思考:
故事叫什麼名字?
故事裡有誰?
故事裡發生了什麼事?
2、結合桌面教具演示聽故事一遍,加深對故事情節的理解,思考:三隻母雞下的蛋有什麼不一樣?
3、欣賞童話錄音一遍,讓幼兒用語言與動作表達自己的理解。
4、讓幼兒想像"蛋"的奇遇記,集體合編童話故事。
5、小組自由討論,想像"蛋"的奇遇記。
6、集體續編童話故事。
7、組織幼兒討論:有幾種動物會下蛋?;。教。案來自:大。考。吧幼。師網;(雞鴨鵝鳥類蛇等)它們下的蛋有什麼不一樣?(引導幼兒從顏色形狀大小等方面加以比較)
活動延伸:
根據不同動物下的蛋繼續續編童話故事,講給客人老師或爸爸媽媽聽。
活動反思:
繪本《最奇妙的蛋》給大家帶來了一個發現自己優點的視角,讓每個孩子都知道,每個人都有自己的優點,每個人都是自己爸爸媽媽的王子和公主。
一節優秀的繪本課應該是幼兒主動參與,主動創造,從而升華主題的過程,幼兒沒有興趣一直作為一名旁觀者,要讓孩子在不知不覺中被我們引入故事氛圍,體驗故事的奇妙。
c語言教學教案篇6
設計意圖:
秋天是一個絢麗多彩的季節,也是一個豐收的季節,它有著非常鮮明的季節特徵和可供研究的資源。《綱要》中指出:引導幼兒接觸周圍環境和生活中美好的人、事、物,豐富他們的感性經驗和審美情趣,激發他們感知美、表現美和創造美的情趣。為了讓幼兒在多彩的季節中感受秋天的美麗和收獲,激發幼兒關注自然、熱愛自然的情感,我設計了語言活動《綠樹葉》。通過層層遞進,讓幼兒想一想、說一說、做一做來感受美好的秋天。
活動目標:
1.萌發喜愛秋天的情感。
2.能理解詩歌內容,感受詩歌美好的意境。
3.學習有感情地朗誦詩歌,嘗試仿編詩歌。
重點難點分析重點:理解詩歌內容,有感情地朗誦詩歌。
難點:感受詩歌美好的意境、嘗試仿編詩歌。
活動准備:
1.活動前,組織幼兒進行採摘樹葉活動。
2.樹葉若干;小筐四個;《小樹葉》音樂;《綠樹葉》教學幻燈片;照相機;樹葉拼擺範例三張。
活動過程:
(一) 導入:
(1)音樂《小樹葉》幼兒進入活動室。
(2)觀察樹葉,自由想像。
請幼兒仔細觀察採摘的樹葉,想一想,說一說:樹葉是什麼顏色、什麼形狀的?像什麼?(引出詩歌主題)
(二)展開:
1.出示掛圖,引出詩歌。(以層層遞進的方式教授幼兒詩歌)
(1)出示圖片一,上面都有什麼?綠樹葉像小果子的什麼?
教師用詩歌中的語句歸納:「綠樹葉,當小傘,青青果兒藏下面。」幼兒學說:「綠樹葉,當小傘,青青果兒藏下面。」
(2)出示圖片二,讓幼兒觀察綠樹葉被當作了什麼?
觀察思考:圖上有什麼?綠樹葉像小螞蟻的什麼?小螞蟻會坐上小船干什麼?
幼兒和老師一起說:「綠樹葉,當小船,螞蟻坐在船上玩。」
(3)出示圖片三,提問:「小朋友在干什麼?教案來自:大;考吧幼;師網.他把樹葉當什麼用?」
引導幼兒用詩歌中的句子歸納,嘗試以前兩幅詩歌的形式編出一句話:「綠樹葉,當小扇,輕輕為我把風扇。」
(4)出示圖片四,引導幼兒觀察:綠樹葉怎麼樣了?什麼季節來到了?
啟發幼兒說出詩歌的最後一句:「綠樹葉,是小船,小船飄下是秋天。」
2.詩歌朗誦
(1)教師結合掛圖朗誦,幼兒完整地欣賞詩歌。
(2)幼兒學習朗誦詩歌兩遍。(提醒幼兒用輕松、優美的語調和語氣朗誦詩歌)(第一遍集體朗誦,第二遍請部分幼兒上台朗誦)提問:「你們喜歡這首詩歌嗎?為什麼?你覺得綠樹葉還像什麼?」
3.幼兒嘗試仿編詩歌。
(1)請幼兒將樹葉拼擺成好看的圖案,教師用相機照下來通過多媒體讓幼兒欣賞並說一說綠樹葉還可以當作什麼,與幼兒編成好聽的詩句。
(2)教師出示樹葉拼擺范樣(孔雀、金魚、蝴蝶)與幼兒共同創編詩歌。
(3) 想一想,說一說「你覺得綠樹葉還可以當作什麼?並且能用詩歌的形式告訴我們嗎?」讓幼兒仿編詩歌。
(三)結束帶幼兒到戶外欣賞美麗的秋天,與幼兒玩勒樹葉的游戲。
綠樹葉綠樹葉,當小傘,青青果兒藏下面。
綠樹葉,當小船,螞蟻坐在船上玩。
綠樹葉,當小扇,輕輕為我把風扇。
綠樹葉,是小船,小船飄下是秋天。
活動反思:
本活動是學習新的詩歌並仿編詩歌,我們班的孩子在此活動之前沒有接觸過仿編詩歌的活動,但我們班的孩子語言能力比較強,所以對於孩子仿編詩歌我有一定的把握。
學習詩歌時我通過層層遞進的方式學習詩歌,在仿編詩歌時,起初我說前半句「綠樹葉,當xx」,孩子創編後半句,慢慢的孩子了解到仿編詩歌的規律,能夠完整的仿編,但有的幼兒仿編的不是很押韻,這點還要慢慢滲透學習。
c語言教學教案篇7
教案目標:
1、了解輪子是圓的、會滾動,能給人們生活帶來方便。
2、體驗與同伴合作與不能玩具的樂趣。
3、了解輪子在社會生活中的應用。
重難點分析:
重點:了解輪子是圓的,會滾動的特性。
難點:如何引導幼兒發現並感受輪子給我們的生活帶來了哪些方便。
教案准備:
1、圓形、正方形、三角形的積木若干。
2、課前幼兒搜集的玩具汽車。
3、各種有輪子的物體的課件
安全教育:教育幼兒在進行操作時做到不爭搶物品。
教案過程:
一、導入:導入激發興趣1、引導幼兒在教師課前准備的裝有圓形、三角形、正方形積木的"百寶箱"中摸一摸,感知物品的形狀,然後選擇自己喜歡的積木,在地上玩一玩,滾一滾。
2、教師提出小任務:看看哪個會滾,哪個不會滾。看看誰最先發現它們的小秘密?
3、教師提出問題:想一想,哪塊積木滾得快,滾的時間長,為什麼?
4、幼兒進行討論,教師適當小結。幼兒通過玩發現了圓形積木會滾,滾得快,滾的時間長,因為它沒有角是圓形的。從而了解到圓形會滾動的特性,為後面認識輪子和它的作用做好了鋪墊。
二、展開:
1、探索發現認識輪子
①師:引導幼兒觀察自己帶來的玩具小汽車,啟發幼兒:請小朋友們找一找小汽車上哪些東西是圓形的?幼兒自由觀察討論,通過觀察幼兒認識到輪子是圓形的這一特徵。
②幼兒自由玩一玩自己帶來的汽車玩具。
③教師提出問題:你是怎樣玩玩具的?玩具汽車是怎樣前進的?幼兒回答後,教師小結:輪子是圓圓的,可以向各個方向滾動的。並請幼兒演示輪子的滾動。
2、拓展思維啟發聯想
①在幼兒已有經驗的基礎上,教師與幼兒進行談話:你還見過哪些東西上有輪子呢?為什麼要安裝輪子?
②引導幼兒發散思維,想一想除了車以外還有哪些東西上有輪子,並結合自己生活中的經驗,談一談輪子的作用,感受輪子給我們的生活帶來的方便。
③教師小結:輪子可以幫我們"走"的更快,還能省力,給我們的生活帶來了很多方便。
3、輪子自述,拓寬視野
①教師進行小結:這些輪子真了不起,幫我們做了很多事情,讓我們一起來看一看還有哪些東西上有了不起的輪子吧?
②播放課件,以輪子的身份引出進行自述:我是了不起的輪子,你瞧,溜冰鞋上有圓圓的輪子,自行車上有圓圓的輪子,摩托車上有圓圓的輪子,汽車上有圓圓的輪子,火車上也有圓圓的輪子,它們都因為有了我而跑得很快很快!把大家帶到想去的地方。
4、創設情景感受體驗
①創設情景:請幼兒分組感受搬動滑板車和拉動滑板車有什麼不同。請幼兒說出答案:利用輪子拉動更加省力氣,更加快!
②教師小結:有了輪子,我們在做某些事情的時候會更加省時,省力,更加方便!
三、結束:教師帶領幼兒手拿大圈,將小車子開到活動室的外面。
C. 教你如何使用C語言編寫簡單小游戲
編寫程序,實現如下表所示的5-魔方陣。
17
24
1
8
15
23
5
7
14
16
4
6
13
20
22
10
12
19
21
3
11
18
25
2
9
5-魔方陣
問題分析
所謂「n-魔方陣」,指的是使用1〜n2共n2個自然數排列成一個n×n的方陣,其中n為奇數;該方陣的每行、每列及對角線元素之和都相等,並為一個只與n有關的常數,該常數為n×(n2+1)/2。
例如5-魔方陣,其第一行、第一列及主對角線上各元素之和如下:
第一行元素之和:17+24+1+8+15=65
第一列元素之和:17+23+4+10+11=65
主對角線上元素之和:17+5+13+21+9=65
而
n×(n2+1)/2=5×(52+1)/2=65
可以驗證,5-魔方陣中其餘各行、各列及副對角線上的元素之和也都為65。
假定陣列的行列下標都從0開始,則魔方陣的生成方法為:在第0行中間置1,對從2開始的其餘n2-1個數依次按下列規則存放:
(1)
假定當前數的下標為(i,j),則下一個數的放置位置為當前位置的右上方,即下標為(i-1,j+1)的位置。
(2)
如果當前數在第0行,即i-1小於0,則將下一個數放在最後一行的下一列上,即下標為(n-1,j+1)的位置。
(3)
如果當前數在最後一列上,即j+1大於n-1,則將下一個數放在上一行的第一列上,即下標為(i-1,0)的位置。
(4)
如果當前數是n的倍數,則將下一個數直接放在當前位置的正下方,即下標為(i+1,j)的位置。
演算法設計
在設計演算法時釆用了下面一些方法:
定義array()函數,array()函數的根據輸入的n值,生成並顯示一個魔方陣,當發現n不是奇數時,就加1使之成為奇數。
使用動態內存分配與釋放函數malloc()與free(),在程序執行過程中動態分配與釋放內存,這樣做的好處是使代碼具有通用性,同時提高內存的使用率。
在分配內存時還要注意,由於一個整型數要佔用兩個內存,因此,如果魔方陣中要存放的數有max個,則分配內存時要分配2*max個單元,從而有malloc(max+max)。在malloc()函數中使用max+max而不是2*max是考慮了程序運行的性能。
顯然應該使用二維數組來表示魔方陣,但雖然數組是二維形式的,而由於內存是一維線性的,因此在存取數組元素時,要將雙下標轉換為單個索引編號。在程序中直接定義了指針變數來指向數組空間,即使用malloc()函數分配的內存。
D. 如何使用C語言編寫簡單小游戲
C語言是計算機專業都要學習的一門基礎學科。一般來說,是比較枯燥的.那麼,我們能不能通過編一些小游戲來提高它的趣味性呢?這樣學習程序設計,就不會是一件艱苦 ,枯燥的事,它變得象電腦游戲一樣充滿好奇,富有樂趣。
例如2048這款游戲:
方法/步驟:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<windows.h>
#define SIZE 4
static int score=0;
void putn(int n[][SIZE]);
void getn(int n[][SIZE]);
int isempty(int n[][SIZE]);
int isfull(int n[][SIZE]);
void math(int n[][SIZE],char c);
void tow(int n[][SIZE]);
void toa(int n[][SIZE]);
void tos(int n[][SIZE]);
void tod(int n[][SIZE]);
//主函數
int main()
{
int i,j;
int n[SIZE][SIZE];
char c=' ';
for(i=0;i<SIZE;i++)
{
for(j=0;j<SIZE;j++)
{
n[i][j]=0;
}
}
printf( "*********************** "
" 2048(%dX%d) "
" control:W/A/S/D "
"press any key to begin "
"*********************** ",SIZE,SIZE);
getch();
system("cls");
//n[0][1]=2048;
//n[0][3]=2048;
while(1)
{
if(isempty(n))
getn(n);
putn(n);
if(!isempty(n)&&isfull(n))
break;
sleep(200);
c=getch();
while(c!='w'&&c!='a'&&c!='s'&&c!='d')
c=getch();
math(n,c);
system("cls");
}
printf(" Game Over! ",score);
return 0;
}
//函數
void putn(int n[][SIZE])
{
int i,j;
for(i=0;i<SIZE;i++)
{
for(j=0;j<SIZE;j++)
printf("| ");
printf("| ");
for(j=0;j<SIZE;j++)
{
if(n[i][j]==0)
printf("| ");
else
printf("|%4d ",n[i][j]);
}
printf("| ");
for(j=0;j<SIZE;j++)
printf("|_____");
printf("| ");
}
printf("score: %d",score);
}
void getn(int n[][SIZE])
{
int a,b;
a=rand()%SIZE;
b=rand()%SIZE;
while(n[a][b]!=0)
{
a=rand()%SIZE;
b=rand()%SIZE;
}
n[a][b]=2;
}
int isempty(int n[][SIZE])
{
int i,j,count=0;
for(i=0;i<SIZE;i++)
for(j=0;j<SIZE;j++)
if(n[i][j]==0)
count++;
return count;
}
int isfull(int n[][SIZE])
{
int i,j,count=0;
for(i=0;i<SIZE;i++)
{
for(j=1;j<SIZE-1;j++)
{
if(n[i][j]==n[i][j+1]||n[i][j]==n[i][j-1])
count++;
}
}
for(j=0;j<SIZE;j++)
{
for(i=1;i<SIZE-1;i++)
{
if(n[i][j]==n[i+1][j]||n[i][j]==n[i-1][j])
count++;
}
}
return count>0?0:1;
}
void math(int n[][SIZE],char c)
{
switch(c)
{
case 'w':tow(n);break;
case 'a':toa(n);break;
case 's':tos(n);break;
case 'd':tod(n);break;
default :;
}
}
void tow(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a<SIZE;a++)
m[a]=0;
for(j=0;j<SIZE;j++)
{
for(a=0;a<SIZE;a++)
{
for(i=0;i<SIZE-1;i++)
{
if(n[i][j]==0)
{
n[i][j]=n[i+1][j];
n[i+1][j]=0;
}
}
}
}
for(j=0;j<SIZE;j++)
{
for(a=0,i=0;i<SIZE;i++)
{
if(n[i][j]!=n[i+1][j]&&n[i][j]!=0||n[i][j]==2048)
{
m[a++]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i+1][j])
{
m[a++]=n[i][j]+n[i+1][j];
score+=m[a-1];
n[i][j]=0,n[i+1][j]=0;
}
}
for(i=0;i<SIZE;i++)
{
n[i][j]=m[i];
m[i]=0;
}
}
}
void toa(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a<SIZE;a++)
m[a]=0;
for(i=0;i<SIZE;i++)
{
for(a=0;a<SIZE;a++)
{
for(j=0;j<SIZE-1;j++)
{
if(n[i][j]==0)
{
n[i][j]=n[i][j+1];
n[i][j+1]=0;
}
}
}
}
for(i=0;i<SIZE;i++)
{
for(a=0,j=0;j<SIZE;j++)
{
if(n[i][j]!=n[i][j+1]&&n[i][j]!=0||n[i][j]==2048)
{
m[a++]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i][j+1])
{
m[a++]=n[i][j]+n[i][j+1];
score+=m[a-1];
n[i][j]=0,n[i][j+1]=0;
}
}
for(j=0;j<SIZE;j++)
{
n[i][j]=m[j];
m[j]=0;
}
}
}
void tos(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a<SIZE;a++)
m[a]=0;
for(j=SIZE-1;j>=0;j--)
{
for(a=SIZE-1;a>=0;a--)
{
for(i=SIZE-1;i>0;i--)
{
if(n[i][j]==0)
{
n[i][j]=n[i-1][j];
n[i-1][j]=0;
}
}
}
}
for(j=SIZE-1;j>=0;j--)
{
for(a=SIZE-1,i=SIZE-1;i>=0;i--)
{
if(n[i][j]!=n[i-1][j]&&n[i][j]!=0||n[i][j]==2048)
{
m[a--]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i-1][j])
{
m[a--]=n[i][j]+n[i-1][j];
score+=m[a+1];
n[i][j]=0,n[i-1][j]=0;
}
}
for(i=SIZE-1;i>=0;i--)
{
n[i][j]=m[i];
m[i]=0;
}
}
}
void tod(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a<SIZE;a++)
m[a]=0;
for(i=SIZE-1;i>=0;i--)
{
for(a=SIZE-1;a>=0;a--)
{
for(j=SIZE-1;j>0;j--)
{
if(n[i][j]==0)
{
n[i][j]=n[i][j-1];
n[i][j-1]=0;
}
}
}
}
for(i=SIZE-1;i>=0;i--)
{
for(a=SIZE-1,j=SIZE-1;j>=0;j--)
{
if(n[i][j]!=n[i][j-1]&&n[i][j]!=0||n[i][j]==2048)
{
m[a--]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i][j-1])
{
m[a--]=n[i][j]+n[i][j-1];
score+=m[a+1];
n[i][j]=0,n[i][j-1]=0;
}
}
for(j=SIZE-1;j>=0;j--)
{
n[i][j]=m[j];
m[j]=0;
}
}
}