近年來關(guān)注c語言實驗編程的用戶越來越多,小編整理了關(guān)于C/C++編程筆記:C語言編寫*實驗課項目——萬年歷!全解,大一 C語言 實驗1,有哪些適合新手練手的C/C++項目?,要C語言程序設(shè)計試驗報告的小結(jié),誰有???,供您參考
1.C/C++編程筆記:C語言編寫*實驗課項目——萬年歷!全解
題目要求編程實現(xiàn)萬年歷,要求:可根據(jù)用戶輸入或系統(tǒng)日期進行初始化,如果用戶無輸入則顯示系統(tǒng)日期所在月份的月歷,并突出顯示當前日期;可根據(jù)用戶輸入的日期查詢,并顯示查詢結(jié)果所在月份的月歷,突出顯示當前日期,并提示是否閏年對任何不合法輸入數(shù)據(jù),拒絕查詢并進行提示。思路分析可將思考、編程劃分為以下幾個模塊:如何通過已有日期和星期推算要求的日期的星期?如何整齊地輸出月歷?如何獲取系統(tǒng)時間?在有余力的前提下,如何美化界面?下面對上面的幾個問題給出粗略的概述。具體實現(xiàn)和技巧性地東西參考后文代碼。問題1 日期推算眾所周知,需要推算日期的模擬題都是毒瘤題日期推算的算法有很多,這里只給出我的思路:推出差了多少天。用數(shù)學公式推出星期。這條公式是 (w+d)mod7(w+d)mod7 ,d 表示差的天數(shù),w 表示原本是星期幾。我采用的是標準的 0 表示 Sun. 而 6 表示 Sat. 的方法。time.h 自帶的 tm_wday 就是用這種方式表示的。需要注意的是 C 與 C++ 對負數(shù)取模的特(sha)殊(bi)性 ,所以為了求出正確的結(jié)果,我們要采用一點小技巧。if(w1+d<0) w2=(w1+d)+(-w1-d)/7*7+7; 似乎也可以在推出天數(shù)后乘上86400減一下然后扔給 localtime() 去推星期。但是你連天數(shù)都推出來了,直接算不香嗎。而且既然是萬年歷,秒數(shù)太大爆了怎么辦接下來讓我們考慮如何推算差了多少天。我為了方便計算,所有的推算都以2021年1月1日星期三為基準。由一個基準來推的化可以省去很多麻煩。首先,*種方法是暴力模擬。一年一年地推、一月一月地推、一天一天地推。我在代碼中注釋掉的就是暴力模擬法。這個沒什么好講的,閏年就差 366 天,否則差 365 天。年推到了就推月,實現(xiàn)把每個月份的天數(shù)打個表,別忘了特判二月就行。你也可以不像我那樣偷懶一個一個月推,使用 前綴和數(shù)組+閏年特判 也行。但是每次查詢最多就推 12 個月,一個月一個月推也差不了多少。這點時間肉眼是看不出來的。所以隨便吧。天數(shù)就沒什么好說的,自己隨便想兩個同年同月的日期看看差幾天,很快就能看出是直接拿日期相減了。其實,我們不難發(fā)現(xiàn),年份可以不用一年一年模擬,可以用數(shù)學公式算?,F(xiàn)在我們要算 A年1月1日 到 B年1月1日 經(jīng)過了幾個閏年。以 A < B 為例直接拿 (B-A)/4 來算閏年個數(shù)這種玄學的事情我是不會干的。我希望求出的閏年個數(shù)是絕對準確的。因此可以這樣來:我們知道 x/4 可以表示小于等于 x 的正整數(shù)中 4 的倍數(shù)的個數(shù)。我們需要求經(jīng)過的閏年的個數(shù),只需要知道區(qū)間 [A,B-1] 中 4、100、400 的倍數(shù)的個數(shù)就行了。( 因為我考慮的是 1月1日 ,如果考慮 12月31日 的話,應(yīng)該變?yōu)?[A+1,B] )根據(jù)容斥原理,記 4、100、400 的倍數(shù)的個數(shù)分別為 c1,c2,c3c1,c2,c3我們有: n=c1?c2+c3n=c1?c2+c3根據(jù) 前綴和 的思想,我們有:c1=(B?1)/4?(A?1)/4c1=(B?1)/4?(A?1)/4應(yīng)該不會有人看不懂前綴和吧,不過我還是解釋一下吧。因為 A 是包含在區(qū)間里面的,我們要求 [A,B-1] 的區(qū)間權(quán)值,自然不能把 A 刪出去,所以要用 A-1 。其它幾項同理。于是我們求出了閏年的個數(shù),于是 d=(B?A)+n×1d=(B?A)+n×1至于 A > B 的情形,同理,只需要把區(qū)間改為 [B,A-1] 。然后根據(jù)前綴和,你會發(fā)現(xiàn) 式子是一樣的,只是正負號變了而已,所以沒有分類討論的必要 。這樣就解決了最關(guān)鍵的問題,剩下的只需要動用知識和 耐心 去模擬就好了。問題2 月歷的格式這個隨便百度一下萬年歷或者點一下右下角的時間模仿一下它的格式就行了。這里介紹幾個技巧。分行 printf (這個好像誰都會)對齊利用 %-*d 可以靠左對齊, %*d 則是靠右對齊??傊嬎愫眯枰淖址L度然后分配即可。看著不行多試幾次。利用字符數(shù)組減少工作量需要注意的是,二維數(shù)組的字符串長度必須聲明。因為只有知道了長度才可以分配內(nèi)存。二維數(shù)組不止要分配*個字符串的內(nèi)存,還要同時按間隔分配余下的內(nèi)存,不規(guī)定長度的話它不知道要在哪里放第二個。問題3
2.大一 C語言 實驗1
一、 實驗目的 掌握C語言中的變量、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體等主要知識點。 掌握C程序的結(jié)構(gòu)化程序設(shè)計方法,能使用C語言開發(fā)簡單的應(yīng)用程序。掌握C程序的運行、調(diào)試方法等。二、 實驗內(nèi)容(1)用函數(shù)調(diào)用實現(xiàn)求1~7的平方及平方和。三、 實驗步驟與過程#include
3.有哪些適合新手練手的C/C++項目?
學習編程專欄連載編程新手練手項目系列之C/C++項目篇,同樣也歡迎熱愛學習、對Java、Python、前端感興趣的朋友學習翻閱上三兩篇內(nèi)容。(歡迎大家進行項目的投稿)此C/C++篇為實驗樓 - 國內(nèi)領(lǐng)先的IT技術(shù)實訓平臺供稿篇有哪些適合新手練手的Java項目?有哪些適合新手練手的Java Web項目?有哪些適合新手練手的Python項目?有哪些適合新手練手的前端項目?1、(免費項目) C/C++ - C語言制作簡單計算器2、(會員項目) C/C++ - C語言實現(xiàn)通訊錄項目使用 C 語言完成一個簡單的通訊錄。會涉及到結(jié)構(gòu)體、數(shù)組、鏈表等重要概念。此項目為實驗樓會員可做實驗,大家如若不想充值,同樣可以在網(wǎng)絡(luò)上尋找實例:代碼+注釋:C語言做的簡單的手機通訊錄系統(tǒng)3、(免費項目) C/C++ - C語言利用epoll實現(xiàn)高并發(fā)聊天室項目實現(xiàn)客戶端和服務(wù)端編程,服務(wù)端使用epoll機制,高并發(fā)必備,支持多客戶聊天室聊天;客戶端使用epoll和fork,父進程與子進程通過pipe通信。 4、(免費項目) C語言編寫萬年歷使用 C 語言完成一個簡單的日歷功能。輸入相應(yīng)的年/月即可看到當月的日歷。 5、(免費項目) C/C++ - C語言制作20486、(免費項目) C/C++ - C語言版flappy_bird7、(免費項目) C語言版掃雷游戲8、(免費項目) C/C++ - C語言快速實現(xiàn)五子棋C/C++ - C語言實現(xiàn)一個支持PHP的簡易WEB服務(wù)器用C語言實現(xiàn)一個簡易的WEB服務(wù)器,并能支持動態(tài)解析PHP程序。主要涉及到的技術(shù)有:Linux Socket編程,HTTP協(xié)議(只實現(xiàn)GET請求),F(xiàn)ast-CGI協(xié)議。C/C++ - C語言實現(xiàn)ping程序項目用C語言實現(xiàn)ping命令。通過項目可以更深入地理解TCP/IP協(xié)議,掌握C語言進行網(wǎng)絡(luò)編程的技巧方法。C/C++ - C語言實現(xiàn) Linux 網(wǎng)絡(luò)嗅探器項目通過原生套接字的方式,監(jiān)聽所有本地主機收發(fā)的數(shù)據(jù)鏈路層幀結(jié)構(gòu),然后解析數(shù)據(jù)包的類型,并記錄到日志文件。實現(xiàn)一個輕量級的網(wǎng)絡(luò)嗅探器。C/C++ - C語言實現(xiàn)文件類型統(tǒng)計程序通過實現(xiàn)一個文件類型統(tǒng)計程序,對Linux的文件系統(tǒng)有一個更加深入的了解,尤其在文件類型的判斷,目錄的操作上的理解會加深。C/C++ - C 語言實現(xiàn)多線程排序項目在 Linux 環(huán)境下使用 C 語言多線程模型實現(xiàn)了排序算法,通過該項目的學習,可以理解并實踐 Linux 環(huán)境的編程基礎(chǔ)及多線程模型。實驗樓上有很多C++的實戰(zhàn)項目,從簡單到進階,學習每個項目都可以掌握相應(yīng)的知識點。如果你還是C++新手的話,那么這個C++的項目列表你可以拿去練手實戰(zhàn)開發(fā),畢竟學編程動手實踐是少不了的!如果你不知道C++可以用來做哪些項目,可以應(yīng)用在哪些地方,那么你可以通過這個列表,看看C++可以做什么!C++項目列表1、(免費項目)C/C++ - C++ 實現(xiàn)太陽系行星系統(tǒng)項目使用 C++實現(xiàn) OpenGL GLUT 實現(xiàn)一個簡單的太陽系行星系統(tǒng),將涉及一些三維圖形技術(shù)的數(shù)學基礎(chǔ)、OpenGL 里的三維坐標系、OpenGL 里的光照模型、GLUT 的鍵盤事件處理。 2、(會員項目) C/C++ - C++ 實現(xiàn)銀行排隊服務(wù)模擬一個類似但是免費的項目地址: 小項目分析之C++ 實現(xiàn)模擬銀行排隊項目使用 C++對銀行排隊服務(wù)進行模擬,以事件驅(qū)動為核心思想,手動實現(xiàn)模板鏈式隊列、隨機數(shù)產(chǎn)生器等內(nèi)容,進而學習概率編程等知識。作為可選進階,這個模型同時還能稍加修改的應(yīng)用到 CPU 資源爭奪模型中。 3、(會員項目) C/C++ - 100 行 C++ 代碼實現(xiàn)線程池 一個類似但是免費的項目地址: C++實現(xiàn)線程池 項目使用 C++ 及大量 C++11新特性設(shè)計并實現(xiàn)一個線程池庫。 4、(會員項目) C/C++ - C++實現(xiàn)*人稱射擊游戲一個類似但是免費的項目地址:飛行射擊游戲的C++實現(xiàn):一次課程作業(yè)項目使用C++和 OpenGL 實現(xiàn)一個*人稱射擊類游戲,涉及鍵盤鼠標的處理、三維視角變換處理、素材加載渲染等。5、(免費項目) C/C++ - C++ 開發(fā) Web 服務(wù)框架服務(wù)器開發(fā)中 Web 服務(wù)是一個基本的代碼單元,將服務(wù)端的請求和響應(yīng)部分的邏輯抽象出來形成框架,能夠做到*級別的框架級代碼復用。項目將綜合使用 C++11 及 Boost 中的 Asio 實現(xiàn) HTTP 和 HTTPS 的服務(wù)器框架。6、 C/C++ - C++ 打造 Markdown 解析器Markdown 幾乎成為了程序員編寫文檔的標配,Markdown 的相關(guān)語法簡單,解析 Markdown 文本能夠加深日后編寫編譯器中詞法分析的理解,本項目將使用 C++ 實現(xiàn) Markdown 解析器,并將解析的內(nèi)容生成為 HTML。
4.要C語言程序設(shè)計試驗報告的小結(jié),誰有?
通過對這一課題的設(shè)計和實現(xiàn),我對Micosoft Visual C++環(huán)境進行了深一步的了解,并逐漸開始熟練Micosoft Visual C++環(huán)境的工作界面,以及對每一個快捷鍵的熟悉。并認識到,熟悉這些快捷鍵,極為便捷編寫程序,但是還要更加熟悉。編程時要養(yǎng)成良好的風格,注意相同內(nèi)容的縮進和對齊。這樣做,可以使程序代碼出錯的情況下,可以快速并且便捷的查找到錯誤的行,利于很好的修改。通過這次編程我們深深的感受到對代碼的變量命名,代碼內(nèi)注釋格式,甚至嵌套中行縮進的長度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫習慣,不但有助于代碼的移植和糾錯,也有助于不同人員之間的協(xié)作。這個程序設(shè)計主要涉及到了C語言中的結(jié)構(gòu)體、指針及文件操作等內(nèi)容,只有充分掌握了C語言中的結(jié)構(gòu)體、指針及文件操作等內(nèi)容,才有可能組織好這些代碼,使之符合運算邏輯,得到理想的結(jié)果。善于總結(jié),也是學習能力的一種體現(xiàn),每次完成一個編程任務(wù),完成一段代碼,都應(yīng)當有目的的跟蹤該程序的應(yīng)用狀況,隨時總結(jié),找到自己的不足,這樣所編寫的程序才能逐步提高,生活就是這樣,汗水預示著結(jié)果也見證著收獲。勞動是人類生存生活永恒不變的話題。通過實際動手做,我們才真正領(lǐng)略到“艱苦奮斗”這一詞的真正含義,我們想說,編程確實有些辛苦,但苦中也有樂,在這個團隊的任務(wù)中,一起的工作可以讓我們有說有笑,相互幫助,配合默契。對我們而言,知識上的收獲重要,精神上的豐收是可喜的。挫折是一份財富,經(jīng)歷是一份擁有。這次實際操作必將成為我們?nèi)松猛旧弦粋€非常美好的回憶!回顧起此次課程設(shè)計,至今仍感慨頗多,的確,自從拿到題目到完成整個編程,從理論到實踐,在整整半個月的日子里,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟*次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對一些前面學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體,指針……通過這次課程設(shè)計之后,我把前面所學過的知識又重新溫故了一遍。 同時,在*老師的身上我學得到很多實用的知識,在此表示感謝!同時,對給過我?guī)椭乃型瑢W和指導老師再次表示忠心的感謝!
如果以上內(nèi)容沒有幫到您,歡迎電話聯(lián)系我們,或者聯(lián)系在線客服咨詢