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