1. 有哪些優秀的 C/C++ 開源代碼框架這些框架的設計思路是怎樣的
框架我的理解就是用一套類庫搭建出程序的方式。比較有名的當然就是mfc,是微軟的。還有boland的vcl,不過好像已經賣給別的公司了。還有trolltech公司的qt,這個支持跨平台。
有了基礎還需要一個RAD(Rapid Application Development),比如vc,delphi。如果你是手機方面的開發root吧,如不是請參考下面的
C++通用框架和庫:
Apache C++ Standard Library:是一系列演算法,容器,迭代器和其他基本組件的集合
ASL :Adobe源代碼庫提供了同行的評審和可移植的C++源代碼庫。
Boost :大量通用C++庫的集合。
BDE :來自於彭博資訊實驗室的開發環境。
Cinder:提供專業品質創造性編碼的開源開發社區。
Cxxomfort:輕量級的,只包含頭文件的庫,將C++ 11的一些新特性移植到C++03中。
Dlib:使用契約式編程和現代C++科技設計的通用的跨平台的C++庫。
EASTL :EA-STL公共部分。
ffead-cpp :企業應用程序開發框架。
Folly:由Facebook開發和使用的開源C++庫。
JUCE :包羅萬象的C++類庫,用於開發跨平台軟體。
libPhenom:用於構建高性能和高度可擴展性系統的事件框架。
LibSourcey :用於實時的視頻流和高性能網路應用程序的C++11 evented IO。
LibU : C語言寫的多平台工具庫。
Loki :C++庫的設計,包括常見的設計模式和習語的實現。
MiLi :只含頭文件的小型C++庫。
openFrameworks :開發C++工具包,用於創意性編碼。
Qt :跨平台的應用程序和用戶界面框架。
Reason :跨平台的框架,使開發者能夠更容易地使用java,.Net和Python,同時也滿足了他們對C++性能和優勢的需求。
ROOT :具備所有功能的一系列面向對象的框架,能夠非常高效地處理和分析大量的數據,為歐洲原子能研究機構所用。
STLport:是STL具有代表性的版本。
STXXL:用於額外的大型數據集的標准模板庫。
Ultimate++ :C++跨平台快速應用程序開發框架。
Windows Template Library:用於開發Windows應用程序和UI組件的C++庫。
Yomm11 :C++11的開放multi-methods。
2. WCF服務編程一書中寫到:契約操作不能使用引用對象參數,只允許使用基本類型或者數據契約
在過程調用中傳遞了一個無效參數。這可能是由於參數超出范圍,或包含無效數據。另外,有可能在不適當的時間對過程進行了調用。要糾正該錯誤驗證傳遞給過程的參數是有效的。驗證在適當的時間調用函數。溢出試圖賦給變數的賦值太大,這是因為:賦值,計算或者數據類型轉換結果很大以至於不能代表此種類型變數值的范圍。屬性賦值超出了屬性所能接受的最大值。整數類型數字的計算結果大於一個整數。要糾正該錯誤將值賦給一個較大取值范圍的變數類型。確保賦值符合屬性范圍。內存不足分配與該計算機有效內存一樣多的內存。這可能是一個動態分配數組增長得太大,或者是對象實例數目過多。要糾正該錯誤使用Erase語句來重新分配動態數組的儲存空間。使用ReDim語句來重新分配儲存空間。關閉任何已經打開、不必需的應用程序,文件或者源文件。下標越界要訪問的數組中元素數目比期望的少。例如試圖從一個定義為10個元素的數組中訪問到11個元素。.要糾正該錯誤確保你的代碼中包含檢察元素是否越界的邊界。重新定義一個更大的數組大小至需要的維數。該數組為定長的或者臨時被鎖定試圖用ReDim函數來改變一個定長數組的元素數目。動態數組或者Variant變數內的數組可以被暫時的鎖定。要糾正該錯誤如果在過程內部定義數組,用ReDim函數將其從靜態變為動態。如果在模塊水平上說明數組,不要指定數組中元素的數目。被零除創建一個試圖將數字被零除的表達式。被零除得到無窮大(不可用)結果。要糾正該錯誤檢查表達式的輸入或大小寫錯誤。類型不匹配試圖比較不相容數據類型的值。例如,比較一個字元串和一個數值。要糾正該錯誤當進行比較時,要確保數據類型相同。用一個的數據類型來計算另一個的值,然後重新比較。字元串空間溢出試圖創建字元串對象時系統內存被用盡。這可能是因為動態分配數組越來越大或對象實例的數目過大。要糾正該錯誤使用Erase語句來重新分配動態數組的儲存空間。使用ReDim語句來重新分配儲存空間。關閉任何已經打開、不必需的應用程序,文件或者源文件無法執行請求的操作當主機使腳本引擎中斷時無法繼續執行腳本。主機未指定明確的返回錯誤代碼。要糾正該錯誤該錯誤的解決與主機有關。堆棧溢出過程嵌套太深。每次代碼從一個過程跳到另一個過程,本地變數的內容被放到堆棧中。堆棧是一個大小隨著要求執行的腳本動態增長和縮小的內存工作區域。要糾正該錯誤檢查沒有嵌套很深的過程。確保遞歸(重入)過程沒有經常的調用自身。確保遞歸過程被正常終止。未定義Sub或Function試圖調用一個不存在的過程。要糾正該錯誤檢查過程的拼寫確保輸入正確。載入DLL錯誤應用程序引用了一個無法找到的DLL,一個DLL可能引用了另一個無法找到的DLL。要糾正該錯誤確保DLL存在。使用全路徑名引用DLL。獲得被引用的DLL並使其對其他DLL有效。內部錯誤發生內部錯誤。要糾正該錯誤除非這是由Raise方法產生,請與微軟產品服務聯系報告出現錯誤消息的情況。未設置對象變數試圖使用無效對象的對象屬性。如果遺漏了Set語句,將在對象引用產生錯誤。要糾正該錯誤為對象變數指定一個引用。For循環未初始化在腳本中執行跳到ForNext循環中間的結果。由於ForNext循環計數必須被初始化所以產生錯誤。下面演示了一個ForNext循環的正確結構。Forcounter=startToend[Stepstep][statements][ExitFor][statements]Next要糾正該錯誤移去跳轉至ForNext循環的語句。確保ForNext循環包含了所有必須的部分。非法使用Null試圖獲得一個為Null的Variant變數的值。你只能獲得包含有效值的Variant變數的值。Null是一個Variant一個用來指示一個數據項不包含任何有效數據的子類型。要糾正該錯誤確保變數包含有效數據。需要對象提供的對象無效(或無法認為是一個對象)。對屬性和方法的引用需要一個顯式的對象限定符。要糾正該錯誤提供一個對象限定符。檢查對象限定符的拼寫。ActiveX部件無法創建對象由於對象類未在系統注冊表中注冊或者是一個或多個相關的動態鏈接庫無效(DLLs),VB5.5運行時無法初始化對象。另外一種可能情況是,由於未找到或是已經損壞,對象所需的DLL不可用。要糾正該錯誤確保所有相關的DLLs有效。例如,數據存取對象(DAO)所需的DLLs在不同的平台下是不同的。你可能不得不返回到安裝程序查找該對象。InternetExplorer可能試圖創建對象,但是在InternetExplorer中沒有正確的安全許可。重置InternetExplorer安全設置並重試。類不支持自動化試圖操作一個並不支持自動化的對象屬性或方法。可以創建並將指針傳遞給不支持自動化的對象,但是不能獲取它的屬性和方法。要糾正該錯誤查創建對象應用程序的文檔中關於該類自動化使用的限制。注意對象可能已經通過使用CreateObject被創建,但可能已經通過主機對象模型被引入。在自動化操作中未找到文件名或類名使用GetObject函數,但是將一個不可識別的類或文件名作為參數。GetObject函數要求包含要獲取的對象的文件的完整的路徑和名稱,或者是在系統中注冊過的類名稱。要糾正該錯誤檢查名稱的拼寫錯誤,然後重試。確保class參數的名稱與在系統中注冊的相匹配。對象不支持該屬性或方法對該自動化對象指定了一個並不存在的屬性或方法。不是所有的對象都支持所有的屬性和方法。要糾正該錯誤檢查屬性和方法以確保沒有打字錯誤。參見對象的文檔獲取的信息。對象不支持此操作試圖引用該對象不支持的一個方法或屬性。不是所有的對象支持所用的操作。要糾正該錯誤檢查屬性和方法以確保沒有打字錯誤。參見對象的文檔獲取的信息。對象不支持當前的區域設置試圖操作一個不支持當前區域設置的對象。區域設置是和給定語言以及國家/地區相對應的一系列信息。本地影響預定義程序項的語言和本地特定設置。以下兩種情況時本地信息很重要:codelocale影響語言項例如關鍵詞,並且定義本地特定設置例如小數和列表分割符,日期格式和字元排列順序。systemlocale影響本地相關的功能執行。例如,當顯示數字或者將字元串轉換為日期時。使用操作系統提供的控制面板工具來設定系統。要糾正該錯誤檢查對象支持的區域設置。未找到命名參數調用一個過程並指定一個特別的參數,但是過程未被定義為接受以為名稱的參數。除非在過程定義中出現,一個命名參數不能在過程調用中使用。要糾正該錯誤檢查參數名稱是否正確拼寫,然後再試著調用過程。參數不可選調用過程但是參數數量錯誤。傳遞給過程的參數的數量必須與過程定義的參數數量相同。要糾正該錯誤檢查函數符號確保提供了所有必須的參數。錯誤的參數個數或無效的參數屬性值調用過程時如果:錯誤的過程名稱,或者,過程中參數數目錯誤,或者,參數類型錯誤。傳遞給過程的參數數目必須與過程定義中的參數數目相符。要糾正該錯誤檢查以確保傳遞給過程的參數列表與過程定義或聲明中的相符。對象不是一個集合試圖對一個不是Collection類型的對象進行只對Collection對象有效的操作。有些屬性、方法和操作僅可應用於Collection對象。Collection對象是包含一組互相關聯的對象的一種對象。一旦集合中發生了改變,一個對象在Collection對象中的位置也會發生改變;因此,Collection對象中的任何一個對象的位置都可能變化。要糾正該錯誤檢查對象或屬性名稱的拼寫。驗證對象是一個Collection對象。查看用來向集合中添加該對象的Add方法,確保語法正確且任何標識符的拼寫都正確。變數使用了VB不支持的自動化類型試圖使用類型庫或者對象庫中不被支持的數據類型,任何一門編程語言都不能使用類型庫或對象庫中的所有變數。要糾正該錯誤只使用VB識別的變數類型。遠程伺服器不存在或者不能訪問用CreateObject函數來建立一個遠程機器的對象,但是調用失敗,這是因為無法訪問遠程伺服器或者沒有包含特定的類。要糾正該錯誤檢驗遠程伺服器的名字是否正確。檢驗遠程伺服器的DCOM可用。使用dcomcnfg驗證安全許可權是否允許建立對象。無效圖片試圖載入一個無法識別格式的圖像。有效格式包括點陣圖(*.bmp),圖標(*.ico),以及Windows元文件(*.wmf)。要糾正該錯誤確保要載入的圖像文件的格式是有效的。變數未定義在腳本開始處用OptionExplicit語句,後來又使用一個未被說明的變數名稱。當使用OptionExplicit語句時,必須用Dim,Private,Public或者ReDim語句顯式地說明所有的變數。要糾正該錯誤使用OptionExplicit語句時,確保用Dim,Private,Public,OrReDim語句定義了所有的變數。腳本對象不安全試圖使用未被標識為腳本安全的對象。對象創建是否安全由主機決定。總的來說,允許不信任腳本進行有害操作(例如操作硬碟)的對象是不安全的。例如,使用作為客戶端的MicrosoftInternetExplorer運行FileingObject是不安全的,但是可以在帶有WindowsHost的本地機器使用該對象。要糾正該錯誤確保在使用一個安全的對象。與對象開發者聯系看是否為安全版本。閱讀對象文檔發現該對象是否安全。對象不能安全初始化試圖使用未被標識為初始化安全的對象。對象創建是否安全由主機決定。總的來說,允許不信任腳本進行有害操作(例如操作硬碟)的對象是不安全的。例如,使用作為客戶端的MicrosoftInternetExplorer運行FileingObject是不安全的,但是可以在帶有WindowsHost的本地機器使用該對象。要糾正該錯誤確保在使用一個安全的對象。與對象開發者聯系看是否為安全版本。閱讀對象文檔發現該對象是否安全。對象不能安全創建試圖使用一個未被標識為安全創建的對象。對象創建是否安全由主機決定。總的來說,允許不信任腳本進行有害操作(例如操作硬碟)的對象是不安全的。例如,使用作為客戶端的MicrosoftInternetExplorer運行FileingObject是不安全的,但是可以在帶有WindowsHost的本地機器使用該對象。要糾正該錯誤確保在使用一個安全的對象。與對象開發者聯系看是否為安全版本。閱讀對象文檔發現該對象是否安全。無效或不合格的引用試圖對不止一個對象使用With語句。With語句只能被非空對象使用。下面演示了一個With塊的正確結構。WithobjectstatementsEndWith要糾正該錯誤為With語句指定一個對象。類未定義引用未定義(通過New或Set語句)的類。要糾正該錯誤確保在引用類之前已經定義。發生異常腳本調用COM對象,然後產生異常。要糾正該錯誤除非該調用由Raise方法產生,請與產生錯誤的CM對象開發人員聯系。請與微軟產品服務聯系報告出現錯誤消息的情況。正則表達式中的語法錯誤搜索字元串的結構違背了VB正則表達式中的一個或多個語法規則。要糾正該錯誤保證常規的搜索字元串的表達式符合Perlde的表達語法。錯誤的數量詞當構造正則表達式的搜索模式時,沒有正確的說明匹配的字元串。要糾正該錯誤確保搜索模式是正確構造的。在正則表達式中需要']'試圖為正則表達式匹配創建一個字元類,但未包含右括弧。將單獨的字元組合放到方括弧里可以將其裝配到字元類中。例如,/[abc]/匹配字母「a」,「b」,或「c」中任意一個。要糾正該錯誤在正則表達式中添加右括弧。在正則表達式中需要')'試圖創建常規的嵌套表達式,但未包含「)」。在正則表達式中括弧有幾個目的。首先,它將分離的項組成為單個子表達式,所以項目可以通過*,+,?等等來當作一個單元來處理。要糾正該錯誤在常規的嵌套表達式中添加右(閉)括弧「)」。字元集越界試圖使用無效字元創建正則表達式。正則表達式是由字母數字和元字元組成的。要糾正該錯誤僅僅使用有效正則表達式字元來組成正則表達式。求採納為滿意回答。
3. c語言程序題 一個百萬富翁遇到一個陌生人,陌生人找他談一個換錢計劃。該計劃如下:陌生人每天給富翁10萬元
這不是數學問題嗎?
收取 10萬*30 = 300 萬
付出 (2的30次冪-1)分
第二個可以用遞歸
int f(int n)
{
if(1==n)
return 1;
else
return 2*(f(n-1)+1);
}
f(10)就是答案
4. 用c語言編寫這道題的程序
#include<iostream>
int main()
{
unsigned long sum1, sum2;
int b=2;
for(int i=0;i<30;i++)
{
sum1+=b;
b*=2;
}
sum1/=100;
sum2=100000*30;
printf("富翁共收到%ld。\n富翁共給出%ld。\n",sum2,sum1);
return 0;
}
5. c語言中耦合度、內聚度、復雜度、數據傳輸特性相關含義
盡可能的獨立。
處理一個模塊時,不應該依賴另一個模塊的內部工作。
內聚原則是指,在一個給定的模塊內部,所有的代碼應該只完成一個單個的目標。
IT界有一句很著名的口號:強內聚、松耦合。
即使是最初級的程序員,在常常的被教導中,他也了解了這句口號的含義:我們的程序要模塊化,模塊要完成明確的一組關聯的服務功能,要求它的各部分是相關的、有機組合起來是完整體(外部程序來看黑盒子),模塊的內部各成分之間相關聯程度要盡可能高(強內聚);而模塊與模塊之間又要求是可分拆的、少依賴的(松耦合)。
人們易於實現強內聚的模塊,例如:一個函數實現一個獨立的功能,這就是強內聚。
人們不易實現松耦合,因為,孤獨的模塊毫無意義,只有模塊間的相互協調地工作,才能實現系統的目的。而對於模塊間的相互關系的設計,沒有一定的經驗是難以把握。耦合的強度依賴於:(1)一個模塊對另一個模塊的調用;(2)一個模塊向另一個模塊傳遞的數據量;(3)一個模塊施加到另一個模塊的控制的多少;(4)模塊之間介面的復雜程度。等等。
當然,「強內聚、松耦合」也是有矛盾的,如:內聚性越強,則要求的函數越多(每個函數只作一件「事」),這樣,將它們組合成「大」的功能,也就越復雜,就不可能達到松耦合。因此,應在二者之間作出平衡與折衷的選擇,這也體現程序員的水平。從系統論的角度來看,系統是有層次的,即系統可以分為子系統,模塊可分為子模塊,「強內聚、松耦合」的「度」的把握,應結合系統的次層性來考慮,即通常應在層次性上作出折衷,如:模塊內子程序(下一個層次上)應共享數據(有一定的耦合度),而減少全局變數能降低子程序性間的耦合性。
面向對象的語言進一步強化了「強內聚、松耦合」,類的封裝性既強調了相關內容(數據及其操作)的內聚,又強調了類的獨立性和私密性。而類的繼承性以及友元等,就是在松耦合的原則下規范了類之間的關聯關系。類與類之間通常通過介面的契約實現服務提供者/服務請求者模式,這就是典型的松耦合。
「強內聚、松耦合」對於程序編寫分工、程序的可維護性以及測試都有重要的關系,如:從設計角度來看,在「強內聚、松耦合」的指導下進行的設計得到的程序模塊,符合項目管理的WBS(工作分解結構)的要求,其相對獨立的模塊可以分配到具體的程序員進行開發,另外,程序編碼外包也必須建立在這種原則的設計之下;從程序生命期角度來看,它有利於提高程序質量,特別是方便於程序的日後維護,即程序模塊的相對獨立性是可維護性的保證;再從測試角度來看,符合「強內聚、松耦合」的程序,易於對局部(模塊)進行黑盒測試,也易於編寫測試用的「樁」和「驅動」。
「強內聚、松耦合」也是對組織結構的要求,項目組分為幾個小組(正式的或非正式的),各小組的工作應是高度相關的,各小組之間的工作應盡量是較少相關或有明確的介面,從而減少溝通成本。其實,「強內聚、松耦合」是系統中應遵守的普遍原則,我們在許多領域都可以找到它的應用。
「強內聚、松耦合」是我們不得不念的「三字經」,我們一定要念好它。
6. 急尋以下題目的程序!!我們要做C語言課程設計,不會寫,請相關高手幫個忙!!不勝感激!!
我發給你 請查收!! 還有 別 搭理樓下的,全是 勢利小人之徒,不就是 c語言 編程嗎!
今天 我就是看不慣樓下 回答者的態度, 今天 慷慨解囊,寫給你,之前 也寫過 類似的
7. C語言的設計模式有哪些
CS結構安裝後使用、有窗體界面 效率高;維護升級繁瑣、需要安裝。比如QQBS結構無需安裝、瀏覽器訪問 ;客戶無需安裝和升級,依賴網路。比如web QQApache C++ Standard Library:是一系列演算法,容器,迭代器和其他基本組件的集合ASL :Adobe源代碼庫提供了同行的評審和可移植的C++源代碼庫。Boost :大量通用C++庫的集合。BDE :來自於彭博資訊實驗室的開發環境。Cinder:提供專業品質創造性編碼的開源開發社區。Cxxomfort:輕量級的,只包含頭文件的庫,將C++ 11的一些新特性移植到C++03中。Dlib:使用契約式編程和現代C++科技設計的通用的跨平台的C++庫。EASTL :EA-STL公共部分。ffead-cpp :企業應用程序開發框架。Folly:由Facebook開發和使用的開源C++庫。JUCE :包羅萬象的C++類庫,用於開發跨平台軟體。libPhenom:用於構建高性能和高度可擴展性系統的事件框架。LibSourcey :用於實時的視頻流和高性能網路應用程序的C++11 evented IO。LibU : C語言寫的多平台工具庫。Loki :C++庫的設計,包括常見的設計模式和習語的實現。MiLi :只含頭文件的小型C++庫。openFrameworks :開發C++工具包,用於創意性編碼。Qt :跨平台的應用程序和用戶界面框架。Reason :跨平台的框架,使開發者能夠更容易地使用Java,.Net和Python,同時也滿足了他們對C++性能和優勢的需求。ROOT :具備所有功能的一系列面向對象的框架,能夠非常高效地處理和分析大量的數據,為歐洲原子能研究機構所用。STLport:是STL具有代表性的版本。STXXL:用於額外的大型數據集的標准模板庫。Ultimate++ :C++跨平台快速應用程序開發框架。Windows Template Library:用於開發Windows應用程序和UI組件的C++庫。Yomm11 :C++11的開放multi-methods。單學C語言,沒點用,必須要再進修!編程java,c++最常見了,等到這些學精了,才有資格談編程。這樣就可以入企業了,先當個小程序員,再升。若提前有本事能考個編程等級資格證,就更好了。在具體點,所有網路軟體的開發都離不開c語言的基礎,但不能說學c語言能幹什麼什麼,因為面向對象不同,所進修也不同。
8. 一些簡單C語言編程問題
第一個
#include<stdio.h>
main()
{
int days,day,t=1;
long msr=1,fw;//msr=陌生人,fw=富翁
scanf("%d",&days);
if(days<=30&&days>=0)
if(days==1)
fw=100000;
msr=1;
for(day=2;day<=days;day++)
{
fw=100000*day;
t=t*2;
msr=msr+t;
}
printf("%d\n%d\n",fw,msr);
}
這里的是一塊錢,你把它按比例縮小就好了!
第二個定義一個結構體
struct student
{
char name[20];
float math;
……
float ave;
}
main()
{
這里對平均分判斷,然後輸出整個結構
}.
第三題只要4個for循環,里邊一個 if判斷就好了,輸出所有可能的值!
9. C語言(急)
程序裡面至少有兩處錯誤:
1.scanf("%f",&m);中,"%f"應為"%d"。
2.a=pow(2,i-1)/10; 中,10-》100.因為1分錢等於0.01元。
除此之外,程序運行ok。